Skip to main content

High-performance Python bindings for a Rust-based Kafka client

Project description

Prosody: Python Bindings for Kafka

Prosody offers Python bindings to the Prosody Kafka client, providing features for message production and consumption, including configurable retry mechanisms, failure handling strategies, and integrated OpenTelemetry support for distributed tracing.

Features

  • Kafka Consumer: Per-key ordering with cross-key concurrency, offset management, consumer groups
  • Kafka Producer: Idempotent delivery with configurable retries
  • Timer System: Persistent scheduled execution backed by Cassandra or in-memory store
  • Quality of Service: Fair scheduling limits concurrency and prevents failures from starving fresh traffic. Pipeline mode adds deferred retry and monopolization detection
  • Distributed Tracing: OpenTelemetry integration for tracing message flow across services
  • Backpressure: Pauses partitions when handlers fall behind
  • Mocking: In-memory Kafka broker for tests (mock=True)
  • Failure Handling: Pipeline (retry forever), Low-Latency (dead letter), Best-Effort (log and skip)

Installation

Prosody supports Python 3.8 and above, including free-threaded builds (3.13t, 3.14t). Install from PyPI:

pip install prosody-events

Quick Start

from prosody import ProsodyClient, EventHandler, Context, Message
import datetime

# Initialize the client with Kafka bootstrap server, consumer group, and topics
client = ProsodyClient(
    # Bootstrap servers should normally be set using the PROSODY_BOOTSTRAP_SERVERS environment variable
    bootstrap_servers="localhost:9092",

    # To allow loopbacks, the source_system must be different from the group_id.
    # Normally, the source_system would be left unspecified, which would default to the group_id.
    source_system="my-application-source",

    # The group_id should be set to the name of your application
    group_id="my-application",

    # Topics the client should subscribe to
    subscribed_topics="my-topic"
)


# Define a custom message handler
class MyHandler(EventHandler):
    async def on_message(self, context: Context, message: Message) -> None:
        # Process the received message
        print(f"Received message: {message}")
        
        # Schedule a timer for delayed processing (requires Cassandra unless mock: True)
        if message.payload.get("schedule_followup"):
            future_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(seconds=30)
            await context.schedule(future_time)
    
    async def on_timer(self, context: Context, timer) -> None:
        # Handle timer firing
        print(f"Timer fired for key: {timer.key} at {timer.time}")


# Subscribe to messages using the custom handler
client.subscribe(MyHandler())

# Send a message to a topic
await client.send("my-topic", "message-key", {"content": "Hello, Kafka!"})

# Ensure proper shutdown when done
await client.unsubscribe()

Architecture

Prosody enables efficient, parallel processing of Kafka messages while maintaining order for messages with the same key:

  • Partition-Level Parallelism: Separate management of each Kafka partition
  • Key-Based Queuing: Ordered processing for each key within a partition
  • Concurrent Processing: Simultaneous processing of different keys
  • Backpressure Management: Pause consumption from backed-up partitions

Quality of Service

All modes use fair scheduling to limit concurrency and distribute execution time. Pipeline mode adds deferred retry and monopolization detection.

Fair Scheduling (All Modes)

The scheduler controls which message runs next and how many run concurrently.

Virtual Time (VT): Each key accumulates VT equal to its handler execution time. The scheduler picks the key with the lowest VT. A key that runs for 500ms accumulates 500ms of VT; a key that hasn't run recently has zero VT and gets priority.

Two-Class Split: Normal messages and failure retries have separate VT pools. The scheduler allocates execution time between them (default: 70% normal, 30% failure). During a failure spike, retries get at most 30% of execution time—fresh messages continue processing.

Starvation Prevention: Tasks receive a quadratic priority boost based on wait time. A task waiting 2 minutes (configurable) gets maximum boost, overriding VT disadvantage.

Deferred Retry (Pipeline Mode)

Moves failing keys to timer-based retry so the partition can continue processing other keys.

On transient failure: store the message offset in Cassandra, schedule a timer, return success. The partition advances. When the timer fires, reload the message from Kafka and retry.

# Configure defer behavior
client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    defer_enabled=True,           # Enable deferral (default: True)
    defer_base=1.0,               # Wait 1s before first retry
    defer_max_delay=86400.0,      # Cap at 24 hours
    defer_failure_threshold=0.9,  # Disable when >90% failing
)

Failure Rate Gating: When >90% of recent messages fail, deferral disables. The retry middleware blocks the partition, applying backpressure upstream.

Monopolization Detection (Pipeline Mode)

Rejects keys that consume too much execution time.

The middleware tracks per-key execution time in 5-minute rolling windows. Keys exceeding 90% of window time are rejected with a transient error, routing them through defer.

# Configure monopolization detection
client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    monopolization_enabled=True,     # Enable detection (default: True)
    monopolization_threshold=0.9,    # Reject keys using >90% of window
    monopolization_window=300.0,     # 5-minute window
)

Handler Timeout

Handlers are automatically cancelled if they exceed a deadline:

client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    timeout=30.0,             # Cancel after 30 seconds
    stall_threshold=60.0,     # Report unhealthy after 60 seconds
)

When a handler times out, context.should_cancel() returns True and await context.on_cancel() completes. The handler should exit promptly. If not specified, timeout defaults to 80% of stall_threshold.

Configuration

Configure via constructor options or environment variables. Options fall back to environment variables when unset.

Core

Option / Environment Variable Description Default
bootstrap_servers / PROSODY_BOOTSTRAP_SERVERS Kafka servers to connect to -
group_id / PROSODY_GROUP_ID Consumer group name -
subscribed_topics / PROSODY_SUBSCRIBED_TOPICS Topics to read from -
allowed_events / PROSODY_ALLOWED_EVENTS Only process events matching these prefixes (all)
source_system / PROSODY_SOURCE_SYSTEM Tag for outgoing messages (prevents reprocessing) <group_id>
mock / PROSODY_MOCK Use in-memory Kafka for testing False

Consumer

