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_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.1.0.tar.gz (91.4 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.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

prosody_events-0.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

prosody_events-0.1.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded PyPymanylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp314-cp314t-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp314-cp314-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.14Windows x86-64

prosody_events-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp314-cp314-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

prosody_events-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp313-cp313t-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp313-cp313-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.13Windows x86-64

prosody_events-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp313-cp313-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

prosody_events-0.1.0-cp312-cp312-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.12Windows x86-64

prosody_events-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp312-cp312-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

prosody_events-0.1.0-cp311-cp311-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.11Windows x86-64

prosody_events-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp311-cp311-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

prosody_events-0.1.0-cp310-cp310-win_amd64.whl (7.0 MB view details)

Uploaded CPython 3.10Windows x86-64

prosody_events-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp310-cp310-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp39-cp39-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp39-cp39-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

prosody_events-0.1.0-cp38-cp38-musllinux_1_2_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

prosody_events-0.1.0-cp38-cp38-musllinux_1_2_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

prosody_events-0.1.0-cp38-cp38-manylinux_2_24_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ ARM64

prosody_events-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: prosody_events-0.1.0.tar.gz
  • Upload date:
  • Size: 91.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0.tar.gz
Algorithm Hash digest
SHA256 7c0a52894d704381c4a0207db0871b8c2452a31029fd2aa34dd800fa3ecb00f9
MD5 cd420d3fe71bbc77dcc26a12f1ea2e12
BLAKE2b-256 edea3387787401965755fadda4ff8e571b5ba9b4e51cbf28ff681fe7719a118f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: PyPy, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73b9487e74cfc877742972bd78b84949248e760bf2ef8ca486769848d3627316
MD5 95dfdc4a225b2ac2546839b542f47b18
BLAKE2b-256 9d22cc38ad1797d494195a873c86e9d0992e0465563652b3358c8992db0f35b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: PyPy, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 48d70681235de48d41511019857c9efb34beaa4fe90ff0bd2a31e786b434803d
MD5 500a1ef0ce69754701913ad6907069e3
BLAKE2b-256 79e82696bc76bbfe27661331d79be13be9c737bca882838132c9a21a0d720d0f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: PyPy, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 fa904f67fc65f90db6f97bcf235eeecdc678a5b2068c0f5fb0eeb5c664d8d52a
MD5 c239e95a40bc0bc0c93705e905f22889
BLAKE2b-256 eaa864e3b7ebfb12023d3c6a08e8323189535cbb8c8b01cf320a43c275bbc600

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 defd4b811e3b87da12decdf1f00d20e1e1053b2c266418d69d483ca7b06f64ce
MD5 c43c7ea4c5944535e0a0346f6e92e32b
BLAKE2b-256 24b0b907aa8f18f7e448f833761a48c1f588b8585925862a29a8c7e7f235ab72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 010f8d6e660999985a23d55eac85f3cbe50595269b97bfbcdc412579236c32b9
MD5 1f5584515649e1d61ab2aa31358aee8c
BLAKE2b-256 cd2afe77862e9b7612715a310755cb2ef04c392f8ef8b3a3cf022c02eeba3f01

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0ed78e8df8862a3259fa2d19ada85e6cac598decab8fb487a1ea48b2fc10be3b
MD5 cf5e643fb3097784e70817e582cd48e2
BLAKE2b-256 a039e5a718e0e7f095328722e44151db4153b3b59587a52a96d09e3dd0a96f4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314t-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 578f33d6854ac0878df2f5ed2d1dee7bc8ec97f79032d2d72b6450f4f4267e49
MD5 f552224b32fffe1a2d0bbe4d839ecab8
BLAKE2b-256 0a37e9b687312c4b5e8d09fe851fd68805b1779212545f318ace4f63b236264a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b34fb5ad7a2d913b0f210ddc6128a09bd9096a2d1d7a83cad503ed69eadb6411
MD5 c31e4a8469b69b4328977c138d7de918
BLAKE2b-256 4d18c99cc5fdb236cfa1845effbd39269a7fe70423102741505cbe7a874d5824

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5078b74d2c8627f22d48596b3649748cbcf6eacad9d4e29fd25df59eaa6dd074
MD5 aa55c5c730fac3288dbf42b94c6c9a00
BLAKE2b-256 c5ed5a449d5d899b5eaa098f6699ccdf4c752d7e99cafb67157d8eded6c73f52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 384c69941b775fa1c433fed51449fa364b08bbd74e445dcf35f95f11cb9de4da
MD5 83bc7928c3471f2ba47f64421fd8fbdb
BLAKE2b-256 5c6fdc89af9ecc721c6afd998cfda260bfda20bfc34f130dd3d480b5103438ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.14, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 bc9839d140443ea44165c03365ad9667be3b466a6157573d0c0b82759dbc5c0a
MD5 ffd0a4e2322833a10a53b788c74a14e1
BLAKE2b-256 a760aa40c27ae44bd5b1eec406d1b6a53caf9c123fbd03ef1dfd572405d34db8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c274d84448f7ec6dfc06d3b6b58985342a3f3427aa9efc3f37e366a33082b98
MD5 1f61599e3898219a4af72d463a0ab50b
BLAKE2b-256 29edf2a1f887febf0724538cee159018854884c5817407a943d55bc17548b2cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a2a533ff7e3c782f51a5bae3ce7bd8019042c56c9f9684106344cb8dd26a629
MD5 3f90f28ef61a262fbe217ea3de44cfc7
BLAKE2b-256 0997c942145bfff141e53241352f69fee4fa7052faf457dd1f13428fc5bcf835

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4573c87d5fe45f98d5e3305b07e0355c351ebd085f1d35c6c11b261cf9643a60
MD5 15f616568d671c6b8fda85b11b6a48be
BLAKE2b-256 59714b24f719c4e4727faf4f1ed635b0faf60c5f36e8508c38eaeb8981ab428a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d1001287143aa62297946a8a7b12334687a20e5f27cb70d5a63af09693de01c8
MD5 206256cdc94d935f1d0d92cbe04773f9
BLAKE2b-256 e024530d980893a2072ac74ff8d097a35573050145c1943812d3996ce7c62466

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313t-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 e11c26c391f3218f06b294decc1308ab2115f6d3d111f56cecb01af269f22ef0
MD5 f71f94bb338f506558b9dd21ad086cd6
BLAKE2b-256 41bf0b526b489eaa4da9d3a61f4dba683dfafbe2e94d06b26fa217c75eb9bf77

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a6e26d8688a6026b00a8da4c8b91c99e91eef3c70a57c6a746ade51bbfe9462e
MD5 d27fc2d8ff2d70b7b9f1aa15a0cf289c
BLAKE2b-256 55bd79ec185d62b76f7d0d69fb28617fd55e8a57d9707fe7e25668205cc2d00d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b81af34f3d2835fd9ee4d1c85bbb6d92952278e0c9cec0b8f9c3ccf422cb241
MD5 60278760d494a105af00426fc06d493e
BLAKE2b-256 805dc9c770383420d6be9ecbab9242de00b970e7c3bd041ab01a8b04f1dd0aa2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5003b834a044ecff6fa68a831f9dd737f311919aaf471a22f4dc6f1f2b1acd10
MD5 d584589ebc0f314345e88ef7a061fa00
BLAKE2b-256 32ecce10815e986b74ec0a724cd9f42ac6447f472c571ff1e95012130b5d7461

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 2d964f73e0cb586cb5bb1ab5dd89567483448b1935e7bbabd883aba2f075a578
MD5 65704c81b78d9b6837b53fa9a52db173
BLAKE2b-256 a1fc14cd43ab916f0adf6024a0530ce8a09c0ee435dc3b28f76e5aa52f36c23a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be3067fdbdde6a80bb40bac16d48cce3e4acace7c31a3374813d7b4495259aa9
MD5 7c04fababd4d424ebb3c2d66cdba9b26
BLAKE2b-256 ec328b3799d3777dab27f9cfd11a83d8181f356f2774c97f6d09fef0b2d92a63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff8dd6f3634a08655036e907bf1f63be809b3730abaa6facb8a4fae168b6c8cf
MD5 9d91b0d0c793c574b4f9b5829efe996b
BLAKE2b-256 f977cbdab5e65f253231cee26decce341e8ecc9912c8c642afc8c015ab89ee76

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 709e1112f1d6b2812e3fd1f9e7232370fabc30e2446b2507b73a1b371c8c7b4c
MD5 e1b8e1530b7def14052cd322d105f5e5
BLAKE2b-256 7520f0b4472bc6391b1da365dddc4d1d92de0ec69cc50e62d66b848cd87832b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc7cdde110d245c2ec12220fe5524a600a9af2fa9ca1340a14d882547ceb05c5
MD5 800e8cb30617315212b3138e30e6deee
BLAKE2b-256 e13d5574923920f35316027adcfb8d03f51e72b50cc702b6de8d058be3320188

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5c3b469efbb7311d745a0051316f79fc9ff48c9a68b3581b8602db55c0422948
MD5 9b57d8b6810eff8fcd0fa0b9b67a63bb
BLAKE2b-256 a1775607eab77066df69a2159f3021c60be4e42d7c3cb58c2d014ebe9abb59a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.12, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 f7a56b39e37625033a4cfddc1aecda714b6374a04e677818cfc505fbff21f7b3
MD5 488f3d58ed6f71fe1aaac826ff8978ef
BLAKE2b-256 026d49ec15738bb6aa107e0a9788913b49c1393c0b96ac09ac74d8b1cb44381d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 49227e7fba5cd8de0646a6da5480a9bd8f61a43de79a1cb335459a5f2107e33e
MD5 9bcb162109fa9835bdb2cf037e22eda3
BLAKE2b-256 a98c955bb4818a3daa6cc29ba8c4d0a60e1105b0327d5ec3130e33e57b3b4458

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 878bce84e2d8e5f8cf20ab5830313d70e4a250e411f40c467ac28cb241ba7aa1
MD5 e6f91d76b56e6c37e74b979d74284c6b
BLAKE2b-256 fadd99ad0ef7b2df82fbd9fc46643ca52e678ac6ac0c8cff37ce9e0a2c511588

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e1fae362cfd324200b3bd2469cc7a2b9e952f5456d58f448d1040a5f10099268
MD5 be6e4f8f9bf08deab1124caeeeba55df
BLAKE2b-256 142db29d5edc8ecfad2a657433fb3edb74e791acba9b4d695899daa2cc2927c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9943190bccd4d3a6797015c71283066b870abed089d7ad563b885bb3a563e859
MD5 ab2a40d8c9f62814878918cae455e34b
BLAKE2b-256 77e73cb0f0e83462ddbe2645f27cd4e82438af82d2c1ead6af1569b3b07c6a1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2e5eecb1bc57782988d86aeee1ad4253e1983de7f0b021e812a71523ecaba0ca
MD5 7da43679917bd47d2f2d8494927545c6
BLAKE2b-256 c0ec6c3c301526e1db4d800c339fcc98ab739dc09dccfa60d8e100792e316d3e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.11, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 ec69e41f9a8cfb34a4469879d2948f828453c1b62f345ca0d93bc2eacf01601e
MD5 93b90bb16c62f5e3227fba4ed2721d92
BLAKE2b-256 0894e1ee8bf3ca3256d95fb6f8f99d41f8272416afeddcf80ff77c7b0fd62470

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 657d92d39b793a205208829de4b506c14e5538d5eead0947fe6f2f65c30705b7
MD5 f9d84f7f494b955d43266ad9509d222d
BLAKE2b-256 9c1d0a7b3ad700a2363d453d49c0ebf851b823950b639263f8ca6b240b4a5eb8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b18708ee63df954d69ef8e2dbf4902c85ae2c4a02c3f8cf275f6394f8c22a84
MD5 b4974008d879bbfbac6ddb8fc369ba2e
BLAKE2b-256 bf0bd54523e6b17a62fe266fcdd950335562eb8ed393afed8e70ce361a5c8c72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 7.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6d1f7342829d6c597f0dd9ddb75b7e115afdc34df2419e3977a54500c4495d3a
MD5 3855f281383ff7714e90db0da0da24c5
BLAKE2b-256 e5804c5ce2dc5e757dd72a66c10309ca7ada7178b1808e78686a5293f41f70e0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a1cbe83a3bca8c10030857f7517d88e625ccd297bfbd688f16230332e6eb38e9
MD5 75ef1aa61aa949a01a31a7b4e06db78e
BLAKE2b-256 e9d223bb8779a5d8e12f176dd46a090636f5c7ce7bb9a5d4b166d06706e57c0c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 69eab36f50c1d0dd39ea90c26d9534703e0727bcf54a2cef01bfcba55df3e1b5
MD5 9bec52df9893196656e3ea3db2151788
BLAKE2b-256 3cd5f7049377aeb823f586e20f0fe5805f444c8c7e2cd4ea50166b106744f06b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp310-cp310-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.10, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp310-cp310-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 6c51dc9ccd252d0e58aeb5ba4440f4d39a3d8c4f2bdd216528b555790219f361
MD5 8c4d75c2cdf0d1bae7573a5305749bbd
BLAKE2b-256 768fc5b980489db0ccb8d192c8f2871a2733097e97c8d498c7fb2f56abb0aea5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d04e9afbd5fd0fb4d65ec54d9ffc2b6fe25dbe22b4307ad590e626a857ae1f32
MD5 cd92b52fdd59ce0076dbb8bba73e4276
BLAKE2b-256 00ad939f98884292eea277134fd1effe90c9372263eee353f76afcd285c574ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c3040e234044adb9e90b927084bdfba67106dc6482d61f35a06f9f0f32a717eb
MD5 0006b7f1a51f1e0f391fb6cc52c357bc
BLAKE2b-256 ddfd4ec7f6789dcc76cefa64281ddf3768e7cb6ef0d7e1e33ae21170a2ec0bae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp39-cp39-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fd822ff97c67ba830551bbc4bc5d916bdff5ebb87c01b1ef99a77ef8a16c2993
MD5 fdf1ee9cf987220af14cd8ec0a71894e
BLAKE2b-256 3b863e587393394fb8c059c7037a20f273b0175bd164adef05c34230c6307ed1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp39-cp39-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp39-cp39-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 a6675112e6a23cb10b2fe1eb54c46536753e3cd7c464f9203c57a9b5e2740fd9
MD5 029ed32815cdb0d1decead0cce2b768e
BLAKE2b-256 d5f0d15dd2df86daeab9764a7e84b15b3b7084521756db94a8904fac6cd465cb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 118b50fe2168734567d3cabc3edcd6416df077f672224720af82b8ae160f3143
MD5 38423b9e790c7cef1c2e6c2849eea9cf
BLAKE2b-256 6587b1aa8321d9b9e3c01ed35439ed082e617d37efce225f919c3543ef8ff9a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d381029f5c4082a9c4bf2bd69ec7ccfa816479dd9b6b6bc863197a1257d3322
MD5 054838f55021f5cd1f64f3f2adfef011
BLAKE2b-256 96deae56b7c8b10cec21b46da9b80f1a67cdd2bbfcbec82d9086e48d0ba51f71

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp38-cp38-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7ab634b47325c745960d56ff7ebfcff17145957bf105d5ecb8beb179d46f5858
MD5 54c2b67f2410da89c6d4de50b4b1a2c7
BLAKE2b-256 0706ed15fe59de12e3e89f3afe70f3c03d97cb36ce70917feb0c25cb32a95f44

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.0-cp38-cp38-manylinux_2_24_aarch64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp38-cp38-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 ac0d9aa6a8008853e6a2488f28b918efa0f33ee92e1d0e15f81126b3e6481777
MD5 f80d29290f51f20deef9ae54383e1746
BLAKE2b-256 d0ad376d94c9988e8534cc95c0d661c8f19332aeb1bddae0be7bdd7aada7e6d2

See more details on using hashes here.

File details

Details for the file prosody_events-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: prosody_events-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24a90922b0ead1485bdd8f06c6a1c97643e7cb86244dc486818517abb79ed187
MD5 a3adc6eb3203a718f8ba8a84b9470eaa
BLAKE2b-256 1f4aa568d31e9872194b0254fcc73ff0eb8a5ad2a24106ec3572e523ff465ca3

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