c104


Namec104 JSON
Version 2.0.2 PyPI version JSON
download
home_pagehttps://github.com/fraunhofer-fit-dien/iec104-python
SummaryA Python module to simulate SCADA and RTU communication over protocol 60870-5-104 to research ICT behavior in power grids.
upload_time2024-11-04 12:02:02
maintainerNone
docs_urlNone
authorMartin Unkel, Fraunhofer FIT
requires_python>=3.7
licenseGPLv3
keywords python bindings scada rtu remote-terminal-unit mtu master-terminal-unit energy-management 60870-5-104 iec60870-5-104 iec60870-5 60870 lib60870 lib60870-c
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # iec104-python

__Table of contents__
1. [Introduction](#introduction)
2. [Licensing](#licensing)
3. [System requirements](#system-requirements)
4. [Installation](#installation)
5. [Documentation](#documentation)
6. [Contribution](#contribution)


---

## Introduction

This software provides an object-oriented high-level python module to simulate scada systems and remote terminal units communicating via 60870-5-104 protocol.

The python module c104 combines the use of lib60870-C with state structures and python callback handlers.

**Example remote terminal unit**

```python
import c104

# server and station preparation
server = c104.Server(ip="0.0.0.0", port=2404)

# add local station and points
station = server.add_station(common_address=47)
measurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1, report_ms=5000)
command_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)

server.start()
```

**Example scada unit**

```python
import c104

client = c104.Client()

# add RTU with station and points
connection = client.add_connection(ip="127.0.0.1", port=2404, init=c104.Init.INTERROGATION)
station = connection.add_station(common_address=47)
measurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1)
command_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)

client.start()
```

See [examples](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/tree/main/examples) folder for more detailed examples.

## Licensing

This software is licensed under the GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html).

See [LICENSE](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/blob/main/LICENSE) file for the complete license text.

### Dependencies

#### lib60870-C

This project is build on top of lib60870-C v2 from MZ Automation GmbH, which is licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html).

The library is used for 60870-5-104 protocol based communication.

[» Source code](https://github.com/mz-automation/lib60870)

[» Documentation](https://support.mz-automation.de/doc/lib60870/latest/index.html)

#### mbedtls

This project is build on top of mbedtls from the Mbed TLS Contributors, which is licensed under [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0).

The library is used to add transport layer security to the 60870-5-104 protocol based communication.

[» Source code](https://github.com/Mbed-TLS/mbedtls)

[» Documentation](https://www.trustedfirmware.org/projects/mbed-tls/)

#### pybind11

This project is build on top of pybind11 from Wenzel Jakob, which is licensed under a [BSD-style license](https://github.com/pybind/pybind11/blob/master/LICENSE).

The library is used to wrap c++ code into a python module and allow seamless operability between python and c++.

[» Source code](https://github.com/pybind/pybind11)

[» Documentation](https://pybind11.readthedocs.io/en/stable/)

#### catch2

This project is build on top of catch2 from the Catch2 Authors, which is licensed under [BSL-1.0](https://www.boost.org/users/license.html).

The library is used as testing framework for test-automation.

[» Source code](https://github.com/catchorg/Catch2)

[» Documentation](https://github.com/catchorg/Catch2/blob/devel/docs/Readme.md)


## System requirements

### Operating systems

* Manylinux (x86_64): YES
* Manylinux (aarch64): YES
* Raspbian (armv7l): YES
* Windows (x64): YES

### Python versions
* python >= 3.7, < 3.13

## Installation
Please adjust the version number to the latest version or use a specific version according to your needs.

### Install from pypi.org
```bash
python3 -m pip install c104
```

### Install from git with tag
```bash
python3 -m pip install c104@git+https://github.com/fraunhofer-fit-dien/iec104-python.git
```

You need the build requirements, listed under "How to build".

## Documentation

Read more about the **Classes** and their **Properties** in our [read the docs documentation](https://iec104-python.readthedocs.io/latest/index.html).

## Contribution

### How to contribute

1. Add feature requests and report bugs using GitHub's issues

1. Create pull requests

### How to build (linux)

1. Install dependencies
   ```bash
   sudo apt-get install build-essential python3-pip python3-dev python3-dbg
   python3 -m pip install --upgrade pip
   ```

1. Clone repository
   ```bash
   git clone --depth=1 --branch=main https://github.com/Fraunhofer-FIT-DIEN/iec104-python.git
   cd iec104-python
   git submodule update --init
   ```

1. Build wheel
   ```bash
   python3 -m pip wheel .
   ```

### How to build for multiple python versions (linux with docker)

1. Build wheels via docker (linux)
   ```bash
   /bin/bash ./bin/linux-build.sh
   ```

### How to analyze performance (linux)

1. Install dependencies
   ```bash
   sudo apt-get install google-perftools valgrind
   sudo pip3 install yep
   ```

1. Copy pprof binary
   ```bash
   cd /usr/bin
   sudo wget https://raw.githubusercontent.com/gperftools/gperftools/master/src/pprof
   sudo chmod +x pprof
   ```

1. Execute profiler script
   ```bash
   ./bin/profiler.sh
   ```

### How to build (windows)

1. Install dependencies
    - [Python 3](https://www.python.org/downloads/windows/)
    - [Buildtools für Visual Studio 2022](https://visualstudio.microsoft.com/de/downloads/) (Scroll down &raquo; All Downloads &raquo; Tools for Visual Studio 2022)

1. Option 1: Build as wheel
   ```bash
   python3 -m pip wheel .
   ```

1. Option 2: Build pyd via Powershell
   ```powershell
   cmake -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 17 2022" -B cmake-build-release -A x64 -DPython_EXECUTABLE=C:\PATH_TO_PYTHON\python.exe
   &"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe" /m /p:Platform=x64 /p:Configuration=Release c104.sln /t:Rebuild
   ```
   Set a valid PATH_TO_PYTHON, if you have multiple python versions. \
   Set a valid path to MSBuild.exe unless msbuild is already in path.

### Generate documentation

1. Build c104 module

1. Install dependencies
   - `python3 -m pip install -r ./docs/requirements.txt`
   - doxygen
   - graphviz

1. Build doxygen xml
   ```bash
   doxygen Doxyfile
   ```

1. Build sphinx html
   ```bash
   python3 bin/build-docs.py
   ```

## Change log

Track all changes in our [CHANGELOG](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/blob/main/CHANGELOG.md) documentation.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/fraunhofer-fit-dien/iec104-python",
    "name": "c104",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "Python bindings, scada, rtu, remote-terminal-unit, mtu, master-terminal-unit, energy-management, 60870-5-104, iec60870-5-104, iec60870-5, 60870, lib60870, lib60870-C",
    "author": "Martin Unkel, Fraunhofer FIT",
    "author_email": "martin.unkel@fit.fraunhofer.de",
    "download_url": "https://files.pythonhosted.org/packages/70/ce/6a6a35d8aa95ab9e78e8fa1948da1ae55827e7605585b24d0e380429b31b/c104-2.0.2.tar.gz",
    "platform": null,
    "description": "# iec104-python\n\n__Table of contents__\n1. [Introduction](#introduction)\n2. [Licensing](#licensing)\n3. [System requirements](#system-requirements)\n4. [Installation](#installation)\n5. [Documentation](#documentation)\n6. [Contribution](#contribution)\n\n\n---\n\n## Introduction\n\nThis software provides an object-oriented high-level python module to simulate scada systems and remote terminal units communicating via 60870-5-104 protocol.\n\nThe python module c104 combines the use of lib60870-C with state structures and python callback handlers.\n\n**Example remote terminal unit**\n\n```python\nimport c104\n\n# server and station preparation\nserver = c104.Server(ip=\"0.0.0.0\", port=2404)\n\n# add local station and points\nstation = server.add_station(common_address=47)\nmeasurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1, report_ms=5000)\ncommand_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)\n\nserver.start()\n```\n\n**Example scada unit**\n\n```python\nimport c104\n\nclient = c104.Client()\n\n# add RTU with station and points\nconnection = client.add_connection(ip=\"127.0.0.1\", port=2404, init=c104.Init.INTERROGATION)\nstation = connection.add_station(common_address=47)\nmeasurement_point = station.add_point(io_address=11, type=c104.Type.M_ME_NC_1)\ncommand_point = station.add_point(io_address=12, type=c104.Type.C_RC_TA_1)\n\nclient.start()\n```\n\nSee [examples](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/tree/main/examples) folder for more detailed examples.\n\n## Licensing\n\nThis software is licensed under the GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html).\n\nSee [LICENSE](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/blob/main/LICENSE) file for the complete license text.\n\n### Dependencies\n\n#### lib60870-C\n\nThis project is build on top of lib60870-C v2 from MZ Automation GmbH, which is licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html).\n\nThe library is used for 60870-5-104 protocol based communication.\n\n[&raquo; Source code](https://github.com/mz-automation/lib60870)\n\n[&raquo; Documentation](https://support.mz-automation.de/doc/lib60870/latest/index.html)\n\n#### mbedtls\n\nThis project is build on top of mbedtls from the Mbed TLS Contributors, which is licensed under [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\nThe library is used to add transport layer security to the 60870-5-104 protocol based communication.\n\n[&raquo; Source code](https://github.com/Mbed-TLS/mbedtls)\n\n[&raquo; Documentation](https://www.trustedfirmware.org/projects/mbed-tls/)\n\n#### pybind11\n\nThis project is build on top of pybind11 from Wenzel Jakob, which is licensed under a [BSD-style license](https://github.com/pybind/pybind11/blob/master/LICENSE).\n\nThe library is used to wrap c++ code into a python module and allow seamless operability between python and c++.\n\n[&raquo; Source code](https://github.com/pybind/pybind11)\n\n[&raquo; Documentation](https://pybind11.readthedocs.io/en/stable/)\n\n#### catch2\n\nThis project is build on top of catch2 from the Catch2 Authors, which is licensed under [BSL-1.0](https://www.boost.org/users/license.html).\n\nThe library is used as testing framework for test-automation.\n\n[&raquo; Source code](https://github.com/catchorg/Catch2)\n\n[&raquo; Documentation](https://github.com/catchorg/Catch2/blob/devel/docs/Readme.md)\n\n\n## System requirements\n\n### Operating systems\n\n* Manylinux (x86_64): YES\n* Manylinux (aarch64): YES\n* Raspbian (armv7l): YES\n* Windows (x64): YES\n\n### Python versions\n* python >= 3.7, < 3.13\n\n## Installation\nPlease adjust the version number to the latest version or use a specific version according to your needs.\n\n### Install from pypi.org\n```bash\npython3 -m pip install c104\n```\n\n### Install from git with tag\n```bash\npython3 -m pip install c104@git+https://github.com/fraunhofer-fit-dien/iec104-python.git\n```\n\nYou need the build requirements, listed under \"How to build\".\n\n## Documentation\n\nRead more about the **Classes** and their **Properties** in our [read the docs documentation](https://iec104-python.readthedocs.io/latest/index.html).\n\n## Contribution\n\n### How to contribute\n\n1. Add feature requests and report bugs using GitHub's issues\n\n1. Create pull requests\n\n### How to build (linux)\n\n1. Install dependencies\n   ```bash\n   sudo apt-get install build-essential python3-pip python3-dev python3-dbg\n   python3 -m pip install --upgrade pip\n   ```\n\n1. Clone repository\n   ```bash\n   git clone --depth=1 --branch=main https://github.com/Fraunhofer-FIT-DIEN/iec104-python.git\n   cd iec104-python\n   git submodule update --init\n   ```\n\n1. Build wheel\n   ```bash\n   python3 -m pip wheel .\n   ```\n\n### How to build for multiple python versions (linux with docker)\n\n1. Build wheels via docker (linux)\n   ```bash\n   /bin/bash ./bin/linux-build.sh\n   ```\n\n### How to analyze performance (linux)\n\n1. Install dependencies\n   ```bash\n   sudo apt-get install google-perftools valgrind\n   sudo pip3 install yep\n   ```\n\n1. Copy pprof binary\n   ```bash\n   cd /usr/bin\n   sudo wget https://raw.githubusercontent.com/gperftools/gperftools/master/src/pprof\n   sudo chmod +x pprof\n   ```\n\n1. Execute profiler script\n   ```bash\n   ./bin/profiler.sh\n   ```\n\n### How to build (windows)\n\n1. Install dependencies\n    - [Python 3](https://www.python.org/downloads/windows/)\n    - [Buildtools f\u00fcr Visual Studio 2022](https://visualstudio.microsoft.com/de/downloads/) (Scroll down &raquo; All Downloads &raquo; Tools for Visual Studio 2022)\n\n1. Option 1: Build as wheel\n   ```bash\n   python3 -m pip wheel .\n   ```\n\n1. Option 2: Build pyd via Powershell\n   ```powershell\n   cmake -DCMAKE_BUILD_TYPE=Release -G \"Visual Studio 17 2022\" -B cmake-build-release -A x64 -DPython_EXECUTABLE=C:\\PATH_TO_PYTHON\\python.exe\n   &\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\MSBuild\\Current\\Bin\\MSBuild.exe\" /m /p:Platform=x64 /p:Configuration=Release c104.sln /t:Rebuild\n   ```\n   Set a valid PATH_TO_PYTHON, if you have multiple python versions. \\\n   Set a valid path to MSBuild.exe unless msbuild is already in path.\n\n### Generate documentation\n\n1. Build c104 module\n\n1. Install dependencies\n   - `python3 -m pip install -r ./docs/requirements.txt`\n   - doxygen\n   - graphviz\n\n1. Build doxygen xml\n   ```bash\n   doxygen Doxyfile\n   ```\n\n1. Build sphinx html\n   ```bash\n   python3 bin/build-docs.py\n   ```\n\n## Change log\n\nTrack all changes in our [CHANGELOG](https://github.com/Fraunhofer-FIT-DIEN/iec104-python/blob/main/CHANGELOG.md) documentation.\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "A Python module to simulate SCADA and RTU communication over protocol 60870-5-104 to research ICT behavior in power grids.",
    "version": "2.0.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/Fraunhofer-FIT-DIEN/iec104-python/issues",
        "Changelog": "https://iec104-python.readthedocs.io/latest/changelog.html",
        "Documentation": "https://iec104-python.readthedocs.io/latest/python/index.html",
        "Homepage": "https://github.com/fraunhofer-fit-dien/iec104-python",
        "Source Code": "https://github.com/Fraunhofer-FIT-DIEN/iec104-python"
    },
    "split_keywords": [
        "python bindings",
        " scada",
        " rtu",
        " remote-terminal-unit",
        " mtu",
        " master-terminal-unit",
        " energy-management",
        " 60870-5-104",
        " iec60870-5-104",
        " iec60870-5",
        " 60870",
        " lib60870",
        " lib60870-c"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d67789872fc493b5e8e3ef0dd659f9a85b37cf502b859dd1622eb2c9b8f4c76a",
                "md5": "8899065f5596ff9aeb4580dfdf221632",
                "sha256": "61767b3ff2534029f45d333cf904add14ac825ba8ad24a4e97001bd45881335c"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8899065f5596ff9aeb4580dfdf221632",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 550430,
            "upload_time": "2024-11-04T12:01:42",
            "upload_time_iso_8601": "2024-11-04T12:01:42.804434Z",
            "url": "https://files.pythonhosted.org/packages/d6/77/89872fc493b5e8e3ef0dd659f9a85b37cf502b859dd1622eb2c9b8f4c76a/c104-2.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "20d70834769f60002f7cc8d146747bbc25079446dc490fa7def37fce3410c653",
                "md5": "f8e2380a75027080da3c10ac3f11ae7b",
                "sha256": "9a3c8aa395dce606c0c59b86fe557e2255746e1c634d6d30c1024f2814782951"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f8e2380a75027080da3c10ac3f11ae7b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 483189,
            "upload_time": "2024-11-04T12:01:45",
            "upload_time_iso_8601": "2024-11-04T12:01:45.149844Z",
            "url": "https://files.pythonhosted.org/packages/20/d7/0834769f60002f7cc8d146747bbc25079446dc490fa7def37fce3410c653/c104-2.0.2-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e6a8bfa418e52005d1ec602abf65a0bf9b420c31a461e4cefec26a85d22e646f",
                "md5": "01822a342e0f0b8154675f26f90c2003",
                "sha256": "6924fd256b9d4fe7ba30f91200c41cf7d78937ad94cb313a317421e1c45313cf"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "01822a342e0f0b8154675f26f90c2003",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 551017,
            "upload_time": "2024-11-04T12:01:46",
            "upload_time_iso_8601": "2024-11-04T12:01:46.342735Z",
            "url": "https://files.pythonhosted.org/packages/e6/a8/bfa418e52005d1ec602abf65a0bf9b420c31a461e4cefec26a85d22e646f/c104-2.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e23b831303fde69c3b7b0a74dadc23943d3709e7914b9776436dbe859065c34",
                "md5": "5e07f19c459557231824775626837932",
                "sha256": "c5c4ece99d981040eaf4b45aed464a03ecf0bbf4468e30136897877da21d8c40"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5e07f19c459557231824775626837932",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 483899,
            "upload_time": "2024-11-04T12:01:47",
            "upload_time_iso_8601": "2024-11-04T12:01:47.924283Z",
            "url": "https://files.pythonhosted.org/packages/5e/23/b831303fde69c3b7b0a74dadc23943d3709e7914b9776436dbe859065c34/c104-2.0.2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "10f8ea32f942fe688160244464b4d9d4b919c1a45e27166fc3c3ab3ffec3c4d0",
                "md5": "ef1fc244fc2c1bf65b642fa3885f7b0d",
                "sha256": "6ff571cbf0858839c2a8e9b946c01d851c817f339c8a50a558b7a9246bc60017"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ef1fc244fc2c1bf65b642fa3885f7b0d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 550981,
            "upload_time": "2024-11-04T12:01:49",
            "upload_time_iso_8601": "2024-11-04T12:01:49.774662Z",
            "url": "https://files.pythonhosted.org/packages/10/f8/ea32f942fe688160244464b4d9d4b919c1a45e27166fc3c3ab3ffec3c4d0/c104-2.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9da615c59b0bb3333fb129d8bef4849f35a4401ace08a37079e46121bb50947",
                "md5": "b46bc0f0ed30af97f5eb563527f63863",
                "sha256": "2699c69d8ee40f7b825509b88b0ef5a7f8dad9bfa4bd4abec6e0abeb7a6b1fd5"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b46bc0f0ed30af97f5eb563527f63863",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 485122,
            "upload_time": "2024-11-04T12:01:51",
            "upload_time_iso_8601": "2024-11-04T12:01:51.583531Z",
            "url": "https://files.pythonhosted.org/packages/b9/da/615c59b0bb3333fb129d8bef4849f35a4401ace08a37079e46121bb50947/c104-2.0.2-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "86f1f231d0f8f7e796d23e04403b0ac291e648b52a402aaa03513c5e8723a63e",
                "md5": "05338b8dd264018d85ddfd2133bcdceb",
                "sha256": "a01cc3550b58f36ff8ebe52dd9b3dd49c09e24e60594cd43432ae28d0939a263"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "05338b8dd264018d85ddfd2133bcdceb",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 583828,
            "upload_time": "2024-11-04T12:01:53",
            "upload_time_iso_8601": "2024-11-04T12:01:53.011801Z",
            "url": "https://files.pythonhosted.org/packages/86/f1/f231d0f8f7e796d23e04403b0ac291e648b52a402aaa03513c5e8723a63e/c104-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7bd89570a6d252d6b8ea33d342b3cc828e5fef6a92fe7dde42d85fffb26d575",
                "md5": "26df35d22abde0aa1a09142b3980bb66",
                "sha256": "6b6f61982715b3b42ab2d2c79c7f9c08835c0a482693f8aded1837e7cadc5675"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "26df35d22abde0aa1a09142b3980bb66",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 480222,
            "upload_time": "2024-11-04T12:01:54",
            "upload_time_iso_8601": "2024-11-04T12:01:54.762128Z",
            "url": "https://files.pythonhosted.org/packages/c7/bd/89570a6d252d6b8ea33d342b3cc828e5fef6a92fe7dde42d85fffb26d575/c104-2.0.2-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3584a12af22d04bb563c1e53c2d23dc46d575a9391318327b0c1d8d4ceffe70f",
                "md5": "3749633494825a6032d1c685a09bb33a",
                "sha256": "6daf43314373ff8d14f41e89d874d26f7a0967ced5669150842751b35455ec96"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3749633494825a6032d1c685a09bb33a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 589410,
            "upload_time": "2024-11-04T12:01:56",
            "upload_time_iso_8601": "2024-11-04T12:01:56.487452Z",
            "url": "https://files.pythonhosted.org/packages/35/84/a12af22d04bb563c1e53c2d23dc46d575a9391318327b0c1d8d4ceffe70f/c104-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a819cd2e70395edcaed6e55556200d3069c700384ec3dbedcad3929823a2423",
                "md5": "756f36f021a679ebe91b47132cdb5916",
                "sha256": "dbd2b9c266af005fa59dc03afb5a5cc4db85d5f9c72459fd1ad0c012d55f91fe"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "756f36f021a679ebe91b47132cdb5916",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 483137,
            "upload_time": "2024-11-04T12:01:58",
            "upload_time_iso_8601": "2024-11-04T12:01:58.071193Z",
            "url": "https://files.pythonhosted.org/packages/7a/81/9cd2e70395edcaed6e55556200d3069c700384ec3dbedcad3929823a2423/c104-2.0.2-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "272d679a28d4123a0c877663c5f36f4b6eed049c1577c1076e417c728aa074b6",
                "md5": "e44c9c0f76b5c73013e42c290436d3ac",
                "sha256": "c13cc10dc0f481d73894f8960d867e10fb67b49f2682c19e164f240835402c68"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e44c9c0f76b5c73013e42c290436d3ac",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 550621,
            "upload_time": "2024-11-04T12:01:59",
            "upload_time_iso_8601": "2024-11-04T12:01:59.735734Z",
            "url": "https://files.pythonhosted.org/packages/27/2d/679a28d4123a0c877663c5f36f4b6eed049c1577c1076e417c728aa074b6/c104-2.0.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "362131c38a4b2890a3880c2b1b08180a086757b95a3bd2e52d66ba35a0944f3b",
                "md5": "a0c5e8c2a073ba9135827026f56b7c27",
                "sha256": "ae6e6a027092cc71572b476bc5cc6c29cb9931e05259d92bc7752ee319386581"
            },
            "downloads": -1,
            "filename": "c104-2.0.2-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a0c5e8c2a073ba9135827026f56b7c27",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 483402,
            "upload_time": "2024-11-04T12:02:01",
            "upload_time_iso_8601": "2024-11-04T12:02:01.627432Z",
            "url": "https://files.pythonhosted.org/packages/36/21/31c38a4b2890a3880c2b1b08180a086757b95a3bd2e52d66ba35a0944f3b/c104-2.0.2-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "70ce6a6a35d8aa95ab9e78e8fa1948da1ae55827e7605585b24d0e380429b31b",
                "md5": "c043a4033b0b347bc3191446cf4a7991",
                "sha256": "a31c7ed85e82aa026a620b08ea1ebf36ee740d5bda74fe42117d7b044f5ead07"
            },
            "downloads": -1,
            "filename": "c104-2.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c043a4033b0b347bc3191446cf4a7991",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 1517549,
            "upload_time": "2024-11-04T12:02:02",
            "upload_time_iso_8601": "2024-11-04T12:02:02.995883Z",
            "url": "https://files.pythonhosted.org/packages/70/ce/6a6a35d8aa95ab9e78e8fa1948da1ae55827e7605585b24d0e380429b31b/c104-2.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-04 12:02:02",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fraunhofer-fit-dien",
    "github_project": "iec104-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "c104"
}
        
Elapsed time: 0.36651s