Option / Environment Variable Description Default
max_concurrency / PROSODY_MAX_CONCURRENCY Max messages being processed simultaneously 32
max_uncommitted / PROSODY_MAX_UNCOMMITTED Max queued messages before pausing consumption 64
timeout / PROSODY_TIMEOUT Cancel handler if it runs longer than this 80% of stall threshold
commit_interval / PROSODY_COMMIT_INTERVAL How often to save progress to Kafka 1s
poll_interval / PROSODY_POLL_INTERVAL How often to fetch new messages from Kafka 100ms
shutdown_timeout / PROSODY_SHUTDOWN_TIMEOUT Shutdown budget; handlers run freely until cancellation fires near the end of the timeout 30s
stall_threshold / PROSODY_STALL_THRESHOLD Report unhealthy if no progress for this long 5m
probe_port / PROSODY_PROBE_PORT HTTP port for health checks (None to disable) 8000
failure_topic / PROSODY_FAILURE_TOPIC Send unprocessable messages here (dead letter queue) -
idempotence_cache_size / PROSODY_IDEMPOTENCE_CACHE_SIZE Global shared cache capacity across all partitions. Set to 0 to disable the entire deduplication middleware (both in-memory and Cassandra tiers). 8192
idempotence_version / PROSODY_IDEMPOTENCE_VERSION Version string for cache-busting dedup hashes "1"
idempotence_ttl / PROSODY_IDEMPOTENCE_TTL TTL for dedup records in Cassandra 7d (604800 seconds)
slab_size / PROSODY_SLAB_SIZE Timer storage granularity (rarely needs changing) 1h
message_spans / PROSODY_MESSAGE_SPANS Span linking for message execution: child (child-of) or follows_from child
timer_spans / PROSODY_TIMER_SPANS Span linking for timer execution: child (child-of) or follows_from follows_from

Producer

Option / Environment Variable Description Default
send_timeout / PROSODY_SEND_TIMEOUT Give up sending after this long 1s

Retry

When a handler fails, retry with exponential backoff:

Option / Environment Variable Description Default
max_retries / PROSODY_MAX_RETRIES Give up after this many attempts 3
retry_base / PROSODY_RETRY_BASE Wait this long before first retry 20ms
max_retry_delay / PROSODY_RETRY_MAX_DELAY Never wait longer than this 5m

Deferral (Pipeline Mode)

Option / Environment Variable Description Default
defer_enabled / PROSODY_DEFER_ENABLED Enable deferral for new messages true
defer_base / PROSODY_DEFER_BASE Wait this long before first deferred retry 1s
defer_max_delay / PROSODY_DEFER_MAX_DELAY Never wait longer than this 24h
defer_failure_threshold / PROSODY_DEFER_FAILURE_THRESHOLD Disable deferral when failure rate exceeds this 0.9
defer_failure_window / PROSODY_DEFER_FAILURE_WINDOW Measure failure rate over this time window 5m
defer_cache_size / PROSODY_DEFER_CACHE_SIZE Track this many deferred keys in memory 1024
defer_store_cache_size / PROSODY_DEFER_STORE_CACHE_SIZE Maximum deferred store cache entries per Cassandra defer store 8192
defer_seek_timeout / PROSODY_DEFER_SEEK_TIMEOUT Timeout when loading deferred messages 30s
defer_discard_threshold / PROSODY_DEFER_DISCARD_THRESHOLD Read optimization (rarely needs changing) 100

Monopolization Detection (Pipeline Mode)

Option / Environment Variable Description Default
monopolization_enabled / PROSODY_MONOPOLIZATION_ENABLED Enable hot key protection true
monopolization_threshold / PROSODY_MONOPOLIZATION_THRESHOLD Max handler time as fraction of window 0.9
monopolization_window / PROSODY_MONOPOLIZATION_WINDOW Measurement window 5m
monopolization_cache_size / PROSODY_MONOPOLIZATION_CACHE_SIZE Max distinct keys to track 8192

Fair Scheduling (All Modes)

Option / Environment Variable Description Default
scheduler_failure_weight / PROSODY_SCHEDULER_FAILURE_WEIGHT Fraction of processing time reserved for retries 0.3
scheduler_max_wait / PROSODY_SCHEDULER_MAX_WAIT Messages waiting this long get maximum priority 2m
scheduler_wait_weight / PROSODY_SCHEDULER_WAIT_WEIGHT Priority boost for waiting messages (higher = more aggressive) 200.0
scheduler_cache_size / PROSODY_SCHEDULER_CACHE_SIZE Max distinct keys to track 8192

Telemetry Emitter

Prosody emits internal lifecycle events (message dispatched/succeeded/failed, timer scheduled/fired, producer sends) to a Kafka topic for observability:

Option / Environment Variable Description Default
telemetry_topic / PROSODY_TELEMETRY_TOPIC Kafka topic to produce telemetry events to prosody.telemetry-events
telemetry_enabled / PROSODY_TELEMETRY_ENABLED Enable or disable the telemetry emitter true

Cassandra

Persistent storage for timers and deferred retries (not needed if mock=True):

Option / Environment Variable Description Default
cassandra_nodes / PROSODY_CASSANDRA_NODES Servers to connect to (host:port) -
cassandra_keyspace / PROSODY_CASSANDRA_KEYSPACE Keyspace name prosody
cassandra_user / PROSODY_CASSANDRA_USER Username -
cassandra_password / PROSODY_CASSANDRA_PASSWORD Password -
cassandra_datacenter / PROSODY_CASSANDRA_DATACENTER Prefer this datacenter for queries -
cassandra_rack / PROSODY_CASSANDRA_RACK Prefer this rack for queries -
cassandra_retention / PROSODY_CASSANDRA_RETENTION Delete data older than this 1y

Liveness and Readiness Probes

Prosody includes a built-in probe server for consumer-based applications that provides health check endpoints. The probe server is tied to the consumer's lifecycle and offers two main endpoints:

  1. /readyz: A readiness probe that checks if any partitions are assigned to the consumer. Returns a success status only when the consumer has at least one partition assigned, indicating it's ready to process messages.

  2. /livez: A liveness probe that checks if any partitions have stalled (haven't processed a message within a configured time threshold).

Configure the probe server using either the client constructor:

client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    probe_port=8000,  # Set to None to disable
    stall_threshold=15.0  # Seconds before considering a partition stalled
)

