Skip to main content

A Python module to simulate SCADA and RTU communication over protocol 60870-5-104 to research ICT behavior in power grids.

Project description

iec104-python

Table of contents

  1. Introduction
  2. Licensing
  3. System requirements
  4. Installation
  5. Documentation
  6. 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

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

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 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 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.

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

» Source code

» Documentation

mbedtls

This project is build on top of mbedtls from the Mbed TLS Contributors, which is licensed under Apache-2.0.

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

» Source code

» Documentation

pybind11

This project is build on top of pybind11 from Wenzel Jakob, which is licensed under a BSD-style license.

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

» Source code

» Documentation

catch2

This project is build on top of catch2 from the Catch2 Authors, which is licensed under BSL-1.0.

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

» Source code

» Documentation

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

python3 -m pip install c104

Install from git with tag

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.

Contribution

How to contribute

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

  2. Create pull requests

How to build (linux)

  1. Install dependencies

    sudo apt-get install build-essential python3-pip python3-dev python3-dbg
    python3 -m pip install --upgrade pip
    
  2. Clone repository

    git clone --depth=1 --branch=main https://github.com/Fraunhofer-FIT-DIEN/iec104-python.git
    cd iec104-python
    git submodule update --init
    
  3. Build wheel

    python3 -m pip wheel .
    

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

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

How to analyze performance (linux)

  1. Install dependencies

    sudo apt-get install google-perftools valgrind
    sudo pip3 install yep
    
  2. Copy pprof binary

    cd /usr/bin
    sudo wget https://raw.githubusercontent.com/gperftools/gperftools/master/src/pprof
    sudo chmod +x pprof
    
  3. Execute profiler script

    ./bin/profiler.sh
    

How to build (windows)

  1. Install dependencies

  2. Option 1: Build as wheel

    python3 -m pip wheel .
    
  3. Option 2: Build pyd via 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

  2. Install dependencies

    • python3 -m pip install -r ./docs/requirements.txt
    • doxygen
    • graphviz
  3. Build doxygen xml

    doxygen Doxyfile
    
  4. Build sphinx html

    python3 bin/build-docs.py
    

Change log

Track all changes in our CHANGELOG documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

c104-2.2.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

c104-2.2.1-cp313-cp313t-win_amd64.whl (822.0 kB view details)

Uploaded CPython 3.13tWindows x86-64

