Skip to main content

Manage outbound HTTP connections using Curl & CurlMulti

Project description

mcurl

Build status PyPI version License

Python wrapper for libcurl with a high-level API for the easy and multi interfaces. Originally created for the Px proxy server.

Installation

mcurl can be installed using pip:

pip install pymcurl

Binary packages are provided for the following platforms:

  • aarch64-linux-gnu
  • aarch64-linux-musl
  • arm64-mac
  • i686-linux-gnu
  • x86_64-linux-gnu
  • x86_64-linux-musl
  • x86_64-windows

mcurl leverages cffi to interface with libcurl and all binary dependencies are sourced from binarybuilder.org. auditwheel on Linux, delocate on macOS and delvewheel on Windows are used to bundle the shared libraries into the wheels.

Thanks to cffi and Py_LIMITED_API, the CPython wheel works on any CPython ≥ 3.9. Separate wheels are provided for PyPy.

Usage

Easy interface

import mcurl

mcurl.dprint = print

c = mcurl.Curl('http://httpbin.org/get')
c.set_debug()
c.buffer()
ret = c.perform()
if ret == 0:
    ret, resp = c.get_response()
    headers = c.get_headers()
    data = c.get_data()
    print(f"Response: {resp}\n\n{headers}{data}")

Multi interface

import mcurl

mcurl.dprint = print

m = mcurl.MCurl()

c1 = mcurl.Curl('http://httpbin.org/get')
c1.set_debug()
c1.buffer()
m.add(c1)

data = "test8192".encode("utf-8")
c2 = mcurl.Curl('https://httpbin.org/post', 'POST')
c2.set_debug()
c2.buffer(data=data)
c2.set_headers({"Content-Length": len(data)})
m.add(c2)

ret1 = m.do(c1)
ret2 = m.do(c2)

if ret1:
    print(f"Response: {c1.get_response()}\n\n" +
          f"{c1.get_headers()}{c1.get_data()}")
else:
    print(f"Failed with error: {c1.errstr}")

if ret2:
    print(f"Response: {c2.get_response()}\n\n" +
          f"{c2.get_headers()}{c2.get_data()}")
else:
    print(f"Failed with error: {c2.errstr}")

m.close()

Raw libcurl API

The libcurl C API can also be accessed directly:

from mcurl import ffi, libcurl

url = "http://httpbin.org/get"
curl = ffi.new("char []", url.encode("utf-8"))

easy = libcurl.curl_easy_init()
libcurl.curl_easy_setopt(easy, libcurl.CURLOPT_URL, curl)
cerr = libcurl.curl_easy_perform(easy)

Threading

Each MCurl instance manages its own curl multi handle with internal locking for thread-safe concurrent operations. Multiple threads can safely call add(), do(), remove(), and stop() on the same MCurl instance.

Recommended patterns:

  • MCurl per thread — create a separate MCurl in each thread for maximum parallelism:

    import threading, mcurl
    
    def worker(url):
        m = mcurl.MCurl()
        c = mcurl.Curl(url)
        c.buffer()
        m.do(c)
        print(c.get_data())
        m.close()
    
    threads = [threading.Thread(target=worker, args=(f"http://httpbin.org/get?id={i}",)) for i in range(4)]
    for t in threads: t.start()
    for t in threads: t.join()
    
  • Shared MCurl — multiple threads can share one MCurl instance (internally locked):

    m = mcurl.MCurl()
    
    def worker(url):
        c = mcurl.Curl(url)
        c.buffer()
        m.do(c)
        print(c.get_data())
        m.remove(c)
    
    threads = [threading.Thread(target=worker, args=(f"http://httpbin.org/get?id={i}",)) for i in range(4)]
    for t in threads: t.start()
    for t in threads: t.join()
    m.close()
    

Versioning

Version format is X.Y.Z.P where X.Y.Z matches the upstream libcurl version and P is the wrapper patch (starts at 1 per upstream release). Wheels are built automatically when a new LibCURL_jll.jl release is detected.

Documentation

