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

This project is licensed under the GNU General Public License v2.0 or later (GPL-2.0-or-later), matching the Mongoose C library license. See LICENSE for details.

For use in proprietary/closed-source projects, a commercial Mongoose license from Cesanta is required.

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.10.tar.gz (574.0 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.10-cp313-cp313-win_amd64.whl (226.3 kB view details)

Uploaded CPython 3.13Windows x86-64

cymongoose-0.1.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cymongoose-0.1.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cymongoose-0.1.10-cp313-cp313-macosx_11_0_arm64.whl (231.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cymongoose-0.1.10-cp313-cp313-macosx_10_13_x86_64.whl (265.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cymongoose-0.1.10-cp312-cp312-win_amd64.whl (226.5 kB view details)

Uploaded CPython 3.12Windows x86-64

cymongoose-0.1.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cymongoose-0.1.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cymongoose-0.1.10-cp312-cp312-macosx_11_0_arm64.whl (231.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cymongoose-0.1.10-cp312-cp312-macosx_10_13_x86_64.whl (265.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cymongoose-0.1.10-cp311-cp311-win_amd64.whl (230.9 kB view details)

Uploaded CPython 3.11Windows x86-64

cymongoose-0.1.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (279.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cymongoose-0.1.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (269.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cymongoose-0.1.10-cp311-cp311-macosx_11_0_arm64.whl (234.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cymongoose-0.1.10-cp311-cp311-macosx_10_9_x86_64.whl (262.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cymongoose-0.1.10-cp310-cp310-win_amd64.whl (230.6 kB view details)

Uploaded CPython 3.10Windows x86-64

cymongoose-0.1.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (279.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cymongoose-0.1.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (270.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

cymongoose-0.1.10-cp310-cp310-macosx_11_0_arm64.whl (234.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cymongoose-0.1.10-cp310-cp310-macosx_10_9_x86_64.whl (262.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: cymongoose-0.1.10.tar.gz
  • Upload date:
  • Size: 574.0 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.10.tar.gz
Algorithm Hash digest
SHA256 493105335f20b91f45ffe12fb025d175f51afb1afd822d72f1e3a21564f2ce13
MD5 06b8c9f80aa34b49e01b9fd015fd71ea
BLAKE2b-256 5a4c50c2b0fd3345a7cd32c9f76928d23c4ce4d75bd93b8876d74a58ab5f9341

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 260e0691f779f573669d2d7e64987d75e6f0e52bd1a2904ad41fd31f59b37af7
MD5 09674166b562219cd16b8d70240e181b
BLAKE2b-256 4d4020dd5393e0ede73c33eb93eb312fd7e9b6cea2fbb02ad2b682e7bb9b71b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2dba9727fedc667ed0a70f9dbcf3cf25ac3c98291f05010ac26082c7c77c7559
MD5 6d04f5376aea6f410eee4eba5ba1da5c
BLAKE2b-256 89d4db5782113d087e69543cbc9e190aa8c4e7aa149904fb3ea07398dec9b583

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23c1584ec5b69d3e7c4f6e5f0688b35d28fb0f78e70113c6f9d0de458d7b8124
MD5 0b2680beea7fc8056260c2cb4c31fa21
BLAKE2b-256 78a12dba85e30e1f2457dde8b027a61aaa93dbec2bd192ee00a39cfb88e90f33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2b5890c9ba89204ebd9791636052b33bd31a4800f16b7dc7d3dde5359569340
MD5 976b6ed0a74dc803788f4d6f579d7e24
BLAKE2b-256 bd7d40ae8e41f59841e0ce2c2429608c9b5bf00bf563d3160fd81c4f9d72dd07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b33617fa5dbfd63a3233c3ba60e92a76c4fdbb32093d6c90b476e65536dfbc75
MD5 d22d34795bafb07d47a334f108e34f3d
BLAKE2b-256 92231c8a2329fc2dad92941ffc189b8ba5eb4f1957e5eddb35e3f08680f61713

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e54dc11639d779db125f77a2102178a89cc42cca47a8e137aa0de8fb5a9e35f2
MD5 2ee6c2905a2a7d0de94cdfabda288edf
BLAKE2b-256 ef7b97a4d2822313bfb0d802cd10ca9237e273dcd1e3f75b2807dcde3ff55746

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 86d9f9148d440ba6f60cbf5465c1ce6f5c1967af4a19362898917ec5d2536e1d
MD5 00273f7bfbedfe59a6aab81b2df8600b
BLAKE2b-256 9cad43a1a0d932f74b26d92b29bac4aa54cccdf80382c8e2e7390fd629df9e9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24dbf8953587f7f50980c6b29654eb6b4c58a5c598b8f0c6e304e8249501874c
MD5 7827884657f0bdc1ab2a40984abb38b4
BLAKE2b-256 588252bcde4dfe8b134eae26df79953132cdb5c69e092c0c3143f36637c3d50a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a00efbe570b4922d9f821328fe25d30c042a6db583e273601b7cb7d285b47c8
MD5 5517148948d74800034f1b071986f46b
BLAKE2b-256 32ec46edb87b4c450826bbc38f1ca1bc220f6c4aecfb80457110aa1f2dc2c6a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8c797b09969fc6f2e648e4da03f09d4cdf92666d38d08202c71a70442472fcda
MD5 3c3737ca81f9dc295001dd456585ff52
BLAKE2b-256 4d70eb0817b3a32164db97ececdb1ed77054920c56456df049fe10de8243da82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6ed4ca7670376a6af1bbc1c65ec0f007d851e953eb91387cc816e620f642ee0a
MD5 f7ecf7cbd1f8555256815518f59ea301
BLAKE2b-256 375aa584bbc99a8130ac74c45bf39c7bae4da9938ade3cbe505af560ef346fe8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d307201a28aea7e4b237ed27398baa80a8e818d05b1c56c17e6ac07c94083343
MD5 80e1aebe7aad85295ad6538e0a3f8409
BLAKE2b-256 7bf96a7ba0642748fd1fcfe64604037245ce96161cc151db4ec8d4f599af2aec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6c6cda1b88aab94e8f040bd0ae32aee87d315d61aa09d92ecb8b728e7213a559
MD5 c1d4e0d5d6e9402696d4757b55b62c1e
BLAKE2b-256 5cac4c1425750a85b62d134407a2463a717e18f6a9c43ec5ad9c35fccdbf885e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b99d6ee59b1f973098e46694adabf5d7bff1b76a90d49f3713a0a35b0b82a2d3
MD5 1271dc355dde34dd1c0be09207897498
BLAKE2b-256 4b1bd0b0d68ddbbc1d6c083ba697f8282201380dc84112602bd6fe014698b14d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4aa6fed210a86dbd4c2693402ca8e10bfeb0d8ee2a2d01ea08ce42b0a1aa3ce3
MD5 bbaa4709f2bd71567cc7a600801b7bad
BLAKE2b-256 f24554d6cf4f589e54b64e88870c06507f32eb62823af12f4332aca332dbd4c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b466fc9c00aebded5109e42655837c640c0be7bfa1b146de6cb98fb6adec3cde
MD5 2e260f34739e66ff79692b9d7ef30ba3
BLAKE2b-256 3d52b9c6850d31bd97df2fbd51023319dac15ee7928702c098048290bde018f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 272ce6ee743ba13a02a834037c9fddbcf88212e40f6c416403e5da7ece173fe0
MD5 882919f3b294c10d571e33c103d99a84
BLAKE2b-256 cb656a80d9c329b9a9416aef3f953b32e14eec38ab84cc127b3e99a377cb593c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e2f5457dceda5646696e80b70c77ab226445e7b7d8e0062633cb7e6fd0edd1e2
MD5 b31bb53f644f15f4e2625b1900714d5e
BLAKE2b-256 5f6b4aaa3c3858dc5aaeac68dbbfd3a932de66152cf2998a47e4e106b7cf5ca4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c113a03c2d91ac2922e9d15c3183990f8e2a0080ffda6bda0adb597b6a7358e7
MD5 87dce3faf86196ec53bf96009dd85127
BLAKE2b-256 80f869ac0f2c79d24ed127fcf0ba7bc790aa47f447627ce98848c66390ae7edf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cymongoose-0.1.10-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 55cbe7a97b9d39a15ac8f8d3904a95fd2acfc637d8d4542eb69244fae5bc93a4
MD5 45820fbd00a108181a7d6811e281f50c
BLAKE2b-256 addb2de5cfbda809fcfc74aacbd590ea30e1afa87a70beb2a513bbc65eef35a4

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