Or via environment variables:

PROSODY_PROBE_PORT=8000  # Set to 'none' to disable
PROSODY_STALL_THRESHOLD=15s  # Default stall detection threshold

Important Notes

  1. The probe server starts automatically when the consumer is subscribed and stops when unsubscribed.
  2. A partition is considered "stalled" if it hasn't processed a message within the stall_threshold duration.
  3. The stall threshold should be set based on your application's message processing latency and expected message frequency.
  4. Setting the threshold too low might cause false positives, while setting it too high could delay detection of actual issues.
  5. The probe server is only active when consuming messages (not for producer-only usage).

Advanced Usage

Pipeline Mode

Pipeline mode is the default mode. Ensures ordered processing, retrying failed operations indefinitely:

# Initialize client in pipeline mode
client = ProsodyClient(
    mode="pipeline",  # Explicitly set pipeline mode (this is the default)
    group_id="my-consumer-group",
    subscribed_topics="my-topic"
)

Low-Latency Mode

Prioritizes quick processing, sending persistently failing messages to a failure topic:

# Initialize client in low-latency mode
client = ProsodyClient(
    mode="low-latency",  # Set low-latency mode
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    failure_topic="failed-messages"  # Specify a topic for failed messages
)

Best-Effort Mode

Optimized for development environments or services where message processing failures are acceptable:

# Initialize client in best-effort mode
client = ProsodyClient(
    mode="best-effort",  # Set best-effort mode
    group_id="my-consumer-group",
    subscribed_topics="my-topic"
)

Event Type Filtering

Prosody supports filtering messages based on event type prefixes, allowing your consumer to process only specific types of events:

# Process only events with types starting with "user." or "account."
client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    allowed_events=["user.", "account."]
)

Or via environment variables:

PROSODY_ALLOWED_EVENTS=user.,account.

Matching Behavior

Prefixes must match exactly from the start of the event type:

✓ Matches:

  • {"type": "user.created"} matches prefix user.
  • {"type": "account.deleted"} matches prefix account.

✗ No Match:

  • {"type": "admin.user.created"} doesn't match user.
  • {"type": "my.account.deleted"} doesn't match account.
  • {"type": "notification"} doesn't match any prefix

If no prefixes are configured, all messages are processed. Messages without a type field are always processed.

Source System Deduplication

Prosody prevents processing loops in distributed systems by tracking the source of each message:

# Consumer and producer in one application
client = ProsodyClient(
    group_id="my-service",
    source_system="my-service-producer",  # Must differ from groupId to allow loopbacks; defaults to groupId
    subscribed_topics="my-topic"
)

Or via environment variable:

PROSODY_SOURCE_SYSTEM=my-service-producer

How It Works

  1. Producers add a source-system header to all outgoing messages.
  2. Consumers check this header on incoming messages.
  3. If a message's source system matches the consumer's group ID, the message is skipped.

This prevents endless loops where a service consumes its own produced messages.

Message Deduplication

Prosody automatically deduplicates messages using the id field in their JSON payload. Messages with the same ID and key are processed only once.

Deduplication uses a two-tier architecture:

  • Global in-memory cache: A single LRU cache shared across all partitions in the process. Because it is shared, it survives partition reassignments within the same process, reducing duplicate work during rebalances.
  • Cassandra-backed persistent store: Deduplication records written to Cassandra survive process restarts and cross-instance rebalances, providing durable protection against duplicates.
# Messages with IDs are deduplicated per key
await client.send("my-topic", "key1", {
    "id": "msg-123",  # Message will be processed
    "content": "Hello!"
})

await client.send("my-topic", "key1", {
    "id": "msg-123",  # Message will be skipped (duplicate)
    "content": "Hello again!"
})

await client.send("my-topic", "key2", {
    "id": "msg-123",  # Message will be processed (different key)
    "content": "Hello!"
})

The entire deduplication middleware (both the in-memory cache and the Cassandra-backed persistent store) can be disabled by setting idempotence_cache_size=0:

client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    idempotence_cache_size=0  # Disable deduplication entirely
)

Or via environment variable:

PROSODY_IDEMPOTENCE_CACHE_SIZE=0

To invalidate all previously recorded deduplication entries (e.g. after a data migration), change idempotence_version:

client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    idempotence_version="2"  # All entries recorded under version "1" are ignored
)

The idempotence_ttl option controls how long deduplication records are retained in Cassandra (default: 7 days). Set this to match your expected message redelivery window:

from datetime import timedelta

client = ProsodyClient(
    group_id="my-consumer-group",
    subscribed_topics="my-topic",
    idempotence_ttl=timedelta(days=7)  # also accepts seconds as a float (e.g. 604800.0)
)

Timer Functionality

Prosody supports timer-based delayed execution within message handlers. When a timer fires, your handler's on_timer method will be called:

import datetime
from prosody import EventHandler, Context, Message

class MyHandler(EventHandler):
    async def on_message(self, context: Context, message: Message) -> None:
        # Schedule a timer to fire in 30 seconds
        future_time = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(seconds=30)
        await context.schedule(future_time)
        
        # Schedule multiple timers
        one_minute = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(minutes=1)
        two_minutes = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(minutes=2)
        await context.schedule(one_minute)
        await context.schedule(two_minutes)
        
        # Check what's scheduled
        scheduled_times = await context.scheduled()
        print(f"Scheduled timers: {len(scheduled_times)}")
    
    async def on_timer(self, context: Context, timer) -> None:
        print("Timer fired!")
        print(f"Key: {timer.key}")
        print(f"Scheduled time: {timer.time}")

Timer Methods

