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.1.1.tar.gz (91.8 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.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

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

Uploaded PyPymusllinux: musl 1.2+ ARM64

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

Uploaded PyPymanylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-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.1-cp314-cp314t-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64

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

Uploaded CPython 3.14Windows x86-64

prosody_events-0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

prosody_events-0.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.24+ ARM64

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

Uploaded CPython 3.13Windows x86-64

prosody_events-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

prosody_events-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

prosody_events-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

prosody_events-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-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.1-cp39-cp39-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-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.1-cp38-cp38-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.8manylinux: glibc 2.24+ ARM64

prosody_events-0.1.1-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.1.tar.gz.

File metadata

  • Download URL: prosody_events-0.1.1.tar.gz
  • Upload date:
  • Size: 91.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1.tar.gz
Algorithm Hash digest
SHA256 6386356040772fb51fdbb001925c4dd8a953814527060a3c0af9af4cc61d5969
MD5 d6daaa597f4874090afa7b0106694741
BLAKE2b-256 9060273feceefc9a257b1465bc48af7dc9d557d15711a3b3e176d183cc031c4f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: PyPy, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 722047beb00c5b84abe2e05b2d7fcf10358bb9c31572d94eb1e92fd0b0d2cf19
MD5 667e006f66530095bf23068ce641776f
BLAKE2b-256 031a1c2029edd9758773e8f910380de434005e33959ed0749a6fe0833814e1fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 55d91f7317305f0cc68824b63977d49ef00287eb5a292ceea8bba6f2711b5f1f
MD5 b474f86a5b75eed94c0abc2ad6912153
BLAKE2b-256 9d3471983f9fb521c698b06eb02b7a0811a3c2011b0065ad466a6974078fcb05

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-pp311-pypy311_pp73-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 16ad48cf77157292f927b6215c176cf499fa7e3fccd8c5a83f9cf72817edc74e
MD5 b546066f24c7a3236f788fc54d84fee7
BLAKE2b-256 745f4db0f3531dd2f6fb101a0fd490cc514f1c0aef637d218c1dd57dc0e1116e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5304cc5b18b48af83d6fb1b8173e3dab088624665d26611c00bc6f34d5029bcb
MD5 729862d8f04b983cf95f167c39182449
BLAKE2b-256 3099fe9b6e8ca277d8f0d0f76a062baaa1d35e5fefc6fd27326c2eff60f91045

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff9ab0a538d00131186db39e0cec736194c038db148c61ce8105c7fbcc767074
MD5 3e3ff4043aa40f9b9792fea41b18fc38
BLAKE2b-256 ecb204e382bfb52211b20d7ccc4a9f54582b3c1b187e36b97ceaab235a7b3e5e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c3e56da223e7878578f9334548798bea8e5e4ce14e4943327ee1e956c7981b3c
MD5 8d812a7259418c7cd5366c90630d3792
BLAKE2b-256 6206f1f4b8b362d94f4d7ad0839fa16737a69fe67a427efc4a9529b0a3089198

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 c80bf8b8c8cff856bd9626221d780a6ddb1c57bc81ee842f714a7bb4bd66d964
MD5 81e9d2f10d2f66aca1977ce3bfb7d2ea
BLAKE2b-256 f925ce70fe2587e406fc11f4979be23d19b3c9749f89312e57d484e132ca1134

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 be2f094a9437a756bb13e2f4883c5a429fc4efbed2640cbf28a44fee889b9e8d
MD5 8c57c26910e1551528ea3e2d871155a7
BLAKE2b-256 a0e1858ff6e3e7b7f379708f4cff6bc741650b363f731c345e4eec0da1e1d098

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 656c878d91c7c7765008d5055f1f2e8e4d8fd240b93e1323c121ab9d6dee2b7e
MD5 2c5bef968398721a7b009fd4fba31e8a
BLAKE2b-256 5e76a98386b56e8101b6337126622f80ae4c0f703d96b3e0a6e0ab1a5392fe5b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b006fc05b9eefe32cb9c4a12e9caacd0f65db80cb1a44224ab74bebeac806654
MD5 335d002d3bb8b6ef6268f11bb35da08d
BLAKE2b-256 4295effb3a2b9a92dddd96e95ea501808f568264619c89dc264e2d8c5cacab4b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 18828b2582915404688eafe5bdffeb292ac7e2471d075632bf4efbb06861a0e9
MD5 83001636a6bb918e470ef59e78b800d2
BLAKE2b-256 0032382b89d434a7956e90e78142a680956776d7eb0134ee4fd7da3c6c6b8a50

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6737fc4b632097fa2b2a8ca08b2b18bea3d56791c0efa8de07e93892d0aef469
MD5 360283e72606083aee30a190622c3646
BLAKE2b-256 c834e4be44b3eaeffe057bfb67cf855df3906d379387c2d84ff86e5ddc51d8c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b37b4b308129ae3b34f23880238d8946b0ee40266f1f4145bd0df3a4ef5db5bd
MD5 967dd60712ab3c33069e0f011096db49
BLAKE2b-256 cf0702ce672bcd18111d346d8302ad35addb43c3cae8ff358a763abe8d79323f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 03933aff3f2fc49de73a614e2b82eaec7f53b9e7a359f533bcccf29659fa9d28
MD5 dd1e6734afdf4bf4870c87de0441e975
BLAKE2b-256 0b91704403fe3b7b0f1eb8f243306f04f6ea50c3447808e1b2896a44308accaa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 866f049503d054f4b33eb30ca338c52fbf911b1c68a2d07a8c3a9fac0f023d89
MD5 bc3c6a59ec0d311146867da0040ce1d4
BLAKE2b-256 21e4b72953fceaa2480b64b920ab2bf206cb8d6e05704560e1c63a201c8811fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313t-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 2adb8bccdc689ffb19ba765b743046af08b835a0a6522b3ff3c1d5f55d9c1720
MD5 4ab71db73e6f98e3c2b7e263cdd26dcd
BLAKE2b-256 400a13c43956654fa79d53f6f3a184adc51df1f7004cc124ebe1ce0abb188233

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1071897809bd261ff97fa2e49818e491bf6ed65358126c1f45b00fde0d1c4292
MD5 07fd2c654f40cdedc86580db3d58a1fd
BLAKE2b-256 1aaf1a6322d686cfa13471a17118c3d132a1dcddc144c9f14a429dec5c7f6c7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 09ccc2a52cea67c8fc5c0cae6e54dba3645281e149d816d1f594e3c40cf5d43e
MD5 1f754e06df5e1c4f2a39bdeaf4d81e7b
BLAKE2b-256 fad8521202c7bc692e9508fe32f272a4db12f5ba5069f3a26bff758cf9c39542

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 47810a24d259316a37937789c3d1fdb4369d9d89dcbf123db70e3f6dceeedec1
MD5 3b2ce50de9cc0c6ccc8b2a01aa6a951e
BLAKE2b-256 567e864b447d3669dd618184af031bb169ee244b296e3e9c02f46ec1a10fd432

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 83ec3521df422237f197b7a88a81c549ceec38c8eb7090cb6b77b1d151e3a76f
MD5 8d4ab8ee3b8fbb0b39cb6514f358c7c6
BLAKE2b-256 0560a00aa4f2b9bbb3f7c9d21a54243938d4629c3e01f9d26c1cddcf31eef3e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f59197ff6cfa2a3c499ea7ea9121b010118993b5d8478184d3e684dfa944ce2
MD5 aa2a67c7e7543dc9ef593f993c5f4f03
BLAKE2b-256 d23f085e403443cec84e6e5dcf7bbcfefa447ef9c2a91285b7a1da1d0eb8e8ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79257d34ea6d908696cf0d9859ec9d267da8000071cf5a2baf0f51e6eec3c91e
MD5 84976fd1716e1b3913ca5f4617908595
BLAKE2b-256 9941bc489ead29a707e8c8e0b5722121178f494097c1895355ffa9a2843f5e97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a7250e46b92625c2459da8062632db96e602e41bbf07a37373b8277216c80e51
MD5 640b68ce04779e328fc45464965d6e12
BLAKE2b-256 7a095f0293f72be00fdb3f80a225c5a17a84229b602761f3baa8f94a26ae7d6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 87d3e3ec02c8bfdeb9ee08405237701d8dbb4ba6e949c861c490f60c99584e17
MD5 8e6db44eed4b3dc087a5bda87f9b0677
BLAKE2b-256 b88ba89a0be04368195b29245799f94d93549087692d6e72cedba1150a2af1ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5cb5b0804fc8fdb1a26448d1fd22351d9149bc1bec4b4213e8662ffb222e3266
MD5 a7a2dd61483fad77bdf07a76913b423e
BLAKE2b-256 fb72854bb27e523cc2e8e5f6166a3de949963741d749b35889f401ff188736e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 04d532a0d24facfef315ac9ead3f1ae7d7f95ff482ec451e41a5242ec413b0ba
MD5 a685bda0a2e02a839686a9b5c42148b1
BLAKE2b-256 54e8d6cebcab335b2223831258712e0611859f3a58661730727658b479200425

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a1f0a22d7898b3bc60625b8e521a3f779ddfa444b98941b9a42b0897a24ac524
MD5 42731634bc44289146db830284992bf1
BLAKE2b-256 7bce51af724d68a0a46ab36ba6d43eff4509dabd7eee840590b892fb02667fda

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3487b891bcd11c60f93c2c85e30aaf776b66a93381c9d93a8672c152dae6ff21
MD5 735b47d574b10446494315e009e8552c
BLAKE2b-256 658d8ad3fbe1cc8b9f7ed0e57d190e8c2ecdbe7edff61cac63d4e1e14c42ee2b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7df22e54b4daf3d7bbc2e52e6946a5c7c7feea4f4ba1b2d951cc6fd46976ca86
MD5 2889802c5aa083c7815bc3d0b4c812a5
BLAKE2b-256 b864c4eadee560c16eecb33839440b7a8c990f6b6792339ff042e5817172e42c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 70dc4ef3a537af4ec19fd571e7d70dddb234eefb5ce6ced3dad60a22cd6c65c6
MD5 cd8bb36bafa3f97f12766d64fed80831
BLAKE2b-256 03c17e368f498a374c192ee99e8f8917de441cb6c4b12ad2f01aae16eb10023e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9c3d7f9de2818a58a82da52c04119a8526b66bd9f581000c061d81b65e70921b
MD5 ff093c77d3aca35300be1a3a732924ef
BLAKE2b-256 e1ba0b8f869958beea1076c5c9a27daa06566ae2d318f11ccdfb5bf9dd54a8c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 e43a5d868aa47979e61f0db750e708d1778a6154ed61aef4700a67a3be02af4c
MD5 c02d792777c26c611ba27a90c4dfa793
BLAKE2b-256 1ef40206b74c92b1e3defa99cddb527350bf6596bbea35e1bd8f62e7eb0fedda

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 712590021db0beab9889dc2b7e82b2406979ad2f6b9e84e3726b717a6950901a
MD5 9077823258d78b285b63727f44a64bae
BLAKE2b-256 b8e992ac793efe845d26efd16086c0735a75290cd662b1ff451d073d590936bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ab1b6fcb8b8b1842505753434bbbae179c7b7833713b475ca02956bd1be5c786
MD5 b21c602717e9d3ad81cd8047e2708d04
BLAKE2b-256 bfd7e5e6cbc70fba568364eb71bf52ac812bfa6e1be48db61b306e5c224eedc1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4afb045dfabe77e3d2e49a5044f3211ff71233cf879ba16051d3863f6101b796
MD5 d1283381c64c7ed41eb825792fae3266
BLAKE2b-256 894c86e2b2b569500e1e4c5db3d8c174382936f274a504ac0e80ca5480326e18

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce46359ef5d1d27e9e227f5d4ef7f51db543acd40f6bbc85088e9e35f7258b3c
MD5 ab2d2fe551809b28eb273b83e2403b64
BLAKE2b-256 c665de90e0b37507b5b746d61ea452667d1604ec1de57b88cf0cf46352ea2943

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c639989ef0bb3cf734f840c05de283585a74906cfb822e646c20d9ba5cf709db
MD5 14f21c480d0033477243b18ade9c4678
BLAKE2b-256 130b8f018918b887de5acde3b139f67ea46de753408280bd54125a9d01093480

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp310-cp310-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 259fc93de8141ca1469882092bedf8800552e9f4c23a7026cc6a8d4e165ab33f
MD5 be62b5c84e5c6a851580d4f771f4c3fa
BLAKE2b-256 6303244c14ed8f7abc82b8a13ed943351b17ab51258b54425f7836c75882932a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 201c69aa12b1693b70913d5b53f9f4338394ca9720e1644c466228777e472700
MD5 cae059c09cf6f079ebec17700a64b8ca
BLAKE2b-256 3d179c0ce871a7356e4f72fbe7f41b4ef1d00e88decebc4f0caf47d3744a1668

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 843637f89ca7468933a0651d880a32884b5b1e1bf2966f3430a95f0b49ca052b
MD5 f5aa325941894a505773beb622e6f745
BLAKE2b-256 452c56e1b10a3fbe5695402aa31d9ded6540dbd21dda2c8eca59a284152e9ec5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a0959671d6ef4d9f2be9452efcc10fc77fe3c72e3feb2433f57bf2ad44157eb9
MD5 36096ce8cb79dfe07f68d08c6a9fa3a8
BLAKE2b-256 3e483d58563b077a332b1a83053f7bc1fe4ef089e533f1dbec26f2f4247f01ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp39-cp39-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 2b7726b8c8b67789d8f228a768c6d260d66c33e2b507d78d4df32ac24ffead98
MD5 0d465107f3492ea85d3fc9dbc893adcf
BLAKE2b-256 4a842b77ce449dd2afcbee044df8e17e7059b76d38fca616ed38229b5bd13431

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ef52bfa0887068d6ef7c255a3c99f69bc419683cfe782508e76a3eddfa778c7
MD5 bbfa10d6ca0629545358f8b779de51c6
BLAKE2b-256 778bfddfab334d5af8a97e151d6d262e1f497740c088c21638256b6e79dd4c91

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ab7624397e2a40323be85ce0f7848189ab5a600f8a56b6f53175bdd821a4c1c7
MD5 9709e4b24a4c8af0bcb80c61537f5858
BLAKE2b-256 75c44707535eb5605c263d00d4fe91d5ccb4116522420e5f9e69b8fd02b16f9a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 29e317ee0b29b39ad47f1432d1ba01e0d69c79f257a712ad49fd74dda6d54734
MD5 7f0e4bf3534a7013b141084a0ac141ed
BLAKE2b-256 a6876c3e6cea9267bf096c105c72e1a5381053ac8ad16c67b8910d3c37a28985

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp38-cp38-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 16f0fac46bd6e70227bdf5b0ce6345afcea40d7c3f7b959b73b02ddb9ae0bbb1
MD5 e862e2f3f5400c5fa580b5ed9cd454fb
BLAKE2b-256 1ab0d762533fc0892ed5236ead988531621585ff12883271f40898ca275ed5f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prosody_events-0.1.1-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.7 {"installer":{"name":"uv","version":"0.11.7","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.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b823fb1c2d4f85add797971edf9342317962e1645ea0c245f4ebdedae0a21765
MD5 1c14a2106089da1ccf83de05a1460080
BLAKE2b-256 0405283cf33baf77f05267c2ab3824124946df8ebc0bcda24c5e2586d723f1bc

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