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: 232 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

Simple HTTP Server

import signal
from cymongoose import Manager, MG_EV_HTTP_MSG

shutdown_requested = False

def signal_handler(sig, frame):
    global shutdown_requested
    shutdown_requested = True

def handler(conn, event, data):
    if event == MG_EV_HTTP_MSG:
        conn.reply(200, "Hello, World!")

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

mgr = Manager(handler)
mgr.listen("http://0.0.0.0:8000", http=True)

print("Server running on http://localhost:8000. Press Ctrl+C to stop.")
try:
    while not shutdown_requested:
        mgr.poll(100)
    print("Shutting down...")
finally:
    mgr.close()

Serve Static Files

import signal
from cymongoose import Manager, MG_EV_HTTP_MSG

shutdown_requested = False

def signal_handler(sig, frame):
    global shutdown_requested
    shutdown_requested = True

def handler(conn, event, data):
    if event == MG_EV_HTTP_MSG:
        conn.serve_dir(data, root_dir="./public")

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

mgr = Manager(handler)
mgr.listen("http://0.0.0.0:8000", http=True)

try:
    while not shutdown_requested:
        mgr.poll(100)
finally:
    mgr.close()

WebSocket Echo Server

import signal
from cymongoose import Manager, MG_EV_HTTP_MSG, MG_EV_WS_MSG

shutdown_requested = False

def signal_handler(sig, frame):
    global shutdown_requested
    shutdown_requested = True

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

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

mgr = Manager(handler)
mgr.listen("http://0.0.0.0:8000", http=True)

try:
    while not shutdown_requested:
        mgr.poll(100)