The context provides timer scheduling methods that allow you to delay execution or implement timeout behavior:

  • schedule(time): Schedules a timer to fire at the specified time
  • clear_and_schedule(time): Clears all timers and schedules a new one
  • unschedule(time): Removes a timer scheduled for the specified time
  • clear_scheduled(): Removes all scheduled timers
  • scheduled(): Returns a list of all scheduled timer times

Timer Object

When a timer fires, the on_timer method receives a timer object with these properties:

  • key (str): The entity key identifying what this timer belongs to
  • time (datetime): The time when this timer was scheduled to fire

Note: Timer precision is limited to seconds due to the underlying storage format. Sub-second precision in scheduled times will be rounded to the nearest second.

Timer Configuration

Timer functionality requires Cassandra for persistence unless running in mock mode. Configure Cassandra connection via environment variable:

PROSODY_CASSANDRA_NODES=localhost:9042  # Required for timer persistence

Or programmatically when creating the client:

client = ProsodyClient(
    bootstrap_servers="localhost:9092",
    group_id="my-application",
    subscribed_topics="my-topic",
    cassandra_nodes="localhost:9042"  # Required unless mock=True
)

For testing, you can use mock mode to avoid Cassandra dependency:

# Mock mode for testing (timers work but aren't persisted)
client = ProsodyClient(
    bootstrap_servers="localhost:9092",
    group_id="my-application",
    subscribed_topics="my-topic",
    mock=True  # No Cassandra required in mock mode
)

OpenTelemetry Tracing

Prosody supports OpenTelemetry tracing, allowing you to monitor and analyze the performance of your Kafka-based applications. The library will emit traces using the OTLP protocol if the OTEL_EXPORTER_OTLP_ENDPOINT environment variable is defined.

Note: Prosody emits its own traces separately because it uses its own tracing runtime, as it would be expensive to send all traces to Python.

Required Packages

To use OpenTelemetry tracing with Prosody, you need to install the following packages:

opentelemetry-sdk>=1.26.0
opentelemetry-api>=1.26.0
opentelemetry-exporter-otlp-proto-grpc>=1.26.0

Initializing Tracing

To initialize tracing in your application:

from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor

traceProvider = TracerProvider()
processor = BatchSpanProcessor(OTLPSpanExporter())
traceProvider.add_span_processor(processor)
trace.set_tracer_provider(traceProvider)

# Creates a tracer from the global tracer provider
tracer = trace.get_tracer(__name__)

Setting OpenTelemetry Environment Variables

Set the following standard OpenTelemetry environment variables:

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_SERVICE_NAME=my-service-name

For more information on these and other OpenTelemetry environment variables, refer to the OpenTelemetry specification.

Using Tracing in Your Application

After initializing tracing, you can define spans in your application, and they will be properly propagated through Kafka:

class MyHandler(EventHandler):
    async def on_message(self, context: Context, message: Message) -> None:
        with tracer.start_as_current_span("test-receive"):
            # Process the received message
            print(f"Received message: {message}")

Span Linking

By default, message execution spans use child (child-of relationship — the execution span is part of the same trace as the producer). Timer execution spans use follows_from (the execution span starts a new trace with a span link back to the scheduling span, since timer execution is causally related but not part of the same operation).

Both strategies are configurable via the message_spans / PROSODY_MESSAGE_SPANS and timer_spans / PROSODY_TIMER_SPANS options. Accepted values: child, follows_from.

Best Practices

🔥 ☢️ DANGER: NEVER SHARE EVENTHANDLER STATE ACROSS CALLS ☢️ 🔥

Your event handler class methods will be called concurrently. NEVER use mutable shared state across event handler calls, like setting instance variables. Sharing state can introduce subtle data races and corruption that may only appear in production. If you absolutely must use non-local mutable state, ensure that you know what you're doing and use appropriate synchronization primitives.

Ensuring Idempotent Message Handlers

Idempotent message handlers are crucial for maintaining data consistency, fault tolerance, and scalability when working with distributed, event-based systems. They ensure that processing a message multiple times has the same effect as processing it once, which is essential for recovering from failures.

Strategies for achieving idempotence:

  1. Natural Idempotence: Use inherently idempotent operations (e.g., setting a value in a key-value store).

  2. Deduplication with Unique Identifiers:

  • Kafka messages can be uniquely identified by their partition and offset.
  • Before processing, check if the message has been handled before.
  • Store processed message identifiers with an appropriate TTL.
  1. Database Upserts: Use upsert operations for database writes (e.g., INSERT ... ON CONFLICT DO UPDATE in PostgreSQL).

  2. Partition Offset Tracking:

  • Store the latest processed offset for each partition.
  • Only process messages with higher offsets than the last processed one.
  • Critically, store these offsets transactionally with other state updates to ensure consistency.
  1. Idempotency Keys for External APIs: Utilize idempotency keys when supported by external APIs.

  2. Check-then-Act Pattern:

  • For non-idempotent external systems, verify if an operation was previously completed before execution.
  • Maintain a record of completed operations, keyed by a unique message identifier.
  1. Saga Pattern:
  • Implement a state machine in your database for multi-step operations.
  • Each message advances the state machine, allowing for idempotent processing and easy failure recovery.
  • Particularly useful for complex, distributed transactions across multiple services.

Proper Shutdown

Always unsubscribe from topics before exiting your application:

# Ensure proper shutdown
await client.unsubscribe()

This ensures:

  1. Completion and commitment of all in-flight work
  2. Quick rebalancing, allowing other consumers to take over partitions
  3. Proper release of resources

Implement shutdown handling in your application using an asyncio event:

import asyncio
import signal
from prosody import ProsodyClient


async def main():
    # Create an event to signal when to shut down
    shutdown_event = asyncio.Event()

    # Set up signal handlers
    for sig in (signal.SIGTERM, signal.SIGINT, signal.SIGHUP):
        asyncio.get_running_loop().add_signal_handler(
            sig, lambda s=sig: asyncio.create_task(shutdown(shutdown_event, s))
        )

    client = ProsodyClient(
        bootstrap_servers="localhost:9092",
        group_id="my-consumer-group",
        subscribed_topics="my-topic"
    )

    # Subscribe to messages using your custom handler
    client.subscribe(MyHandler())

    # Wait for the shutdown event
    await shutdown_event.wait()

    # Unsubscribe
    await client.unsubscribe()