c104-2.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (957.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (931.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

c104-2.2.1-cp313-cp313-win_amd64.whl (788.5 kB view details)

Uploaded CPython 3.13Windows x86-64

c104-2.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (954.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (930.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp312-cp312-win_amd64.whl (788.7 kB view details)

Uploaded CPython 3.12Windows x86-64

c104-2.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (954.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (930.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp311-cp311-win_amd64.whl (788.1 kB view details)

Uploaded CPython 3.11Windows x86-64

c104-2.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (954.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (931.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp310-cp310-win_amd64.whl (787.2 kB view details)

Uploaded CPython 3.10Windows x86-64

c104-2.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (953.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (930.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp39-cp39-win_amd64.whl (787.4 kB view details)

Uploaded CPython 3.9Windows x86-64

c104-2.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (953.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

c104-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (930.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp38-cp38-win_amd64.whl (787.2 kB view details)

Uploaded CPython 3.8Windows x86-64

c104-2.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (976.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

c104-2.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (930.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

c104-2.2.1-cp37-cp37m-win_amd64.whl (783.5 kB view details)

Uploaded CPython 3.7mWindows x86-64

c104-2.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (970.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

c104-2.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (925.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

File details

Details for the file c104-2.2.1.tar.gz.

File metadata

  • Download URL: c104-2.2.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1.tar.gz
Algorithm Hash digest
SHA256 d1b427f94cd0eeef376020a250ea0e7deb97ac33df5ee4908c7b20452cc8bb23
MD5 c33b70ccaa2595c3625b419dfa38c46d
BLAKE2b-256 9afef51faf4c5876c29c2721ff471cd9b997d792862f2745160121ef99f9f813

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 822.0 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for c104-2.2.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 74ab55f32593f47f497696e566d5023538ddf15e2455e6290744c409335569dc
MD5 787673b559f55bd8b409c20571974b9c
BLAKE2b-256 6284c5b69016adf2d2393b96ef010770d61b92320e88a9bec3d1000de5556a45

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7618cbdc43c1af596cb5413cc3430f41d7e833f94e1245fcd73781e1410c7c34
MD5 c0eefd2a5790f348ca51ea7fb8899034
BLAKE2b-256 42a388e7c84fe2dc932870c6fed0b218b65d94b127ebc65c0c652ab18c13c5dc

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fbbf53652e97283da1679bfb8f06ecf279ff0eb117ba8b67f95cf31a8016a31a
MD5 4313dbb1201ddc190526720885aba0f7
BLAKE2b-256 dedb4eeb8915ae91f560599945cb2894cc2c7fdaff25e3e195283ade26e9e392

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 788.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8ead38d5d9fcdd29e2114780f3a4d549608d671f759978d72826bb3248fc3211
MD5 4cb7bc23ac117568b26262f4b6de6b44
BLAKE2b-256 5255e083ea95a4402c0035ecbad46e7652b2b89bbf3dbe45bb5928b43951dc8f

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d7c19d8462af153f5b6a4896d2ef824d4d724902e02f545ccb1de8de4831a4d
MD5 370ced374dec2b7b80ddeaa2d71018aa
BLAKE2b-256 d77bbad97ce0792c401db2073fcbb11a692a0dead216b514ae3c4a80eb1bacd0

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 85f2abfa2f82d5287512a4aa04cfa59eb605ea67fca1aace0d0d8cdb50469f88
MD5 73e507a0695ae8ca2a7e26a6740b5260
BLAKE2b-256 6da03b9688bea90021cfd0c4f7f05dc75babab49b7d8e12414ffae6f3c0ee6a5

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 788.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 115fb71c90701feaa9695e1fd16eda5940a7cd629e0add77376ae9e8b4e7abf1
MD5 72b02620140da20555467167dfeead27
BLAKE2b-256 3e9d30638416c01577fecd68aaa88889304d8ae095e18e8fe9793b124fb9dcf9

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a91df4a1d746898a2ebb035da7e2d0a816a1446e4d6822f0a8b962aecc556a3
MD5 003043d0e240da3565859ae781f52367
BLAKE2b-256 cb5f89e329aac2556000e7f24a597c1a2ffb88e87709d8e0295a691a1ad4c733

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b61171fbb8b672def2193cf0e728af7809b9684ddd3d3b062de7760aed9c947
MD5 68d3438b5363173a38e6202ffcbf79de
BLAKE2b-256 5276c0175a3f87746b861136f1f228b381cf57596a45af62c8d17011805c1aae

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 788.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7bda72543cc196bb90798fac6ab6f0bf4441b7b6d1ec0b7e76c271da3c548b67
MD5 b605156934d8dc73258804119ce79f94
BLAKE2b-256 aa07e2066ac12ece60c2c7ae9a2c9476f2b133fd88d450900f0f4248fd80550a

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afbe7698e75368bc83c8a476464f922403807eb3a259d9e074d4ce30738106b6
MD5 c928f455db2f3089ac1161faa7a44437
BLAKE2b-256 3523521f2b2b10adf6138fdb1bfb12868714607353ab652ef769239e5045c0bb

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0dd076ca5fff56261026a155266cd74998ac9a83d79b9f6a6ef7e6802913644a
MD5 d5f90c3629afd168dbdf0bcf54bdba99
BLAKE2b-256 78aea104d18226d56ba7f12b1de0b9b3e09752a5e5dcd242ebddef3e94c20d91

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 787.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a7e8b26f0c2303d8c9a4ba93de7ebccb76e545f5dfd1141ddedf8bd22f974c04
MD5 8af58454fbd3fd01faa7e2462182ead7
BLAKE2b-256 fe21e9bd8136fee53a28c525676c1a87a454d9b806b6b3384b125df790df50e1

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 58d557a620773977c00e3ed3f41a5d759379f50363bb244124ea0ee03fba3c69
MD5 885189aa797e0f82acec6f2df138a8f3
BLAKE2b-256 5290b28d3817401803b572ac0c5d7ce9fcfd2f2c777150eeef9bb1c8888ecfb8

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 844cadea6d1c319bce3e271df28864ba33903b6d54fc5d90f6deadc0b12fca55
MD5 262796cfea190a0762b55615e02d2f0e
BLAKE2b-256 53cf02d9ab110edc2165b628720d43d9418c0c6e562c5d24e4702698fa0c0180

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 787.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 05483a6f6bc5dac007b3b2393af59c6579fdbe712f9ec240922c7bf8082ed88f
MD5 758f6ee739183aa718fff7657f10ae31
BLAKE2b-256 97113a340933795dc7d3d028b1b936056141d57d1346093294eb10aadfb8ba67

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71e2eed666dde24d736a8dba5f261ef1966b58afe5b4ac8c80a9af83fd9c8d97
MD5 0c297446eee75b67a42eddd121604269
BLAKE2b-256 7f45400f651f5b46bb1d2c43f7ac107591c7d10582ebc9e64b0016168676ccfe

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd3f4412859c44aa39dc2fbbe02068dc0dd5203e4bd1ea7829197bc74f3346f4
MD5 df8c4ffcfaed23bc5927e5208ed131b0
BLAKE2b-256 ca71941ff4a1a8e6c33afd8f0cb2b58c394c02b0089e0381a84a3c0836b8dad3

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 787.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4f3c3caa86ccee085ac4d8c4304e48dac5d37c14b627e1cbf6768c2266312d89
MD5 6acce9b992cb2bc500cc867ebd5dc0f5
BLAKE2b-256 b8aa2cc6fadac7dddcf6aed96afe6b6127231788d2d682c26de0a483b3ab9240

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 85ad306935d174927296039a8eb5e5adf3a72a9ff6cf7a01152df33ec32fcdc6
MD5 70b010a925564917735d1b9f44c285ba
BLAKE2b-256 cc9ec26ace9d7220bf38154cf1ae914bc785c12e9de8ed49050765a5c881dc22

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4694b1632803e75e3a20b6d71883d5da18b99767b7d886f78f6e01b8a0c802f9
MD5 b24c71d4985e0ec37ba57ea52a411eee
BLAKE2b-256 bf668d36f2294ebdb2552779289161c631522bcb7941af9f6736dee59575e2dc

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: c104-2.2.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 783.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.5

File hashes

Hashes for c104-2.2.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2cee69f602a105ebf9b46c1306e06f6edaf4295b2ce967e3f0719814bc1ecf65
MD5 4ecc33fa965488f727bbc38c46b00ad5
BLAKE2b-256 f51cdd36ed50e802d9a99617449ac6ddc7e9ff2baca62660f6a69e4c78f340a2

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee569b34ff8e150ab7cf7af292a0d66fabbd4f52829077e5a4997eea8f741019
MD5 2731829492aa6de3fa0b86f8b250843e
BLAKE2b-256 12eedea4bf7bce2250597f51f6db21f24ab508ca55e840b6ad772e666111394a

See more details on using hashes here.

File details

Details for the file c104-2.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for c104-2.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 364e2fe1f8d2d7c72d36576889409469e6cd4d550280ac7a4f156fc4626b966c
MD5 2adbdf2d678673f90a0ea46ad148cfde
BLAKE2b-256 0b75430eef6fc37a5012844a3cecf532fdba18f57c4529fb4e1642149491c9c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page