finally:
    mgr.close()

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
  • listen(url, handler=None) - Create a listening socket
  • 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.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 232 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 (232 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 (232/232 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.

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.8.tar.gz (567.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.8-cp313-cp313-win_amd64.whl (210.4 kB view details)

Uploaded CPython 3.13Windows x86-64

cymongoose-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (254.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cymongoose-0.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (246.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cymongoose-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (217.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cymongoose-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl (248.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cymongoose-0.1.8-cp312-cp312-win_amd64.whl (210.8 kB view details)

Uploaded CPython 3.12Windows x86-64

cymongoose-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (254.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cymongoose-0.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (247.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cymongoose-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (218.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cymongoose-0.1.8-cp312-cp312-macosx_10_13_x86_64.whl (248.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cymongoose-0.1.8-cp311-cp311-win_amd64.whl (214.6 kB view details)

Uploaded CPython 3.11Windows x86-64

cymongoose-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (258.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cymongoose-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (250.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cymongoose-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (219.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cymongoose-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl (246.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cymongoose-0.1.8-cp310-cp310-win_amd64.whl (214.5 kB view details)

Uploaded CPython 3.10Windows x86-64

cymongoose-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (259.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cymongoose-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (250.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

cymongoose-0.1.8-cp310-cp310-macosx_11_0_arm64.whl (219.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cymongoose-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl (245.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file cymongoose-0.1.8.tar.gz.

File metadata

  • Download URL: cymongoose-0.1.8.tar.gz
  • Upload date:
  • Size: 567.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.8.tar.gz
Algorithm Hash digest
SHA256 7483637826bb265b8838d4e43e24f17e687c83bedc2bb81274d3f80087e7b3ed
MD5 c792f0a35ca17be4f602b29eb408f946
BLAKE2b-256 ef9074daf2bd47e585f4c77f08085430f19e2008e5061e87bd8bd18f93ad1c19

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cymongoose-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 210.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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 80b14a673ac11f010602cfadb19c6a1fd14b4975aee75cd5768937e2b99a807b
MD5 8ae347de8846834f936927ff1c5c3cdf
BLAKE2b-256 ab108d203fdf1581c3ea12299a7af5983d020a182939dbe92838df8a5f7a8327

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b583b3e6e5d4545c5ff1972d2a3a541aca1d98f702142cb93dfebbedd402b3c4
MD5 fb87ca7a6b363c8d0c0f4e1732ced720
BLAKE2b-256 c74b2ff846a9fecc8c8744bc504f4f4c2b3c60c7f9e886c3be27f5d88d371d2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe9a3985b792bcf54c28ce5aaeb1c6a25b816309535a7cb7842125162d08f2eb
MD5 09c467ad23b2e9494d21ae1f74a7a954
BLAKE2b-256 f360ebbdc2ddb9ce56b9ae3c84953306e328ea553e8e641c3e4b5cb305a2a167

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0a163a541a6ce4b2b60cd95cde47f8a380fe8ef53a332f2b523dd3371f520ad
MD5 c4e6507259409db73b7d1964e071af3c
BLAKE2b-256 eb489001f584179bfa5bf4ddc98535a856b1eaaac181db519885ccca7519ece3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 164d0b9ab198e9b4c9f5065826dda487def557c243be58f5cd1343d138271cd9
MD5 dbebe9232811b41e5a3eac113ba10682
BLAKE2b-256 5d9e6ccd634eb198a2e2c9454376eb2750b914700d5233c159ba67829775eace

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cymongoose-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 210.8 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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cac79f9b173e4ea1fd85cbc472db7afab001aa6b472235851fd9954bdf4f013d
MD5 fbd2b199a295b1cb20e773ea9766c49e
BLAKE2b-256 8bbe14ae9836e4421e1cdde6428c95f8d5b146dee53d22b5b17d74dc560bec20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5fd0b1e00e6ae5528c030ad221091cbcbe7ecfdb1f2491731a0c286b6e1cea1e
MD5 16956990adc80198a969c0bfd006e48c
BLAKE2b-256 b3405679e2308e319084df4a75e684f22d7a2bbcda864f8fba144e8bde67941e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9b41c891ac2a9ea25c2f594ceb038710914719898cb66617a2ce4a49a85064ed
MD5 01144902c8fd08eb7a6bd049c2290c5f
BLAKE2b-256 1df320de0b6bf0def4aea382800f45af18717796defa4f477344176ba6a426bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfb05fd097f303eee2d233b3c46e693a569fd0db195f4c1f4b3567eedc752469
MD5 77844076ab5c89a74840a9f1019476cf
BLAKE2b-256 958bf5ceb2c4e8aa98379f57c64aa5cea61217578a4710464e8eb79be8be9b84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 19c75c7446148b9671a01a6b6393ecd7513efa8528e0b545d021eb403f04cd33
MD5 7d60024e977c88bf6eaaeceb4f041b09
BLAKE2b-256 47291e876f78db6fdcfec1fe6dc1de491b38281009888440b47e6c8169de35b4

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cymongoose-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 214.6 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 74f66921ef0e557b53a75a1e85bdbcd34fab14d6d9296721965bd1732914aa4a
MD5 a82de2fede3ae0624e4ade5bf4b1707d
BLAKE2b-256 6b4a5b1411c64d1461c4b2eecf86052657f065f70dbcb3eed54ac0e6ff83e84c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b35e51ca1fa7e8f34c1e741e318d10f691c8d809fae606ea19cb04f0377e321
MD5 b5bbcc9c6cb2dc57244d3a327a16e78b
BLAKE2b-256 f6516e06b903257bc04576b1f7d598bbd2754a61f1cde150dc6708751e1ae135

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f7513d0c48391fdccd921e12c1b309ca6c1f49c791385b1d2413b44b8502aa4
MD5 940136462ffa63b0c4acb780a1fa7220
BLAKE2b-256 befc30202105a4b25aebb05a825d82cf68a35100066bf5d981b119c2bfa0d3f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58992857f1e30a56195261e12f24505c099fe1741ae39d050c35b8880122de75
MD5 e82c67e0f87b2fd3fd24953c95f75f2c
BLAKE2b-256 c2586375115e8b6632350a25a6f4c4c50809ecf29a7c00030d4c4e75447b1b42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4132dabeea7b5c945436806b5cacbd6b76a12ef96d60f2c6d34418dfb67bf747
MD5 9f174d86173ae3666b7267aafd6750d3
BLAKE2b-256 52562e3c754927a7170dd92f3c2d8c9c41068f7b4dbdfc71d5a3321db4087b23

See more details on using hashes here.

File details

Details for the file cymongoose-0.1.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cymongoose-0.1.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 214.5 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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6241fd6b9b4e2c582dc66d2235223fac47e8b6e47878bcb638b94d44ff3fcd50
MD5 94645c632bcbd7c741a558defd7ac95f
BLAKE2b-256 2df8fdf4296ef891f5ae49a0e4f9d24f4b84e8711eb62452c15811a09bd63dcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04db736186487d51d7b3a318ac12070bf01d690dfa1612674d7c44bdcef78d4e
MD5 b6db6e78d8bc78f36ae9782f29d40cba
BLAKE2b-256 a1f645ff599306f85c7416b48f8c3725824a0f53fde8d259bf08b6873d473170

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 802a10d8651e3afe5a8bf26d51826c91313b83bc4c77c52b227cba5667d508af
MD5 f9bb52f7a4220b9b59e52ecdeb6eb654
BLAKE2b-256 5ec395d48312a2726cfa560dd947f643beb9ac9a9af05e7eeea47409012f8d50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e00c98a2cd6a68d352672fba8bbd9e12816a28a9d5acfdc54a73bf1b96d6501
MD5 c38da5b65f9e572064dc7a973991878c
BLAKE2b-256 b9ca74eb417bfd7f538a9cf3b32772dd83c94ea0077273e8730effa5b79dcfbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 110986e63d9e93b41ebc6d3cadb0a76f99a4143f0523e5f97e166ca4cd04cd34
MD5 115322f5f6a3ae08305f5d205785105f
BLAKE2b-256 e4cfba4ff9cda67e702c59715fd1deb8d1abd76cb7712e809acc8ceb564da971

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