High-performance Python bindings for the Mongoose embedded networking library
Project description
cymongoose
Python bindings for the Mongoose embedded networking library, built with Cython.
Overview
cymongoose provides Pythonic access to Mongoose, a lightweight embedded networking library written in C. It supports HTTP servers, WebSocket, TCP/UDP sockets, and more through a clean, event-driven API.
Features
Core Protocols
- HTTP/HTTPS: Server and client with TLS support, chunked transfer encoding, SSE
- WebSocket/WSS: Full WebSocket support with text/binary frames over TLS
- MQTT/MQTTS: Publish/subscribe messaging with QoS support
- TCP/UDP: Raw socket support with custom protocols
- DNS: Asynchronous hostname resolution
- SNTP: Network time synchronization
Advanced Features
- TLS/SSL: Certificate-based encryption with custom CA support
- Timers: Periodic callbacks with precise timing control
- Flow Control: Backpressure handling and buffer management
- Authentication: HTTP Basic Auth, MQTT credentials
- JSON Parsing: Built-in JSON extraction utilities
- URL Encoding: Safe URL parameter encoding
Technical
- Event-driven: Non-blocking I/O with a simple event loop
- Low overhead: Thin Cython wrapper over native C library
- Python 3.10+: Modern Python with type hints
- Comprehensive: 244 tests, 100% pass rate
- Production Examples: 17 complete examples from Mongoose tutorials
- TLS Support: Built-in TLS/SSL encryption (MG_TLS_BUILTIN)
- GIL Optimization: 21 methods release GIL for true parallel execution
- High Performance: 60k+ req/sec (6-37x faster than pure Python frameworks)
Installation
From pypi
pip install cymongoose
From source
# Clone the repository
git clone https://github.com/shakfu/cymongoose
cd cymongoose
make
Also type make help gives you a list of commands
Requirements
- Python 3.10 or higher
- CMake 3.15+
- Cython 3.0+
- C compiler (gcc, clang, or MSVC)
Quick Start
Note: These examples bind to
127.0.0.1(localhost only). For production, use0.0.0.0to listen on all interfaces.
Simple HTTP Server
from cymongoose import Manager, MG_EV_HTTP_MSG
def handler(conn, event, data):
if event == MG_EV_HTTP_MSG:
conn.reply(200, "Hello, World!")
mgr = Manager(handler)
mgr.listen("http://127.0.0.1:8000", http=True)
print("Server running on http://localhost:8000. Press Ctrl+C to stop.")
mgr.run()
Serve Static Files
from cymongoose import Manager, MG_EV_HTTP_MSG
def handler(conn, event, data):
if event == MG_EV_HTTP_MSG:
conn.serve_dir(data, root_dir="./public")
mgr = Manager(handler)
mgr.listen("http://127.0.0.1:8000", http=True)
mgr.run()
WebSocket Echo Server
from cymongoose import Manager, MG_EV_HTTP_MSG, MG_EV_WS_MSG
def handler(conn, event, data):
if event == MG_EV_HTTP_MSG:
conn.ws_upgrade(data) # Upgrade HTTP to WebSocket
elif event == MG_EV_WS_MSG:
conn.ws_send(data.text) # Echo back
mgr = Manager(handler)
mgr.listen("http://127.0.0.1:8000", http=True)
mgr.run()
Per-Listener Handlers (new)
Run different handlers on different ports. Accepted connections automatically inherit the handler from their listener:
from cymongoose import Manager, MG_EV_HTTP_MSG
def api_handler(conn, event, data):
if event == MG_EV_HTTP_MSG:
conn.reply(200, '{"status":"ok"}', {"Content-Type": "application/json\r\n"})
def web_handler(conn, event, data):
if event == MG_EV_HTTP_MSG:
conn.serve_dir(data, root_dir="./public")
mgr = Manager() # no default handler needed
mgr.listen("http://127.0.0.1:8080", handler=api_handler, http=True)
mgr.listen("http://127.0.0.1:8090", handler=web_handler, http=True)
mgr.run()
Examples
The project includes several complete examples translated from Mongoose C tutorials:
Core HTTP/WebSocket
- HTTP Server - Static files, TLS, multipart uploads, REST API
- HTTP Client - GET/POST, TLS, timeouts, custom headers
- WebSocket Server - Echo, mixed HTTP+WS, client tracking
- WebSocket Broadcasting - Timer-based broadcasts to multiple clients
MQTT
- MQTT Client - Pub/sub, QoS, reconnection, keepalive
- MQTT Broker - Message routing, topic matching, subscriptions
Specialized HTTP
- HTTP Streaming - Chunked transfer encoding, large responses
- HTTP File Upload - Disk streaming, multipart forms
- RESTful Server - JSON API, CRUD operations, routing
- Server-Sent Events - Real-time push updates
Network Protocols
- SNTP Client - Network time sync over UDP
- DNS Client - Async hostname resolution
- TCP Echo Server - Raw TCP sockets, custom protocols
- UDP Echo Server - Connectionless datagrams
Advanced Features
- TLS HTTPS Server - Certificate-based encryption, SNI
- HTTP Proxy Client - CONNECT method tunneling
- Multi-threaded Server - Background workers,
Manager.wakeup()
All examples include:
- Production-ready patterns (signal handlers, graceful shutdown)
- Command-line arguments for flexibility
- Comprehensive test coverage (42 tests)
- Detailed documentation with C tutorial references
See tests/examples/README.md for usage instructions and tests/examples/ for source code.
API Reference
Manager
The main event loop manager.
mgr = Manager(handler=None, enable_wakeup=False)
Core Methods:
poll(timeout_ms=0)- Run one iteration of the event looprun(poll_ms=100)- Run the event loop until SIGINT/SIGTERM, then closelisten(url, handler=None)- Create a listening socket (handler is inherited by accepted children)connect(url, handler=None)- Create an outbound connectionclose()- Free resources
Protocol-Specific:
http_listen(url, handler=None)- Create HTTP serverhttp_connect(url, handler=None)- Create HTTP clientws_connect(url, handler=None)- WebSocket clientmqtt_connect(url, handler=None, client_id, username, password, ...)- MQTT clientmqtt_listen(url, handler=None)- MQTT brokersntp_connect(url, handler=None)- SNTP time clienttimer_add(milliseconds, callback, repeat=False, run_now=False)- Add periodic timerwakeup(connection_id, data)- Wake connection from another thread
Connection
Represents a network connection.
# Send data
conn.send(data) # Raw bytes
conn.reply(status, body, headers) # HTTP response
conn.ws_upgrade(message) # Upgrade HTTP to WebSocket
conn.ws_send(data, op) # WebSocket frame
# HTTP
conn.serve_dir(message, root_dir) # Serve static files
conn.serve_file(message, path) # Serve single file
conn.http_chunk(data) # Send chunked data
conn.http_sse(event_type, data) # Server-Sent Events
conn.http_basic_auth(user, pass_) # HTTP Basic Auth
# MQTT
conn.mqtt_pub(topic, message, ..) # Publish an MQTT message
conn.mqtt_sub(topic, qos=0) # Subscribe to an MQTT topic
conn.mqtt_ping() # Send MQTT ping
conn.mqtt_pong() # Send MQTT pong
conn.mqtt_disconnect() # Send MQTT disconnect message
# SNTP
conn.sntp_request() # Request time
# TLS
conn.tls_init(TlsOpts(...)) # Initialize TLS
conn.tls_free() # Free TLS resources
# DNS
conn.resolve(url) # Async DNS lookup
conn.resolve_cancel() # Cancel DNS lookup
# Connection management
conn.drain() # Graceful close (flush buffer first)
conn.close() # Immediate close
conn.error(message) # Trigger error event
# Properties
conn.is_listening # Listener socket?
conn.is_websocket # WebSocket connection?
conn.is_tls # TLS/SSL enabled?
conn.is_udp # UDP socket?
conn.is_readable # Data available?
conn.is_writable # Can write?
conn.is_full # Buffer full? (backpressure)
conn.is_draining # Draining before close?
conn.id # Connection ID
conn.handler # Current handler
conn.set_handler(fn) # Set handler (propagates to children if listener)
conn.userdata # Custom Python object
conn.local_addr # (ip, port) tuple
conn.remote_addr # (ip, port) tuple
# Buffer access
conn.recv_len # Bytes in receive buffer
conn.send_len # Bytes in send buffer
conn.recv_size # Receive buffer capacity
conn.send_size # Send buffer capacity
conn.recv_data(n) # Read from receive buffer
conn.send_data(n) # Read from send buffer
TlsOpts
TLS/SSL configuration.
opts = TlsOpts(
ca=None, # CA certificate (PEM)
cert=None, # Server/client certificate (PEM)
key=None, # Private key (PEM)
name=None, # Server name (SNI)
skip_verification=False # Skip cert validation (dev only!)
)
HttpMessage
HTTP request/response view.
msg.method # "GET", "POST", etc.
msg.uri # "/path"
msg.query # "?key=value"
msg.proto # "HTTP/1.1"
msg.body_text # Body as string
msg.body_bytes # Body as bytes
msg.header("Name") # Get header value
msg.headers() # All headers as list of tuples
msg.query_var("key") # Extract query parameter
msg.status() # HTTP status code
msg.header_var(header, var) # Extract variable from header
WsMessage
WebSocket frame data.
ws.text # Frame data as string
ws.data # Frame data as bytes
ws.flags # WebSocket flags
MqttMessage
MQTT message data.
mqtt.topic # Topic as string
mqtt.data # Payload as bytes
mqtt.id # Message ID
mqtt.cmd # MQTT command
mqtt.qos # Quality of Service (0-2)
mqtt.ack # Acknowledgment flag
Event Constants
# Core events
MG_EV_ERROR # Error occurred
MG_EV_OPEN # Connection created
MG_EV_POLL # Poll iteration
MG_EV_RESOLVE # DNS resolution complete
MG_EV_CONNECT # Outbound connection established
MG_EV_ACCEPT # Inbound connection accepted
MG_EV_TLS_HS # TLS handshake complete
MG_EV_READ # Data available to read
MG_EV_WRITE # Data written
MG_EV_CLOSE # Connection closed
# Protocol events
MG_EV_HTTP_MSG # HTTP message received
MG_EV_WS_OPEN # WebSocket handshake complete
MG_EV_WS_MSG # WebSocket message received
MG_EV_MQTT_CMD # MQTT command received
MG_EV_MQTT_MSG # MQTT message received
MG_EV_MQTT_OPEN # MQTT connection established
MG_EV_SNTP_TIME # SNTP time received
MG_EV_WAKEUP # Wakeup notification
Utility Functions
# JSON parsing
json_get(json_str, "$.path") # Get JSON value
json_get_num(json_str, "$.number") # Get as number
json_get_bool(json_str, "$.bool") # Get as boolean
json_get_long(json_str, "$.int", default=0) # Get as long
json_get_str(json_str, "$.string") # Get as string
# URL encoding
url_encode(data) # Encode for URL
# Multipart forms
http_parse_multipart(body, offset=0) # Parse multipart data
Testing
The project includes a comprehensive test suite with 244 tests (100% passing):
Test Coverage by Feature
Core Functionality (168 tests):
- HTTP/HTTPS: Server, client, headers, query params, chunked encoding, SSE (40 tests)
- WebSocket: Handshake, text/binary frames, opcodes (10 tests)
- MQTT: Connect, publish, subscribe, ping/pong, disconnect (11 tests)
- TLS/SSL: Configuration, initialization, properties (12 tests)
- Timers: Single-shot, repeating, callbacks, cleanup (10 tests)
- DNS: Resolution, cancellation (4 tests)
- SNTP: Time requests, format validation (5 tests)
- JSON: Parsing, type conversion, nested access (9 tests)
- Buffer Access: Direct buffer inspection, flow control (10 tests)
- Connection State: Lifecycle, properties, events (15+ tests)
- Security: HTTP Basic Auth, TLS properties (6 tests)
- Utilities: URL encoding, multipart forms, wakeup (10 tests)
- Flow Control: Drain, backpressure (4 tests)
Example Tests:
- HTTP/WebSocket examples
- MQTT examples
- Specialized HTTP examples
- Network protocols
- Advanced features
- README example validation
- WebSocket broadcast examples
Running Tests
make test # Run all tests (244 tests)
uv run python -m pytest tests/ -v # Verbose output
uv run python -m pytest tests/test_http_server.py # Run specific file
uv run python -m pytest tests/ -k "test_timer" # Run matching tests
uv run python -m pytest tests/examples/ # Run example tests only
Test Infrastructure
- Dynamic port allocation prevents conflicts
- Background polling threads for async operations
- Proper cleanup in finally blocks
- 100% pass rate (244/244 tests passing)
- WebSocket tests require
websocket-client(uv add --dev websocket-client)
Memory Safety Testing
AddressSanitizer (ASAN) support is available for detecting memory errors:
make build-asan # Build with ASAN enabled
make test-asan # Run tests with memory error detection
This detects use-after-free, buffer overflows, and other memory bugs at runtime.
macOS note:
build-asancompiles a small helper (build/run_asan) that injects the ASAN runtime viaDYLD_INSERT_LIBRARIESbefore exec'ing Python. This is necessary because macOS SIP stripsDYLD_INSERT_LIBRARIESfrom processes spawned by system binaries (/usr/bin/make,/bin/sh).
Development
The project uses scikit-build-core with CMake to build the Cython extension, and uv for environment and dependency management.
make build # Rebuild the Cython extension
make test # Run all tests
make clean # Remove build artifacts
make help # Show all available targets
Architecture
- CMake build (
CMakeLists.txt): Cythonizes.pyxand compiles the extension via scikit-build-core - Cython bindings (
src/cymongoose/_mongoose.pyx): Python wrapper classes - C declarations (
src/cymongoose/mongoose.pxd): Cython interface to Mongoose C API - Vendored Mongoose (
thirdparty/mongoose/): Embedded C library
Performance Optimization
The wrapper achieves C-level performance through aggressive optimization:
GIL Release (nogil):
- 21 critical methods release GIL for true parallel execution
- Network:
send(),close(),resolve(),resolve_cancel() - WebSocket:
ws_send(),ws_upgrade() - MQTT:
mqtt_pub(),mqtt_sub(),mqtt_ping(),mqtt_pong(),mqtt_disconnect() - HTTP:
reply(),serve_dir(),serve_file(),http_chunk(),http_sse() - TLS:
tls_init(),tls_free() - Utilities:
sntp_request(),http_basic_auth(),error() - Properties:
local_addr,remote_addr - Thread-safe:
Manager.wakeup()
TLS Compatibility:
- TLS and
nogilwork together safely - Mongoose's built-in TLS is event-loop based (no internal locks)
- Both optimizations enabled by default
Benchmark Results (Apple Silicon, wrk -t4 -c100 -d10s):
- cymongoose: 60,973 req/sec (1.67ms latency)
- aiohttp: 42,452 req/sec (1.44x slower)
- FastAPI/uvicorn: 9,989 req/sec (6.1x slower)
- Flask: 1,627 req/sec (37.5x slower)
See docs/nogil_optimization_summary.md and benchmarks/RESULTS.md for details.
License
MIT
Links
Project details
Release history Release notifications | RSS feed
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 cymongoose-0.1.9.tar.gz.
File metadata
- Download URL: cymongoose-0.1.9.tar.gz
- Upload date:
- Size: 565.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5388835a8c8f7205c8092a6e41eae3a326fe85c639b8407d5ea6dc2c0fc067e4
|
|
| MD5 |
2db696867bd504006d76a40e33f7e23d
|
|
| BLAKE2b-256 |
469ef2af1ca06edce25caac16e29baa257c26fb0a1d111f839cf834ef72e8867
|
File details
Details for the file cymongoose-0.1.9-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 217.4 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33f6e894eabc8ae1a25aa8116212a7127a16abe70642935e32426bad10017537
|
|
| MD5 |
517f0f3611e233f32158fb4b6efd316c
|
|
| BLAKE2b-256 |
5e85d9a76831577e00b1f6e89be0bc926977949e9f9a3c47ec5c5b6e178bac90
|
File details
Details for the file cymongoose-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 265.9 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d575b586336cb68e8186d5b0a7590c2e9026adf71f0b6e3d1c0115097f3f1ff
|
|
| MD5 |
aac1b2a6937f127b044572f77f4c6018
|
|
| BLAKE2b-256 |
9b1f2dd80b72f4d57d5f9dc75b4af422b02bf7bad62ef84cf61924e791c4fdda
|
File details
Details for the file cymongoose-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 254.2 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc4a5560138fc9dc0c53a5c7ff89b7e8c57c6f0003562715ba6681146e0b0a6c
|
|
| MD5 |
02b0e334bffe21e3ade5eccef40ec31b
|
|
| BLAKE2b-256 |
737f98b6161f657756225e042b7557d006dff11ddc24f60f8e2a7c1d95cddf77
|
File details
Details for the file cymongoose-0.1.9-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 224.0 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d2b0dcdf3fb478a610e43f5df802c31e76db34f03ef8960bb0cc03aafd186d0
|
|
| MD5 |
689168ba8bb23ab31e18e7b0527d775a
|
|
| BLAKE2b-256 |
671f59ae5b29135007509e6eafbd2295a3e26ac54a043a7ef632ea02102c4a61
|
File details
Details for the file cymongoose-0.1.9-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 255.9 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0c9354cad904a01b05aa2c865e318c1240164045b8fd3dd82d596d80f486444
|
|
| MD5 |
823c0a824c1066a2bcb97e364c0ef777
|
|
| BLAKE2b-256 |
15484e04c385cff3b0f281b0647ab87f8b8c8f8284de355d4bafd0e66cbf8901
|
File details
Details for the file cymongoose-0.1.9-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 217.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b1e31af6fde641521e8e576f12c213c2dd0939cc0497a70423984f42751cd23
|
|
| MD5 |
c4c46bb3ab02cab20cada0b4e19cb74c
|
|
| BLAKE2b-256 |
bed11a44bbcef671397b49e407dab36eb69a2a6ec0731704eeab3c13900b83b8
|
File details
Details for the file cymongoose-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 264.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b82b72194246ed65d8fc3486e0037ec3bf1453b2a9a8fa29e19f0130d2f773c8
|
|
| MD5 |
2d15b40a19782baa3acebf120a4553e0
|
|
| BLAKE2b-256 |
99bcb019a5e6d722c3334cad6664e712a8aef1c236f8a0bf9f9e8449855d64bf
|
File details
Details for the file cymongoose-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 253.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df455e60342121ab2339fc8bf9a9ab4a14ec37ecfdc7aa533df9754512f45328
|
|
| MD5 |
47a51cb1b9ad9626d2516ea05f71436d
|
|
| BLAKE2b-256 |
9770c0d389f1410459b85eb248e95e96584104c20591e2298bf71ec05f771437
|
File details
Details for the file cymongoose-0.1.9-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e2359a4b3fa1b253c1e9567877ff47762ad23d29e2e2f577370912e8694f16c
|
|
| MD5 |
88ca2c6177ae3bac12f4ae812b235c81
|
|
| BLAKE2b-256 |
f0c2bdd89325111d008d1660e83d011ccc85ef0442dcebb698a15cb8b9c0be1b
|
File details
Details for the file cymongoose-0.1.9-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 256.3 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9057e71de8b16e4963db8854c2620af19e466b29c6c8fc3d34faaffd3791d241
|
|
| MD5 |
5cb26d1cebda21c8af652c1cc42d7d25
|
|
| BLAKE2b-256 |
6094197524268b7b2698cd7a315cad452e57b8849bed559f6a5f496edd9d4967
|
File details
Details for the file cymongoose-0.1.9-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 221.9 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30be31139a156bf5d566e0c13e40218a931190cfca80636ae1c5a43d33a2ca24
|
|
| MD5 |
3f2d9009a81e231558ff882e35186e33
|
|
| BLAKE2b-256 |
67f6df2d8e0ba8da356fc620327be7352cb20ffe0917202a0012ae1350290e83
|
File details
Details for the file cymongoose-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c70998e359e761d82c4489263a6606f8d0f31c472fac37b0739a96eb8b5b4e26
|
|
| MD5 |
d240dbfab8505f126bc318736dc6006b
|
|
| BLAKE2b-256 |
744f452b2676ea05477cd79630a663ba96a1dddb4213f49cca550523d4547550
|
File details
Details for the file cymongoose-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 259.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1605d95b9c2e758307422773381e9e94cc93ec494ea8f673f03f17a624356c5f
|
|
| MD5 |
6ff954414389909760e6b559e1f0f6f8
|
|
| BLAKE2b-256 |
18873f3a79a02995a6cee9d75984915b55ec72e4e07873f05abf2ffd4f7d4675
|
File details
Details for the file cymongoose-0.1.9-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 226.4 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7af880d584de4e62e067abaf25e6df31823f1b23bf365e2dc4a50b64642a713
|
|
| MD5 |
2391539efb0ad95dc5d1f4387212dee7
|
|
| BLAKE2b-256 |
bd519917dab4110d02fed52867b16d3689e49733d171ff9ba0ffc14110f9ed3d
|
File details
Details for the file cymongoose-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 253.9 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4a922bceb5831610e1086bbf78361e3606f9aca52b491b9299333b47799cc3b
|
|
| MD5 |
ab293ef6443f80ef5c2647d7d55544fc
|
|
| BLAKE2b-256 |
d5dcc4677591ea7aa94b46bc892ec8ee0dbe3435fccded38baa068c77235fd60
|
File details
Details for the file cymongoose-0.1.9-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 221.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1ab79d564eaf0077fe1ec9349cb5c8333a3d6c1e29df3bf5b42af156d70006b
|
|
| MD5 |
20a9792df56ebbd197cef5793bf5fa58
|
|
| BLAKE2b-256 |
a2db0c2d0d26d21e99a7949ee249707a658b2d9a2c4416d57023628752a4cf5d
|
File details
Details for the file cymongoose-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 267.7 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aec95a85b1b07df9db6bb34e812950c78b85aa76783410f5f46a1c4e799a311
|
|
| MD5 |
9d456c03b771904fb352a5612405f915
|
|
| BLAKE2b-256 |
3821b7235687fa8990ca0003a54b292b4d9238796afed72a0f31aa3cf250e72f
|
File details
Details for the file cymongoose-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 258.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95ea71d8bede7226580367dae4f2fea9902c5ec678378d6027b7c1995ef7a5dc
|
|
| MD5 |
11f2ccfbe5eac48dd0076e474b8704c7
|
|
| BLAKE2b-256 |
51f3e2ff9a36858cdcf16a3d4dc68774f35d9a46fe7ccae509d0e77337e7f46d
|
File details
Details for the file cymongoose-0.1.9-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 226.3 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03bdf6303bf37f1ac6e91a42cc7f866c0d16544c4be66bd13ed741e9396ef420
|
|
| MD5 |
54e18a1104e3f886de970ba9f6dcb596
|
|
| BLAKE2b-256 |
a68628763ad1fc4b08950bc02fd68d9254a42a6e3266b43e4be1082a14d24943
|
File details
Details for the file cymongoose-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: cymongoose-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 253.8 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
760909bbc00e338f58c1a403d93612322bd78f15cc7c885793e438731c049bbc
|
|
| MD5 |
d7c945c91791852c648ac3632c4dd907
|
|
| BLAKE2b-256 |
264b3a68c9f50a60e8869359e2b8bcecd6bc33e905852f194f59ea4cd701b7c7
|