Skip to main content

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, use 0.0.0.0 to 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 loop
  • run(poll_ms=100) - Run the event loop until SIGINT/SIGTERM, then close
  • listen(url, handler=None) - Create a listening socket (handler is inherited by accepted children)
  • connect(url, handler=None) - Create an outbound connection
  • close() - Free resources

Protocol-Specific:

  • http_listen(url, handler=None) - Create HTTP server
  • http_connect(url, handler=None) - Create HTTP client
  • ws_connect(url, handler=None) - WebSocket client
  • mqtt_connect(url, handler=None, client_id, username, password, ...) - MQTT client
  • mqtt_listen(url, handler=None) - MQTT broker
  • sntp_connect(url, handler=None) - SNTP time client
  • timer_add(milliseconds, callback, repeat=False, run_now=False) - Add periodic timer
  • wakeup(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-asan compiles a small helper (build/run_asan) that injects the ASAN runtime via DYLD_INSERT_LIBRARIES before exec'ing Python. This is necessary because macOS SIP strips DYLD_INSERT_LIBRARIES from 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 .pyx and 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 nogil work 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


Download files

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

Source Distribution

cymongoose-0.1.9.tar.gz (565.4 kB view details)

Uploaded Source

Built Distributions

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

cymongoose-0.1.9-cp313-cp313-win_amd64.whl (217.4 kB view details)

Uploaded CPython 3.13Windows x86-64

cymongoose-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (265.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cymongoose-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (254.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cymongoose-0.1.9-cp313-cp313-macosx_11_0_arm64.whl (224.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cymongoose-0.1.9-cp313-cp313-macosx_10_13_x86_64.whl (255.9 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cymongoose-0.1.9-cp312-cp312-win_amd64.whl (217.9 kB view details)

Uploaded CPython 3.12Windows x86-64

cymongoose-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (264.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cymongoose-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (253.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cymongoose-0.1.9-cp312-cp312-macosx_11_0_arm64.whl (224.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cymongoose-0.1.9-cp312-cp312-macosx_10_13_x86_64.whl (256.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cymongoose-0.1.9-cp311-cp311-win_amd64.whl (221.9 kB view details)

Uploaded CPython 3.11Windows x86-64

cymongoose-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cymongoose-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (259.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cymongoose-0.1.9-cp311-cp311-macosx_11_0_arm64.whl (226.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cymongoose-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl (253.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cymongoose-0.1.9-cp310-cp310-win_amd64.whl (221.8 kB view details)

Uploaded CPython 3.10Windows x86-64

cymongoose-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (267.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cymongoose-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (258.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

cymongoose-0.1.9-cp310-cp310-macosx_11_0_arm64.whl (226.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cymongoose-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl (253.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Hashes for cymongoose-0.1.9.tar.gz
Algorithm Hash digest
SHA256 5388835a8c8f7205c8092a6e41eae3a326fe85c639b8407d5ea6dc2c0fc067e4
MD5 2db696867bd504006d76a40e33f7e23d
BLAKE2b-256 469ef2af1ca06edce25caac16e29baa257c26fb0a1d111f839cf834ef72e8867

See more details on using hashes here.

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

Hashes for cymongoose-0.1.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 33f6e894eabc8ae1a25aa8116212a7127a16abe70642935e32426bad10017537
MD5 517f0f3611e233f32158fb4b6efd316c
BLAKE2b-256 5e85d9a76831577e00b1f6e89be0bc926977949e9f9a3c47ec5c5b6e178bac90

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d575b586336cb68e8186d5b0a7590c2e9026adf71f0b6e3d1c0115097f3f1ff
MD5 aac1b2a6937f127b044572f77f4c6018
BLAKE2b-256 9b1f2dd80b72f4d57d5f9dc75b4af422b02bf7bad62ef84cf61924e791c4fdda

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc4a5560138fc9dc0c53a5c7ff89b7e8c57c6f0003562715ba6681146e0b0a6c
MD5 02b0e334bffe21e3ade5eccef40ec31b
BLAKE2b-256 737f98b6161f657756225e042b7557d006dff11ddc24f60f8e2a7c1d95cddf77

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d2b0dcdf3fb478a610e43f5df802c31e76db34f03ef8960bb0cc03aafd186d0
MD5 689168ba8bb23ab31e18e7b0527d775a
BLAKE2b-256 671f59ae5b29135007509e6eafbd2295a3e26ac54a043a7ef632ea02102c4a61

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c0c9354cad904a01b05aa2c865e318c1240164045b8fd3dd82d596d80f486444
MD5 823c0a824c1066a2bcb97e364c0ef777
BLAKE2b-256 15484e04c385cff3b0f281b0647ab87f8b8c8f8284de355d4bafd0e66cbf8901

See more details on using hashes here.

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

Hashes for cymongoose-0.1.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8b1e31af6fde641521e8e576f12c213c2dd0939cc0497a70423984f42751cd23
MD5 c4c46bb3ab02cab20cada0b4e19cb74c
BLAKE2b-256 bed11a44bbcef671397b49e407dab36eb69a2a6ec0731704eeab3c13900b83b8

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b82b72194246ed65d8fc3486e0037ec3bf1453b2a9a8fa29e19f0130d2f773c8
MD5 2d15b40a19782baa3acebf120a4553e0
BLAKE2b-256 99bcb019a5e6d722c3334cad6664e712a8aef1c236f8a0bf9f9e8449855d64bf

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df455e60342121ab2339fc8bf9a9ab4a14ec37ecfdc7aa533df9754512f45328
MD5 47a51cb1b9ad9626d2516ea05f71436d
BLAKE2b-256 9770c0d389f1410459b85eb248e95e96584104c20591e2298bf71ec05f771437

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e2359a4b3fa1b253c1e9567877ff47762ad23d29e2e2f577370912e8694f16c
MD5 88ca2c6177ae3bac12f4ae812b235c81
BLAKE2b-256 f0c2bdd89325111d008d1660e83d011ccc85ef0442dcebb698a15cb8b9c0be1b

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9057e71de8b16e4963db8854c2620af19e466b29c6c8fc3d34faaffd3791d241
MD5 5cb26d1cebda21c8af652c1cc42d7d25
BLAKE2b-256 6094197524268b7b2698cd7a315cad452e57b8849bed559f6a5f496edd9d4967

See more details on using hashes here.

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

Hashes for cymongoose-0.1.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 30be31139a156bf5d566e0c13e40218a931190cfca80636ae1c5a43d33a2ca24
MD5 3f2d9009a81e231558ff882e35186e33
BLAKE2b-256 67f6df2d8e0ba8da356fc620327be7352cb20ffe0917202a0012ae1350290e83

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c70998e359e761d82c4489263a6606f8d0f31c472fac37b0739a96eb8b5b4e26
MD5 d240dbfab8505f126bc318736dc6006b
BLAKE2b-256 744f452b2676ea05477cd79630a663ba96a1dddb4213f49cca550523d4547550

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1605d95b9c2e758307422773381e9e94cc93ec494ea8f673f03f17a624356c5f
MD5 6ff954414389909760e6b559e1f0f6f8
BLAKE2b-256 18873f3a79a02995a6cee9d75984915b55ec72e4e07873f05abf2ffd4f7d4675

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7af880d584de4e62e067abaf25e6df31823f1b23bf365e2dc4a50b64642a713
MD5 2391539efb0ad95dc5d1f4387212dee7
BLAKE2b-256 bd519917dab4110d02fed52867b16d3689e49733d171ff9ba0ffc14110f9ed3d

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e4a922bceb5831610e1086bbf78361e3606f9aca52b491b9299333b47799cc3b
MD5 ab293ef6443f80ef5c2647d7d55544fc
BLAKE2b-256 d5dcc4677591ea7aa94b46bc892ec8ee0dbe3435fccded38baa068c77235fd60

See more details on using hashes here.

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

Hashes for cymongoose-0.1.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e1ab79d564eaf0077fe1ec9349cb5c8333a3d6c1e29df3bf5b42af156d70006b
MD5 20a9792df56ebbd197cef5793bf5fa58
BLAKE2b-256 a2db0c2d0d26d21e99a7949ee249707a658b2d9a2c4416d57023628752a4cf5d

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0aec95a85b1b07df9db6bb34e812950c78b85aa76783410f5f46a1c4e799a311
MD5 9d456c03b771904fb352a5612405f915
BLAKE2b-256 3821b7235687fa8990ca0003a54b292b4d9238796afed72a0f31aa3cf250e72f

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 95ea71d8bede7226580367dae4f2fea9902c5ec678378d6027b7c1995ef7a5dc
MD5 11f2ccfbe5eac48dd0076e474b8704c7
BLAKE2b-256 51f3e2ff9a36858cdcf16a3d4dc68774f35d9a46fe7ccae509d0e77337e7f46d

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03bdf6303bf37f1ac6e91a42cc7f866c0d16544c4be66bd13ed741e9396ef420
MD5 54e18a1104e3f886de970ba9f6dcb596
BLAKE2b-256 a68628763ad1fc4b08950bc02fd68d9254a42a6e3266b43e4be1082a14d24943

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cymongoose-0.1.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 760909bbc00e338f58c1a403d93612322bd78f15cc7c885793e438731c049bbc
MD5 d7c945c91791852c648ac3632c4dd907
BLAKE2b-256 264b3a68c9f50a60e8869359e2b8bcecd6bc33e905852f194f59ea4cd701b7c7

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