This release is a pre-release and may not be stable for production use.
benzene-azure
Host Benzene Python handlers on Azure
Functions — HTTP, Service Bus, Event Hub, Queue Storage, Blob Storage, Cosmos DB change feed,
Timer, and Event Grid triggers — plus Service Bus, Queue Storage, and Event Grid outbound clients.
The same handlers, no rewrite. Depends on benzene-core and benzene-http.
pip install benzene-azure # add [servicebus,storage,eventgrid] for the real outbound clients
from benzene.azure import AzureFunctionsApp
app = AzureFunctionsApp(http_router=router, registry=registry)
# main.py adapts azure.functions request/response types to app.handle_http(...),
# app.handle_service_bus(msg), app.handle_event_hub(events), app.handle_queue_storage(msg),
# app.handle_blob(blob), app.handle_cosmos(docs), app.handle_timer(t), app.handle_event_grid(ev).
- HTTP — via the
benzene.httpbinding (route → topic, status mapping). - Service Bus — one scope per message; topic from
application_properties; failure raises so the message is retried / dead-lettered. - Event Hub — a batch of events; one scope per event, in order; failure raises.
- Queue Storage — one scope per message; a Storage Queue has no attribute channel, so the topic
is lifted from a Benzene envelope embedded in the payload, or falls back to a configurable
default_topic(the "one queue → one topic" convention). Base64 payloads are auto-detected. - Blob Storage — a blob-created notification;
default_topic(blob:created) + the blob descriptor (name/uri/metadata) as the body. - Cosmos DB change feed — a batch of changed documents; one scope per document, in order (Event
Hub semantics);
default_topiciscosmos:change, the document is the body. - Timer — one tick, one invocation;
default_topicistimer:tick, the schedule info is the body. - Event Grid — a single event or a batch; one scope per event; native schema and CloudEvents
1.0 are both accepted (told apart by
specversion), topic fromeventType/type. - Outbound —
ServiceBusMessageSender,QueueStorageMessageSender(embeds topic + headers as a Benzene envelope), andEventGridMessageSender(native schema or CloudEvents 1.0, topic ineventType/type) all implementbenzene.core.MessageSenderover the optional Azure SDKs.
Test every trigger in memory with benzene.azure.testing (no Azure SDK) — see the runnable
examples/azure_orders.
Mirrors .NET's Benzene.Azure.Function.* and Benzene.Clients.Azure.*, and contributes the
benzene.azure subpackage to the shared benzene namespace.
Metadata
Release files for benzene-azure 0.1.0b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| benzene_azure-0.1.0b2.tar.gz | 15.7 kB | With provenance | Details for benzene_azure-0.1.0b2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| benzene_azure-0.1.0b2-py3-none-any.whl | Python 3 | none | any | Details for benzene_azure-0.1.0b2-py3-none-any.whl |
Total release size: 34.9 kB
Release files / benzene_azure-0.1.0b2.tar.gz
| Download URL | benzene_azure-0.1.0b2.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4c363aa7558b8375ec58b0c1676ca16c480368b9483b73ec25ba12fef51122c
|
|
BLAKE2b-256 checksum How to use checksums |
219355ba57b1a133dec7a0dfa95807f08b732e6974f9ccdc63933b5430578d44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / benzene_azure-0.1.0b2-py3-none-any.whl
| Download URL | benzene_azure-0.1.0b2-py3-none-any.whl |
|---|---|
| Size | 19.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7fffbc1a32ab00e27088d9a5b1dc76f18450c58bfba6643045dc7a404124e2ec
|
|
BLAKE2b-256 checksum How to use checksums |
91f943867b597349f93e427dec669e2b39c5a17b2693710ed143ff7440127669
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logSecurity for benzene-azure 0.1.0b2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for benzene_azure-0.1.0b2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.