Manage outbound HTTP connections using Curl & CurlMulti
Project description
mcurl
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 _libcurl_cffi import lib as libcurl
from _libcurl_cffi import ffi
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
MCurlin 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
MCurlinstance (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:
- Build system —
pyproject.toml,setup.py, cffi, cibuildwheel, wheel matrix - CI & GitHub Actions — workflows, deployment flow
- API reference —
Curl,MCurl, utility functions - Changelog — release history
- Testing — test layout, running tests, fixtures
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.
- Fork and clone the repository.
- Run
make installto set up the venv, build the C extension, and install pre-commit hooks. - Create a feature branch, make changes, add tests in
tests/. - Run
make check && make test— all checks must pass. - 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymcurl-8.18.0.1.tar.gz.
File metadata
- Download URL: pymcurl-8.18.0.1.tar.gz
- Upload date:
- Size: 162.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaf2d43cb331ade6c2a2d62bc655b65b3648257771a373c0991a3c59cb754506
|
|
| MD5 |
0ab3e51c4f16eec69a40307e369ab48f
|
|
| BLAKE2b-256 |
d56c39bb195144dc4adda1227177b9333d188d4307d826d3bc0daa9532e0275b
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1.tar.gz:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1.tar.gz -
Subject digest:
aaf2d43cb331ade6c2a2d62bc655b65b3648257771a373c0991a3c59cb754506 - Sigstore transparency entry: 1005319836
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.9 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43c3c4d5a012c039e965929efd21ac4f2e55029e30e14f4ef028aec0f0a55b18
|
|
| MD5 |
b4d886a816b689c5d2a83c7508ed8ef5
|
|
| BLAKE2b-256 |
3b88f24df4d097410b856cf9c8af637c2dccae8adb7e801e90262f1b1ddf224a
|
Provenance
The following attestation bundles were made for pymcurl-8.18.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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
43c3c4d5a012c039e965929efd21ac4f2e55029e30e14f4ef028aec0f0a55b18 - Sigstore transparency entry: 1005319837
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
- Upload date:
- Size: 5.7 MB
- Tags: PyPy, manylinux: glibc 2.17+ i686, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0adfc5232720d986d03b06c20420a59621c99866da617d0835f56f7213f33b78
|
|
| MD5 |
5028856a87bca2ecf033461f34dc1dcb
|
|
| BLAKE2b-256 |
2bcc344cbaf90d1eb4e4b51646acc9b9ae13d2de2cb75e5705372925560afe83
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl -
Subject digest:
0adfc5232720d986d03b06c20420a59621c99866da617d0835f56f7213f33b78 - Sigstore transparency entry: 1005319846
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.6 MB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e4e4f155cb494be64eeb9229d15f18a222b309717be5437767ca6d35752e337
|
|
| MD5 |
aff7fa6513c9dc909a2eb592af8dc2cf
|
|
| BLAKE2b-256 |
91bf5ed710378c71a4afae17d0b3c9cb6f8b95cb881324d1cd395a7b4c7c8d89
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
1e4e4f155cb494be64eeb9229d15f18a222b309717be5437767ca6d35752e337 - Sigstore transparency entry: 1005319857
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.9 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e86842e4ae2e2d55efd19c40f7f6cd8726e839f79373a856ec8c62cf03dc0e5c
|
|
| MD5 |
4363c1dcd7a579c0304eba929464f90f
|
|
| BLAKE2b-256 |
2a2ecfe435544929409d3f106f7708502af7c0c660a42d9ca85d2fb92d37c1e7
|
Provenance
The following attestation bundles were made for pymcurl-8.18.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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
e86842e4ae2e2d55efd19c40f7f6cd8726e839f79373a856ec8c62cf03dc0e5c - Sigstore transparency entry: 1005319854
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
- Upload date:
- Size: 5.7 MB
- Tags: PyPy, manylinux: glibc 2.17+ i686, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c8546f2e8741d15a81feeb5592c3549705ca108ab6295ed7744e3ccd70ed33f
|
|
| MD5 |
db3c6664fc07c561bfcad2518f82d8c1
|
|
| BLAKE2b-256 |
04ec4440ea68d819c32e28ccc29e9e1a48166918a081c4e71faf5e88f0410c09
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl -
Subject digest:
1c8546f2e8741d15a81feeb5592c3549705ca108ab6295ed7744e3ccd70ed33f - Sigstore transparency entry: 1005319842
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.6 MB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daf782019316b46b0a7ef96e37e32bbcfa860b90239322789f6003db9aa2a2a2
|
|
| MD5 |
0639a2e3872bd6a30d5511a89b2969bb
|
|
| BLAKE2b-256 |
38071382bb5122c160656fee9dd7a20a5ee2a329195f0af3a70271623f762063
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
daf782019316b46b0a7ef96e37e32bbcfa860b90239322789f6003db9aa2a2a2 - Sigstore transparency entry: 1005319845
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.9 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f24b09236ae4593be5bfac7156d314f7eb418ddbbe878a0b31c5010e1ec92e1
|
|
| MD5 |
16d1800ce57c35036c9581739475078a
|
|
| BLAKE2b-256 |
8397f3e0ec231210bbe52655f664bcaed457c6af369f889a34bcec042e7abb64
|
Provenance
The following attestation bundles were made for pymcurl-8.18.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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
6f24b09236ae4593be5bfac7156d314f7eb418ddbbe878a0b31c5010e1ec92e1 - Sigstore transparency entry: 1005319851
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
- Upload date:
- Size: 5.7 MB
- Tags: PyPy, manylinux: glibc 2.17+ i686, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e81a61ea919be69c3196b7ccd3f2dd0094a44c7bc2689aa5e8c87a87c4141fcb
|
|
| MD5 |
28987258ba5477f075dbe21a8f386c8c
|
|
| BLAKE2b-256 |
81af2fa5b5238005a0fc01ce909134a2209cb0a4e1f136dcce21164f8090c360
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl -
Subject digest:
e81a61ea919be69c3196b7ccd3f2dd0094a44c7bc2689aa5e8c87a87c4141fcb - Sigstore transparency entry: 1005319843
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.6 MB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f07ef17abe6649285ebbae4bb333b13eef5caf3df358687652e48cdafb80f52f
|
|
| MD5 |
ce8117ad35b2ff98ee1ad9cce40a4d59
|
|
| BLAKE2b-256 |
8bb4e078579b4465d47d8489d0f89b6c72b589660ed2334d48230f621a1ae3e7
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-pp39-pypy39_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
f07ef17abe6649285ebbae4bb333b13eef5caf3df358687652e48cdafb80f52f - Sigstore transparency entry: 1005319853
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: pymcurl-8.18.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.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2a631ed469b0d46b43ef61324ace71ec305be537b307a55b9e1cc8b18b02739
|
|
| MD5 |
db7229f112d25cb0ed96f92a511d1be4
|
|
| BLAKE2b-256 |
affc90d831d3e73680779f6e31b783e02a6a3d3e163a25616264adaa22e06b62
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-win_amd64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-win_amd64.whl -
Subject digest:
b2a631ed469b0d46b43ef61324ace71ec305be537b307a55b9e1cc8b18b02739 - Sigstore transparency entry: 1005319858
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 6.0 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
936d66bff01b71251b7d9908e75c26fdbbb8df30b3e8d12142738fe5d939e851
|
|
| MD5 |
4e0111331d103ca7aba3b845f25d442e
|
|
| BLAKE2b-256 |
3d4d4e849304c36889470fe642d3f337100bccf0ed843a5fb1d1bd5745622784
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_x86_64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
936d66bff01b71251b7d9908e75c26fdbbb8df30b3e8d12142738fe5d939e851 - Sigstore transparency entry: 1005319838
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 5.6 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
533e3ad49ac17a283dc92c9ab6236715d746b1d4da33d5acfcfce5e08533c66d
|
|
| MD5 |
080c61dca3bd32b57966a86a0e7c351b
|
|
| BLAKE2b-256 |
2470d8fcc04d34104b9f6d86ed3046c273c69915b47354dbc0bd6fe240fdc1a8
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_aarch64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-musllinux_1_2_aarch64.whl -
Subject digest:
533e3ad49ac17a283dc92c9ab6236715d746b1d4da33d5acfcfce5e08533c66d - Sigstore transparency entry: 1005319855
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.1 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
120c6458a96eccd5a130a10d0e30296b16296fb95024f812962a7a24009d28f9
|
|
| MD5 |
a1e7da6f44e22f643171ad499f846b6a
|
|
| BLAKE2b-256 |
34742fe731cd488940d7c507a9a35edd0e28449fed4fca600a91d9de9b8cae7e
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
120c6458a96eccd5a130a10d0e30296b16296fb95024f812962a7a24009d28f9 - Sigstore transparency entry: 1005319849
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
- Upload date:
- Size: 5.9 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ i686, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c5ac1327496c4abe5840c3e5d5cf11e3760e838ec001f09aeb2e82f55c418db
|
|
| MD5 |
1ae4b3c5f85b3286d1066223b38a201c
|
|
| BLAKE2b-256 |
4212c83606f097c5c4f81173320ad1183400539ad6074d8bb7f54e8548a8bf05
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl -
Subject digest:
1c5ac1327496c4abe5840c3e5d5cf11e3760e838ec001f09aeb2e82f55c418db - Sigstore transparency entry: 1005319852
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49ad622b44bcd14f32de88fb1f77ab83a46f2eece4b62c605ef28affe5170e1d
|
|
| MD5 |
9c2a742b69c4d77cef475562e1d8dc28
|
|
| BLAKE2b-256 |
c66496cb8d65e7314045d7c18c2bd2be58904cbfe6e6d39d24d599852fc15bac
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
49ad622b44bcd14f32de88fb1f77ab83a46f2eece4b62c605ef28affe5170e1d - Sigstore transparency entry: 1005319840
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type:
File details
Details for the file pymcurl-8.18.0.1-cp39-abi3-macosx_14_0_arm64.whl.
File metadata
- Download URL: pymcurl-8.18.0.1-cp39-abi3-macosx_14_0_arm64.whl
- Upload date:
- Size: 4.0 MB
- Tags: CPython 3.9+, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d388b623ba49dc279a7156749cd802f44a2443440e9ba2f06e6c62ea53546ae4
|
|
| MD5 |
66532ad73542244dfb7c2a2e653dbed3
|
|
| BLAKE2b-256 |
3cc9cf71956285f343686ef13dc01d95f74270964aab858dca41aabb1a139533
|
Provenance
The following attestation bundles were made for pymcurl-8.18.0.1-cp39-abi3-macosx_14_0_arm64.whl:
Publisher:
build.yml on genotrance/mcurl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pymcurl-8.18.0.1-cp39-abi3-macosx_14_0_arm64.whl -
Subject digest:
d388b623ba49dc279a7156749cd802f44a2443440e9ba2f06e6c62ea53546ae4 - Sigstore transparency entry: 1005319848
- Sigstore integration time:
-
Permalink:
genotrance/mcurl@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/genotrance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@2771f61dc58596c6665143f945bc828e2ebd6f7c -
Trigger Event:
push
-
Statement type: