Skip to main content

Some handy Python tools

Project description

pxutil

build-test-publish black-code-style

Some handy Python utilities

A sample to learn Python packaging

Install from source

cd <repo root>
pip install .

python setup.py install (deprecated and problematic)

Build distributions ( Replaced with Actions / cibuildwheel for multiple python versions and platforms)

# build for current python version
rm -rf dist/* && python setup.py sdist bdist_wheel

Build and Test - cibuildwheel locally for current platform

pip install cibuildwheel
# build with docker
cibuildwheel --platform linux . 
# cibuildwheel config in pyproject.toml

Publish to pypi ( Replaced with Actions / cibuildwheel for multiple python versions and platforms)

twine upload dist/*

Github Actions

The github action workflow has been configured to run build, test and publish to pypi with cibuildwheel which builds cython extension for multiple python versions and platforms.

The workflow is configured to run manually, not to waste resources on each commit, or automatically when a release is created.

The publish job is executed only when a release is created.

Usage - Functions

import pxutil as px

# run a command and capture stdout, stderr
r = px.bash('ls')
print(r.stdout)

# run a command like bash -x, not capture stdout, stderr
px.bashx('ls')

# shell alike grep
px.grep('ab','abc\ndef')

# normalize a path, by default no symlink resolution
px.normal_path('~/project/src/../README.rst')

px.trim_docstring('''
    ab
        cd
    ef
    '''
    )

# change work directory
with px.set_work_path("~") as p:
    os.listdir()

# import any module in a path
conf = px.import_any('~/config/config1.py')
print(conf.server_ip)

# exit program if return value is an exception
@px.exit_on_exception
def to_int(any):
    if isinstance(any, dict):
        return Exception('dict is not supported to convert to int.')
    return int(any)

# bespoke request, return decoded content or Exception if any error
# compatible with requests.request parameters
px.request()
NB: This logs requests and responses to files if log level is DEBUG, and log level and directory 
can be configured via environment variable PX_LOG_LEVEL (DEBUG) and PX_LOG_DIR.

# shorthand of px.request('POST',...)
px.post()

# set up loggers
px.setup_logger()

# read classic .env file w/o ini section headers, e.g. docker compose .env, and return a dict
# alternative to package dotnet
px.read_dotenv(file_path='.env')

Usage - CLI

px.loop -h      # run a command in loop
px.chat -h      # chat cli based on chatGPT
px.runc -h      # compile and run single c file with gcc
px.ls.mod -h    # list content of a module/package: submodules, classes, functions.

Test

git clone https://github.com/peterjpxie/pxutil.git
cd pxutil
pip3 install -r tests/requirements.txt

# current python version
pytest 

# or 
# multiple python versions
tox 

# or
# multiple python versions in docker
cibuildwheel --platform linux . 

Note some tests are not reliable, e.g. test_post depending on server https://httpbin.org, and moved to manual_test_xx.py to avoid CI failure. Please run them manually as follows.

pytest tests/manual_test_pxutil.py

Places to Update Supported Python Versions

setup.py        # pypi description
tox.ini         # tox test
pyproject.toml  # cibuildwheel

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

pxutil-0.0.45.tar.gz (74.4 kB view details)

Uploaded Source

Built Distributions

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

pxutil-0.0.45-cp313-cp313-win_amd64.whl (38.6 kB view details)

Uploaded CPython 3.13Windows x86-64

pxutil-0.0.45-cp313-cp313-musllinux_1_2_x86_64.whl (118.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (117.6 kB view details)

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

pxutil-0.0.45-cp313-cp313-macosx_11_0_arm64.whl (38.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pxutil-0.0.45-cp312-cp312-win_amd64.whl (39.3 kB view details)

Uploaded CPython 3.12Windows x86-64

pxutil-0.0.45-cp312-cp312-musllinux_1_2_x86_64.whl (122.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (122.4 kB view details)

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

pxutil-0.0.45-cp312-cp312-macosx_11_0_arm64.whl (38.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pxutil-0.0.45-cp311-cp311-win_amd64.whl (38.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pxutil-0.0.45-cp311-cp311-musllinux_1_2_x86_64.whl (118.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (116.9 kB view details)

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

pxutil-0.0.45-cp311-cp311-macosx_11_0_arm64.whl (38.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pxutil-0.0.45-cp310-cp310-win_amd64.whl (38.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pxutil-0.0.45-cp310-cp310-musllinux_1_2_x86_64.whl (112.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (111.2 kB view details)

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

pxutil-0.0.45-cp310-cp310-macosx_11_0_arm64.whl (38.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pxutil-0.0.45-cp39-cp39-win_amd64.whl (38.8 kB view details)

Uploaded CPython 3.9Windows x86-64

pxutil-0.0.45-cp39-cp39-musllinux_1_2_x86_64.whl (111.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (110.7 kB view details)

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

pxutil-0.0.45-cp39-cp39-macosx_11_0_arm64.whl (38.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pxutil-0.0.45-cp38-cp38-win_amd64.whl (39.3 kB view details)

Uploaded CPython 3.8Windows x86-64

pxutil-0.0.45-cp38-cp38-musllinux_1_2_x86_64.whl (112.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pxutil-0.0.45-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (111.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pxutil-0.0.45-cp38-cp38-macosx_11_0_arm64.whl (38.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file pxutil-0.0.45.tar.gz.

File metadata

  • Download URL: pxutil-0.0.45.tar.gz
  • Upload date:
  • Size: 74.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45.tar.gz
Algorithm Hash digest
SHA256 f24bdaa23294710b9b8a456221469f76d70f7965dacef9ce48a866269c38861e
MD5 b1aae46eb9e8966cd2486129907c600e
BLAKE2b-256 c6180f0166566aa6356bbd72064c0a057e7de69f87b6c8a09d56ac3c6066b18c

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 38.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4e141dff2063c11884dc7d9d4949b85c78369bde689eac2c9e7385b1c4becdf9
MD5 22e99115fe27646c3c49249696019f48
BLAKE2b-256 7a668a9bb5a0f33509a6d0120ea4522f668953b19b577e89b0c875d1cea175fa

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4d050a7f051c3503cc3de046b0e295c1ca9eecdfd28913369d3da6efdd5c4fe4
MD5 9bede76b31c823dd27a5ddd8b68b6244
BLAKE2b-256 098c40f8aedf43576a1d690e0e883bc7e265f78eef08c000c8d674bda2687e9b

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 15d0a907ca59cdd3ebe758d63c974fffc96ba34ae54db31685806a06c3ced11c
MD5 7bba5573fadf2c232e4d9845f2f73c13
BLAKE2b-256 7aa2dbf8452c1bf94505a6de08f30d4c9c62e8b84cc089a2ded259c861987cac

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44a9aca32eee3dab1544885cc97fa37af879768f0bb8367be302d3ca9e90dfc4
MD5 9e899afc436bde9781482b997ece4795
BLAKE2b-256 00ef669c0755e6ccde4fa48ed5548574597a19807266ba0f2d23e7972b6b397b

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7b525c24796c4e56421f96e400fafb75309b8bd3d18d9abee2c62c6d19369eaa
MD5 c8e26132882e0aa6fff5390c4f947d32
BLAKE2b-256 73c899348616f0a05319858355378d50175a2886c30a3b16674077b99f8d9546

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92aa6cbf8f147d2fb2988858ad0c7497974f917996d0a20c7e9742b19bd133e5
MD5 d586940c8022521d62235ad795b9ad47
BLAKE2b-256 7702ead2f939ab5e8e4c1d62f387499a890341741e7533563e338b2cd954f03b

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 cb3cdd9303cba6cd3b9761ad07a2b65e1b32b255172b5453a3de4daed2c55394
MD5 1abbb22cec3d2a197eb637cd54fe2ba8
BLAKE2b-256 6f099cdea28fe05e9b7ec98fa7f19a8d015e10d8d1829bf858a5cf76f1706f1f

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9cbffbe02bfd248511f32fe845de9832dfe7412bbdfa639f13bdac665862057
MD5 b987702f945b14dee7e85b278ab7abe3
BLAKE2b-256 b065b4094bd7dc7fc4992b86657a571a3244aa3ad0f9da05249a1cfb896b6e60

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 38.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 beec5c5b1c360a91a23b6eedf4926daadc7ef4936512f7ab023bd9853536e4d4
MD5 6ac03f55745d734d839950d446ebe79b
BLAKE2b-256 eb5ccd19002f8f73c64822243104aedeac8216215884c175f604cde3b414430d

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 21df0a1b79c9ecc00a1591e72de020ec6069f2ea9f4e2b5babf2f78a2df4cfc6
MD5 ca92d318dcc90bbeaf7944f187a53b9c
BLAKE2b-256 a33a33df479b359d020e0a9395e5c2ee47795f788680cb64e19be9ff89fad282

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b2e586d47c28782c1efb3112c3c175f776b4a469485f6361788d692342a2922f
MD5 fec28303c0e2ff9ffbce12ac6c25296d
BLAKE2b-256 8eb66d16aa87291999cd7b4b6743c98795b54d9803452b54af391f349b4cefa0

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a926a625d69c2fead95f79b9f48db0a19bc8d9f1358938bc935f27c960d86772
MD5 ac2b8f46916822e9b6c45e1a51a34f64
BLAKE2b-256 523244ab1353d0179fe3d73c2088d18475668711e03c706ed289dbfcd6f85c8c

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9a23bae208d63e3fef3f58f1244ba5503589080b27cfbfc2e66cf18596e7807b
MD5 8b50ed6f09a946f7a9f88c4a2ff5f9c4
BLAKE2b-256 e154b9e75ac4ede017b3461afc523edb937f691484a4a186b7cc5cf9f42ddbdd

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5144d871c1800105a7dc216566d7468a1138947ccd4ec4806c1aa85e336eaa9e
MD5 b05c721330d88ea5adf79468b1c5a80f
BLAKE2b-256 3d39978ab36bee363f1eb0fcebd7a73e67147d4e16a11ce23ab7497fbfc80b9f

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 8b3455b261267d4e3c8dbdf0edac0718fd868d4c565833c96cb26141cbd6bf7e
MD5 ef5db0156627e8e4e10c22689b7c5db3
BLAKE2b-256 b53a0ee676cc0027f2f3cc54476878e2d8229d143ddd7400d56069e56add205f

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e55efb9caefa51eeb0268f73a3f745d3b28bc3a00b565ba10fd6eb3588a0688c
MD5 bfb632e5902d129a7eeca65908912444
BLAKE2b-256 3cbec89c0e35540409718155bdc9e19230231ca6d3b8bf13673a366f73a3df76

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9a7a7d478f09190a02c30578519710daf4a4eda989458031dc749c6c373ec427
MD5 70f3c1c3b7f2611d41e9c355badd2c67
BLAKE2b-256 4ced5c887c3d963ae5ecb520ccf42d1f0b1322759ef7b543aa08315dcc95c1e1

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5f8953762b668bdc56cb37e09d41fa08ce3ee288f5c8cf1660f113a6375141f8
MD5 881867ea324b049ac20d50727c32a813
BLAKE2b-256 c17730c7b15074a25bf2ac7dc9f5743a85ae50081d5cc918c8e563175796ece6

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f12aed6c040765b6a511c3dec3d2748c233a24aae593b571cc69a9c161001408
MD5 cb9d94ad0f08afcb2cf7e2a41608154d
BLAKE2b-256 cf41a59905e6cf67576ceea60d3f0b510d96c27a62f372d244f466f3cfe561df

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a710aa8d51052ca779ee7e4162bdcf264504ee5f397d9e351840196729f776f4
MD5 df3d08cc3160c2f738296b04268fd30a
BLAKE2b-256 c24542d2ebdd53a14707b1d182ab9e39f2fca0188e44a9407a9fc168491ade2d

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pxutil-0.0.45-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for pxutil-0.0.45-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2391ca2cb44b15600285cf0eb74b0b55aaa8a541132a7c927c34ab86db37ca05
MD5 57f76e37b82b70dec9ae7ff36adb7e1b
BLAKE2b-256 f9cda8a4caf5346404750fde6e77703f0e089dbd003345cc9048323e136dcaec

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e887ae3d000e90f25a691dfcc9505087113d0a6587cf0414b33976fa7cdebd08
MD5 d9b3a407f71a197f85c5b1210911b7ef
BLAKE2b-256 3d956d328e1c0ecd3246664ab44510bdb502ff981d070b8c6a3967f23f63033d

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 3a70a55b8fdce469a9b1e3726a8ee3997b203b1dc0d50fc0a45b8e860d14490c
MD5 d4cc41f4e61eddfa9cc665d8bfc9a768
BLAKE2b-256 dd93837672d07147599664e476f8568b81c06a96a2c8e3d8c39770b39af33d53

See more details on using hashes here.

File details

Details for the file pxutil-0.0.45-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pxutil-0.0.45-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d91f5f3ea45ac72a3164fb5208996517cbca9ec703504c2909aea27abd833e6
MD5 52406a644b72d34bfa2742eae5664f74
BLAKE2b-256 29a8bc7263365fc476ef35cc93129f61370427f532da2dc73e9c8d9c232f3b09

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