async def shutdown(event: asyncio.Event, signal: signal.Signals):
    print(f"Received signal {signal.name}. Initiating shutdown...")
    event.set()


if __name__ == '__main__':
    asyncio.run(main())

Error Handling

Prosody classifies errors as transient (temporary, can be retried) or permanent (won't be resolved by retrying). By default, all errors are considered transient.

Use the @permanent decorator to classify exceptions that should not be retried:

from prosody import EventHandler, Context, Message, permanent


class MyHandler(EventHandler):
    @permanent(TypeError, AttributeError)
    async def on_message(self, context: Context, message: Message):
        # Your message handling logic here
        # TypeError and AttributeError will be treated as permanent
        # All other exceptions will be treated as transient (default behavior)
        pass

Best practices:

  • Use permanent errors for issues like malformed data or business logic violations.
  • Use transient errors for temporary issues like network problems.
  • Be cautious with permanent errors as they prevent retries and can result in data loss.
  • Consider system reliability and data consistency when classifying errors.

Handling Task Cancellation

Prosody cancels tasks during partition rebalancing, timeout, or shutdown. During shutdown, handlers run freely for most of the shutdown_timeout before the cancellation signal fires — giving in-flight work time to complete. How you handle cancellation is critical:

  • Prosody interprets task success based on exception propagation.
  • A task that exits without an exception is considered successful.
  • Any exception signals task failure.

Best practices:

  1. Exit promptly when cancelled to avoid rebalancing delays.
  2. Use try/finally or context managers for clean resource handling.

Failing to follow these practices can lead to slower message processing due to delayed rebalancing.

Release Process

Prosody uses an automated release process managed by GitHub Actions. Here's an overview of how releases are handled:

  1. Trigger: The release process is triggered automatically on pushes to the main branch.

  2. Release Please: The process starts with the "Release Please" action, which:

    • Analyzes commit messages since the last release.
    • Creates or updates a release pull request with changelog updates and version bumps.
    • When the PR is merged, it creates a GitHub release and a git tag.
  3. Build Process: If a new release is created, the following build jobs are triggered:

    • Linux builds for x86_64 and aarch64 architectures.
    • MuslLinux builds for the same architectures.
    • Windows build for x64 architecture.
    • macOS build for aarch64 architecture.
    • Source distribution (sdist) build.
  4. Artifact Upload: Each build job uploads its artifacts (wheels or sdist) to GitHub Actions.

  5. Publication: If all builds are successful, the final step publishes the built artifacts to PyPI.

Contributing to Releases

To contribute to a release:

  1. Make your changes in a feature branch.
  2. Use Conventional Commits syntax for your commit messages. This helps Release Please determine the next version number and generate the changelog.
  3. Create a pull request to merge your changes into the main branch.
  4. Once your PR is approved and merged, Release Please will include your changes in the next release PR.

Manual Releases

While the process is automated, manual intervention may sometimes be necessary:

  • You can manually trigger the release workflow from the GitHub Actions tab if needed.
  • If you need to make changes to the release PR created by Release Please, you can do so before merging it.

Remember, all releases are automatically published to PyPI. Ensure you have thoroughly tested your changes before merging to main.

Administrative Operations

⚠️ Important Note: Topic management in production environments should typically be handled through GitOps using Strimzi KafkaTopic manifests. The AdminClient is provided for testing scenarios and specific cases where the data team requires manual topic creation and deletion.

AdminClient

The AdminClient provides administrative operations for Kafka topics:

from prosody import AdminClient

# Initialize admin client
admin = AdminClient(bootstrap_servers="localhost:9092")

# Create a topic for testing
await admin.create_topic(
    "test-topic",
    partition_count=4,
    replication_factor=1,
    cleanup_policy="delete",
    retention=datetime.timedelta(days=7)  # or retention=604800.0 (seconds)
)

# Delete a topic
await admin.delete_topic("test-topic")

Configuration Parameters

The AdminClient constructor accepts:

  • bootstrap_servers (str | list[str]): Kafka bootstrap servers (required)

Or via environment variable:

PROSODY_BOOTSTRAP_SERVERS=localhost:9092  # Single server
PROSODY_BOOTSTRAP_SERVERS=localhost:9092,localhost:9093  # Multiple servers

Topic Configuration Options

When creating topics, the following options are supported:

  • partition_count (int): Number of partitions (optional, uses broker default)
  • replication_factor (int): Replication factor (optional, uses broker default)
  • cleanup_policy (str): Cleanup policy such as "delete" or "compact" (optional)
  • retention (timedelta | float): Message retention time as timedelta object or seconds as float (optional)

These can also be configured via environment variables:

PROSODY_TOPIC_PARTITIONS=4                    # Number of partitions
PROSODY_TOPIC_REPLICATION_FACTOR=1           # Replication factor
PROSODY_TOPIC_CLEANUP_POLICY=delete          # Cleanup policy
PROSODY_TOPIC_RETENTION=7d                   # Retention as humantime string (7d, 2h 30m, etc.)

API Reference

ProsodyClient

  • __init__(**config): Initialize a new ProsodyClient with the given configuration.
  • send(topic: str, key: str, payload: Any) -> None: Send a message to a specified topic.
  • consumer_state() -> str: Get the current state of the consumer.
  • subscribe(handler: EventHandler) -> None: Subscribe to messages using the provided handler.
  • unsubscribe() -> None: Unsubscribe from messages and shut down the consumer.

AdminClient

  • __init__(**config): Initialize a new AdminClient with the given configuration.
  • create_topic(name: str, **config) -> None: Create a Kafka topic with optional configuration parameters.
  • delete_topic(name: str) -> None: Delete an existing Kafka topic.

EventHandler

An abstract base class for user-defined handlers:

class EventHandler(ABC):
    @abstractmethod
    async def on_message(self, context: Context, message: Message) -> None:
        # Implement your message handling logic here
        pass
    
    @abstractmethod
    async def on_timer(self, context: Context, timer: Timer) -> None:
        # Implement your timer handling logic here
        pass

Note: The on_message method may be called from different threads. Ensure that any handler state is thread-safe. If library incompatibility becomes an issue, this may be changed in the future so all handler calls originate from the same thread,

Message

Represents a Kafka message as a frozen dataclass with the following attributes:

  • topic: str: The name of the topic.
  • partition: int: The partition number.
  • offset: int: The message offset within the partition.
  • timestamp: datetime: The timestamp when the message was created or sent.
  • key: str: The message key.
  • payload: JSONValue: The message payload as a JSON-serializable value.

Context

Represents the context of a Kafka message, providing timer scheduling methods:

  • schedule(time: datetime) -> None: Schedules a timer to fire at the specified time
  • clear_and_schedule(time: datetime) -> None: Clears all timers and schedules a new one
  • unschedule(time: datetime) -> None: Removes a timer scheduled for the specified time
  • clear_scheduled() -> None: Removes all scheduled timers
  • scheduled() -> List[datetime]: Returns a list of all scheduled timer times
  • should_cancel() -> bool: Check if cancellation has been requested (includes timeout and shutdown)
  • on_cancel() -> Coroutine: Awaitable that completes when cancellation is signaled

Timer

Represents a timer that has fired, provided to the on_timer method:

  • key: str: The entity key identifying what this timer belongs to
  • time: datetime: The time when this timer was scheduled to fire

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

prosody_events-0.3.0.tar.gz (92.0 kB view details)

Uploaded Source

Built Distributions

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

prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded PyPymanylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp314-cp314t-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp314-cp314-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.14Windows x86-64

prosody_events-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp314-cp314-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp313-cp313t-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp313-cp313-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.13Windows x86-64

prosody_events-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp313-cp313-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

prosody_events-0.3.0-cp312-cp312-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.12Windows x86-64

prosody_events-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp312-cp312-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

prosody_events-0.3.0-cp311-cp311-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.11Windows x86-64

prosody_events-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp311-cp311-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

prosody_events-0.3.0-cp310-cp310-win_amd64.whl (7.4 MB view details)

Uploaded CPython 3.10Windows x86-64

prosody_events-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp310-cp310-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp39-cp39-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ ARM64

prosody_events-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosody_events-0.3.0-cp38-cp38-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

prosody_events-0.3.0-cp38-cp38-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

prosody_events-0.3.0-cp38-cp38-manylinux_2_24_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ ARM64

File details

Details for the file prosody_events-0.3.0.tar.gz.

File metadata

  • Download URL: prosody_events-0.3.0.tar.gz
  • Upload date:
  • Size: 92.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3326f7ed07e2567ab8d58cf9683a4cc6527c813569315a77b3b2b097421f1b97
MD5 8466474def5f9cb70d9b181a3e899683
BLAKE2b-256 21af6bb502976a6ef143361513ece6c2bdf522a716bf3965a39cc7966c4a95b1

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: PyPy, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c7011df13ff9053941c35bdc9e4d1d6444d244320718d44f53adf8a9f853bc2b
MD5 1c0807643a425ffc8bb1a4f93aef20ff
BLAKE2b-256 fe623c66eb94d8bf8e476dc06fda81557399fb3fb90d8dbd6b14862caa84f3fb

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: PyPy, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d3986dc3a91364d4fa654885cf63c4556b1e3b7caeb38dad53b0b2652065631b
MD5 63bcb059e722be20226d10ae40d93df2
BLAKE2b-256 c179becd445785f79c92452f15f466e25e4763a2be207a28a766991bf35ed62c

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: PyPy, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 ca7b4704c121831f222910a583b6b4ab75ac5769054bbc0f36073235ffd39e94
MD5 0fbb2cae73d24e7f582932980abc2f0a
BLAKE2b-256 e3709a9f35b5748a0a87e734578059e4f3e8604e97189284c2c43739a53ab479

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3444aefd696121c287898979e44fbc8baec52840347f5c5e5bd21008fd46e489
MD5 400dc145d4283e6fae2bb2d51ef9707c
BLAKE2b-256 a077019520a20e4496e78a5fbf4decad89912bfff236de675446eecb8b831ddf

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.15, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c81fe5441cae3a43adf2c358635b4e22eb15990e7507f80ff5dc029ffc7836c5
MD5 ea995495604e4d63b1611d41d1aac234
BLAKE2b-256 3883698ea8561b4c62abd240eeae6d743da5c2992a20ea15c3433a72a87894b7

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c47467229da072c9f5b32f0fd2b03e49d80677d2da5347fb5296aecffd45a0a1
MD5 debf37753f079f02a2af83c6ba377a62
BLAKE2b-256 5470ce75a5df72f72425391070c40a3f90e09124e2c3cb9baf602a860b78bad9

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 79b141730b95831824ff4182ec2e0e706cbc7c340961e543b50ea64cb4474989
MD5 42bd5f56b766174c98fe4c26ba284fde
BLAKE2b-256 edb1dde2c8aac1bb42bd0b8b7f8970d9990232b5a078e91f992e5820f12ad99f

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314t-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314t-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 1f9cf41c974cd556f8d13da34a0fb115111cefa82e0c4d43cb8901bd2719ec09
MD5 dab9580feeda6a1a46587968104589de
BLAKE2b-256 cf65bdcfc9dda0d93d5d7e0ef3dfc2d2e7f8acce62578988a70de7b6ee4756d3

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0f7c88db4650b0444d1bb077257e2543f69a8b894a7a2f3bf761f4b694e9a749
MD5 72dd06f4fe59de71c32359c33c524f2c
BLAKE2b-256 762855ef9820cc9e4d7a2dca8df5ceed5d88203eefc9e73a24f1aeb8d4b8f647

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c808c5eaea4a2bacb9ff9e38932dfd368cbe603f87c4e616d823d01bc7e13fa7
MD5 a542bb9e38dcc4cee7e6c150e5b38467
BLAKE2b-256 6a2e97fdf1d8127e53424053d2c26736ed57961647ba4e1d81f059453836d628

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b8019088dc140d56bdd89f5cb6f56ddd96ef9309206922508337ab80b883f312
MD5 bb12e46e85c6aa8059a7edd4180d5ffe
BLAKE2b-256 6bae98e11698d1d428afffe4b6a0b9cce711f8d3433e467d502289fe17dffb0b

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 b681aa03d88da3d83ac5adf94a1221ec21b2fed972560e05a94fe32db91c19ff
MD5 6db7c4652efa5987686af9007ed5f751
BLAKE2b-256 2d7023186c6e38798d93ea3ea2cd5ef495aedf677ad8c514df269ac4cd4141c2

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f50ae9ef13f0cc217b50e94d97cdb42f527aef2d44b0115afcfba3e0e5c740b9
MD5 e15f38e97fb1077e6578e0ad193324d3
BLAKE2b-256 44c3854d1c19f99f386fb991c9f3aad9a3dbd6e4e27b420a0dde16467154a025

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.6 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d4b2b96ad68f20d6efcf3d813ade74cd473c48d8093473659976236a7dad5e4
MD5 e8b933f281fe3e6f67008c686d53101d
BLAKE2b-256 0ab06c144d53313b942c23cd5184d83ee68905eb6594ed4bf5fceefce1dd6a4c

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c22a2b6550271bf83f572a46a8637472bedf502dad625e5f244491845f0a5a4
MD5 2e4c5a69f8ab4159e5f9def8c4793baf
BLAKE2b-256 8348606223ccf836fa37ccfc4d18175a835da594a55d6d623ee642aeb86917d7

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 423cfdc4453412a618c3bf9b9344a359f3bcc2e0173e1fa1da27d45bff05cf56
MD5 a0339c6f58a21eaf236bb0941f8b75fe
BLAKE2b-256 64a5d76f16cc8c9b8b7d19c02110028eca1351ac8b7a5af448db7bb7c6be778b

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313t-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313t-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 c57b25d48d52c33235c1af4cd0c08ec289227c7d2ea18fadc114dddbe51f9bcb
MD5 817a35c106196a2c86e0e511e0777b98
BLAKE2b-256 25d97455b277959778f7dc46cb57ce564ddf7b23390bc15508294375d03aa351

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 557a133bdb97be237b99730ecdace00b4c35fd6985ed1ad2a499acb4fd40998a
MD5 b44772afe22f261c9264a44b3fb9f557
BLAKE2b-256 8e6fee837b9ab665c620d0d050e44960887d051b32374abf31b829ad2a9b2b7b

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26fde6708447e8c7abcf7aae69fa9f0b01f9c50c1b8c42809477fdfca0387f6b
MD5 cca1bd3166ca2fe638d89a722e4f3768
BLAKE2b-256 1c5d78a1d7e07da4c6a70109de1702272398869caf2eb49fca3759e26ea8bf37

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bda483db3e5186392e853d9d1538718a84a745372091bd7280c76103628370cd
MD5 afac319388fda399a96e6ec29e83695d
BLAKE2b-256 9db098cbbc194ce5582bcc7237e781ab5d4ee2273907726537d43330280460e3

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 4d1005b9efcfe44c7b3feba5de7527678415cc35034df563232d2acad5a09c08
MD5 f4cb83c6c341fad3620ae918fe1e287e
BLAKE2b-256 6e5ce4e0d4cbc142473f8d56c869d6e83587cbb12d379e14c61fed19a407efac

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe22df3aaaa241c7f0c319c463f6045c5128245c5550ec63d89f6be94c409512
MD5 962a70458bcbe613849116b405353154
BLAKE2b-256 c18f0d517658ff04dc46ed8b3944861c57c9f249cba4774e73b2f239d7708f8d

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.6 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 220a5ccea409225c15ce5ac638ec99b7a02613a1dace236fa792440d8bd641c5
MD5 11d87b7092c9e10b80751feb938cd608
BLAKE2b-256 a3b030d5592a9cf491594419f714bfc0907ef1e2c58c7f5c84e18608a89f3bca

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9254bd9430696651f38a4ee965d46d44814fa6b5e45495f5d409315decbc1b7f
MD5 18f925dbb7f4d8cf05af14de01a89b10
BLAKE2b-256 ed64774da348b5152872c4ae555625ac3ce2e0dbb9c743948b6cc119e733bbfe

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9b3f8afcea97c1c80e5d9d58657071f12a8f561e6500006ef7146a181169cfa7
MD5 55f7325e253d8697f418d1c95c009b77
BLAKE2b-256 86dd44778f3d5bb778d947a8ae8f3ce2d66715960905515589825293ab0f30eb

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5ec444b123d1f149ad53d2cef7b087a8d18613e6a2569606237eae47d75c6a01
MD5 b138ea8855e729c5ed7bd534c1329cac
BLAKE2b-256 bc44fee95197bb3407714817c7b790ba44c19a82624a0ab6ad0ef13c27681c20

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 f6860604081e50161eb7fbc68043828824756a6ef0ea87b76d449c3fb937a6f3
MD5 ba3f7aeb0d83f3870b8651973eb2f9be
BLAKE2b-256 fc77ecb494be0f18dcaa5ddf25c70bff46e594fd8b8e2fb0d55a649270fe1a47

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 695569e1eaba3f506ecdb5a8370db57283a39c9afb3231345ea18554e2e51c24
MD5 1ed5b361b97d0d13011fb4c40de772a6
BLAKE2b-256 c731c67c652262974cc3df68ebc789d76dd5b8802942f8b89193f80ab3bb797e

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.6 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e57f515ee70dfb0bbf2bfd3b12d7528a91fe48fa241b66f01c4f35e86d9c56f8
MD5 31f7834448b3cc02926ab2cd0dd8ee6e
BLAKE2b-256 778ecf3cf316197d5df7a37d95f075088f133a6a532d99e3b9b75a744176c8a6

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cf7ec29961df36f5495a66e2c9e57585d71be424b743c6c0d4cf76c11d7a7590
MD5 804102d2ea43dafa37dce2c286e03a53
BLAKE2b-256 57e56e738aa55c49e51cdcd38a56b1f22f11516e10b0bdb5bf920718b22fbcb7

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a01e31409fd23276d787c2da999043565f6754e2d7230c123054d34ce2a1c80f
MD5 25f14adeafb4c65e3bd831c81528082b
BLAKE2b-256 ecd956e9a80bdc736bb9884c1ed0b85e1efbc893129859706222763c1737364d

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 18821b62861cb5044807e09119cfc7e99caeeed322ee634d990433fd022e7213
MD5 5373c4b5d58cbd3d1a41e8fc5e9dcd14
BLAKE2b-256 aeda18f1074b74a4d6a014896b24c999d6c2514cb59cb88161634624d1d8f274

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.11, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 d3864103cf948af575154f9642e59477cb6332164eb2941dd7700db87020183f
MD5 392ed917f3c541474a58881860316b50
BLAKE2b-256 5e600beae68491b3b445cd66162642816523aacb9800785814e5174dd900bd17

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68d64eb17d7ba389dccb18f8f804a558ab9e8a2e8dc9d161b8fdb44b41f67263
MD5 80ebda43958697d1e45590548669dfd8
BLAKE2b-256 576112226b837dbc19da94cb405c1f347cd6f0ecc10702a2f516f90d77cc9df9

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.6 MB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bb8db72cc9e47b47a3ad6e27edfdfa208d35a9d79a882c696b9c96bcad9a00e
MD5 fa3d3613b0a2fa976ef25713c42a7e7e
BLAKE2b-256 7e4e2c3f6e4dc023b3c47a01970fc4c88b93db885e987cdf3ae340fa86e4099b

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bef78f7e3bb7c95faebe73aa49e0b9393b6b20e017aa5d9a11c7b1c3393552a1
MD5 30450b2275274758902e9c63d240b7e7
BLAKE2b-256 862897876db48eeef3cc591f6fb353c83d1787b07e3344f9586e4edad47d6ad5

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c513e194d56ab629a06cd1de8c0c142773f923ac418ad16208e11fe54eccd9a1
MD5 8d28e1339e20a1e88ca3e5cd882c6c75
BLAKE2b-256 95971a4f6b44cfda4030b4ebe8b1fc211548e81396510c7a6faef4ef9596bc26

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 27e965c8e7b7b02c23fd7c1e5c9206ae98c28a7c8ed263af98586287b7d9547f
MD5 f7e120dbefaa1787dee9b808386a48b6
BLAKE2b-256 a61fc632b4138f944b2da741a47b81a429f24914e94c5aee2bc592124e26e96d

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp310-cp310-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp310-cp310-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.10, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp310-cp310-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 0aa8acd2fd95624d67c3680743b3b449094e89e7a8549c53f100959a11d4e0d8
MD5 6380c0f9bae0debfa7f02d357ae4a05c
BLAKE2b-256 477d114f01f6d6bd94850bdf5559252e8dabea4affdf6d94443b0a767897757d

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5fd53013272d3bf7329dfbaba920080ea878d7cfc7a62b74ad6c9c817a685dfd
MD5 21d7a9dbe209f7295a685d8e5a7b83ab
BLAKE2b-256 78af16d23dd9c2b2f8e037d99f7fc87556b1f422d7f5bad970527ae56e8e5b7e

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 848ff3bfc4664499053159c8877bbfeaca63c3128baa8fdd8cb38414723f1fae
MD5 6ef3881af0f6fd702369ff3615e96a72
BLAKE2b-256 3c21196acd3eff154fee29fe6442e022bf0eeea8c144ca0a407b51efd7de2f56

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7db310759b96d6dc773b7072cfa9e494933ae0ae839cfc90f38b509b158d65cc
MD5 abf89ae046fedd6e4ae2cf36807318d8
BLAKE2b-256 6f491d9a63c0159a899c4bb95201bf283a4e7b084644ddec00ada753e17a26b2

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp39-cp39-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp39-cp39-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp39-cp39-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 c209f8c9bc9b98b9c48b6a2684695fef3805a36893b130c838c5f416eaefb069
MD5 11a82c1a023dd0ff48b7ff21939ab79a
BLAKE2b-256 945253e1aa338fff2de5ab3cd9821e44849e6a3530ae3fbfa353b4c324e42594

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa98512abb94fe15507a9bec60f50bddc0b0f9da3363d6a1e67780698f63e5b3
MD5 355ff787c41d82ef7a19645f3c91c763
BLAKE2b-256 e5260c071d961da600c49e690b09345ad24494130faf689873d024d39abe64fd

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.5 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6e8400e5183cf7df75451b9c42556717ca9609736e1c81b1ba9ead5d87bdfd5
MD5 a04f0819089c1e28f3a59470cac97ae7
BLAKE2b-256 36bd892593beb34bcfd793e526d9e51bc1ed380ef4dd2823b84a8d1222f5617b

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp38-cp38-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a087df93b343b87245a26e4cfd3e5d4600a6f1a943429dc91afa2070d3071d44
MD5 f8483d954394a63c7e9769c4ba846ea1
BLAKE2b-256 e3a72478a4bf17027c72ebd1bd2d25896823de9df1749e6f04143406eaff0d2f

See more details on using hashes here.

File details

Details for the file prosody_events-0.3.0-cp38-cp38-manylinux_2_24_aarch64.whl.

File metadata

  • Download URL: prosody_events-0.3.0-cp38-cp38-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prosody_events-0.3.0-cp38-cp38-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 c5269734ac8aa2efc4903a32c6620ce719c0b4738f49e781a25b02cf3eaa73f4
MD5 797b5cf8bc7f89ac7fa61096aa31ac52
BLAKE2b-256 bf5e4e4355ce62a06233af9bc6ed3e156c03df30d22ad5406adc0f8bfd19c66b

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