See the docs/ folder for detailed documentation:

Development

Requires a C compiler and uv.

git clone https://github.com/genotrance/mcurl.git
cd mcurl
make install
make test
Target Description
make install Create venv, build C extension, install pre-commit
make test Run tests with coverage
make check Run linters and type checking
make build Build sdist and wheel
make clean Remove build artifacts
make env Print LD_LIBRARY_PATH for local development

Contributing

Bug reports and pull requests are welcome at https://github.com/genotrance/mcurl/issues.

  1. Fork and clone the repository.
  2. Run make install to set up the venv, build the C extension, and install pre-commit hooks.
  3. Create a feature branch, make changes, add tests in tests/.
  4. Run make check && make test — all checks must pass.
  5. Open a pull request. CI runs on Ubuntu, Windows, and macOS across Python 3.9–3.14 and PyPy 3.10/3.11.

Building

mcurl is built using gcc on Linux, clang on macOS and mingw-x64 on Windows. The shared libraries are downloaded from binarybuilder.org using jbb for Linux and Windows. Custom libcurl binaries that include kerberos support on Linux and remove the libssh2 dependency are available. macOS uses the libcurl binaries and dependencies installed via Homebrew.

cibuildwheel is used to build wheels for all platforms and architectures via GitHub Actions. See docs/build.md for details.

Acknowledgments

The modernization of this project — including expanded test suite, CI/CD infrastructure, and comprehensive documentation — was developed with the assistance of LLMs.

License

MIT

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

pymcurl-8.19.0.1.tar.gz (168.5 kB view details)

Uploaded Source

Built Distributions

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

pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (5.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (5.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (5.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymcurl-8.19.0.1-cp39-abi3-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.9+Windows x86-64

pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

pymcurl-8.19.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (6.1 MB view details)

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

pymcurl-8.19.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (5.9 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

pymcurl-8.19.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymcurl-8.19.0.1-cp39-abi3-macosx_14_0_arm64.whl (4.0 MB view details)

Uploaded CPython 3.9+macOS 14.0+ ARM64

File details

Details for the file pymcurl-8.19.0.1.tar.gz.

File metadata

  • Download URL: pymcurl-8.19.0.1.tar.gz
  • Upload date:
  • Size: 168.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymcurl-8.19.0.1.tar.gz
Algorithm Hash digest
SHA256 2c555621c356ebef9fc0f0c35b232f0b492f58c95dd7d3a1bde1bd67e8aa0c73
MD5 0de7740c9e3a7b61b7348992c0603d7f
BLAKE2b-256 b7c3bab848c2af05cf43fb645111e3e5ba990526fadf2417f190aa7a3a88fff1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1.tar.gz:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e687235dc9046343d24a3fe6d96bcb254109ef27d51432dbb1c5bb523b5d513b
MD5 190f05a71ba5f5a221e331be2301917b
BLAKE2b-256 feb6c0f3e9ac87619376bacbc11e9fca12d8d76a7e4b4d657f500357b36c36b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 b7352ca7bce47405ec5533060ec9523dc680402cdd093fb244eef83f934ccbc6
MD5 c631d461f84c86f190426474fedf7b26
BLAKE2b-256 6ed41bc948b9815b370a189957c3572c6d10fcff4679c709bc1ee41eba4ff2e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9e3013e7fd8cc8464d6ccb614aadfb930a6b933f6abb7cb0211001457162617d
MD5 c030fa2c47c155ae64b600cd0b5c2173
BLAKE2b-256 125d4f948904345c3438c15d8cc7efbaac62286b356110d6c2e0f1f9aa45ce82

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad982bd153b7a690eca1ce0807ff478104143eb619ae58ff99c9c3456809986d
MD5 b5c4b7d99f5b342bbcc541a808fc43bc
BLAKE2b-256 b1d64fe1b30e624d1a8b14b163e0e611d4c6040c9d4a8ee3eabd609f2f6a8548

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 9e126ca4badd94d76695ad2bb9e8b3f961f1c893325ae2ed640b22a0343fd11a
MD5 3d7e83eb4874d14b6765ca921c45d1d1
BLAKE2b-256 2e5ede41ef4640e001332fbef2fe7bf7519ea67793125a2f2cd0a123f461a5b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 021f965517c4592be5376e2566627a0cb9de18e4f401228000c44892a043991e
MD5 d3836b432f674395e589f3c9b4e3fb05
BLAKE2b-256 9f882eb3b7beaa7316b6221dd5e905679f5c9167cb6196f54bfad84e5a098805

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8d0b0bc583d827fb24c1c552f1d64072f4c5e50c7fd5fbfb75ceb2129f83fe75
MD5 5c35f0b5927a6429b37a11456e61621b
BLAKE2b-256 7ca6b40f5940c2a5820c5fa31400fe6896058f96d34eff00434cb4adf6567de0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 0002754afe58e2648e3c9a392b5564a62362a17652a12b8a861fdb79e99f28a8
MD5 6ad65c75dac908ef6cf128561bf4680a
BLAKE2b-256 6d8f39590bcad5aec06e24104a2888d0138611de1b6f4d0ff16bfa51053f993e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7aa42a38f3fd0e500cb5db442d6e72190b32823e332cab6c90f42b013dd2e862
MD5 9422a0b23d1f309ea14c40d93e901877
BLAKE2b-256 973f81c77d87ca9ef3b5d21e20ea9e1fc8ed3f06339784b30798efd00f32a918

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: pymcurl-8.19.0.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 88260e9f3fb39ec9506c77a4ac2c32b0b77f83c2fb105336dd154fdf7a7e85e4
MD5 3f56891fb5e9ad75ec96ace71df8ebe9
BLAKE2b-256 a455d20232be396870edbd0d4c6b48b9838f189ac7a9394bf3d87e3f22bd5bac

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-win_amd64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 946e8a9ae884fc210270575b6b5d17ee1f7b3d3694881e96842186b46b2bccfb
MD5 319d851fdd3a88bf39f6e158e9d7ec96
BLAKE2b-256 dbcc4ea5a6a4a76172dba60fff8feede97a8c806da3fec1acad2fda10363ea49

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_x86_64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a9f376e2d24bdebc20dd41ad8f44e0070b974007f0eafee008a166ca446d2c90
MD5 b8c8d4c9a95fc1301837f19ae4c5fc02
BLAKE2b-256 0e0b7610c5d9c20540e223cb208ab943de9cdea76af5b13a53ce43c2a69587d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-musllinux_1_2_aarch64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c6e21d84ce7e40c9ba7ef793d98d5712745f6bf604a7218361a578e8cca41ab9
MD5 0850f0e0e8a5de1c96a9f600d7c6af41
BLAKE2b-256 ec4bee48b85cd2f3b38db27fc7518f5227cc6bf80af694e56607cd2e5cf167d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 629c020fa4e310e697906649a32aa36e590a1bc8f2c74a5c7ead03995692fda5
MD5 d48d5926dd04f7e0e5fa788d270b6797
BLAKE2b-256 75360a3077f604f4cb33a161f02cd126fe5a1a84201e0c299a8db92579524707

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23211a2ed7b583376c4fced13d02d1d6d0962be3725759dbdb1e60eabb451710
MD5 def7ecc10c2af65cb37df0c8a0c7a8a4
BLAKE2b-256 a7466f675c3015b326fd3c6851b26b880e9ded845a59a1740808d39cf10060f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymcurl-8.19.0.1-cp39-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pymcurl-8.19.0.1-cp39-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 94290d5e86d32640d0fe7d1ffdee4a147acaa58fe7cfc13c44c98e37cf56871c
MD5 8e34123fd1e2cc1b5b8692856e7a8f70
BLAKE2b-256 dc73413ab9c07cf783c0b1a02606489b2a18a2557ad8cd144fab61a1b86e42dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymcurl-8.19.0.1-cp39-abi3-macosx_14_0_arm64.whl:

Publisher: build.yml on genotrance/mcurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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