Skip to main content

condux (Python SDK)

Report errors from a Python app to a Condux relay. Emits the Sentry "store" wire shape, so the relay normalizes it exactly like an official Sentry SDK — point it at a project DSN and it works.

Delivery is resilient (429 / 5xx / network failures retry with backoff, honoring Retry-After) and never raises — a failed send returns a SendResult, it does not crash the host app. That holds even if init was never called: capture warns once and drops the event, because the middleware below report from inside an except block and an SDK that raised there would replace your application's exception with its own. A malformed DSN is refused by init instead, where it is a developer-time mistake.

Install

pip install condux

Usage

import condux

condux.init(
    dsn="https://<key>@ingest.condux.ai/<projectId>",
    environment="production",
    release="1.4.2",
)

try:
    do_work()
except Exception as error:
    condux.capture_exception(error)
    raise

# or a bare message
condux.capture_message("cache miss storm", condux.Level.WARNING)

Verify your setup

Silence is what a broken error monitor and a healthy app look like from the outside, so prove the pipeline once:

CONDUX_DSN="https://<key>@ingest.condux.ai/<projectId>" python -m condux.test_event

Exit code 0 means delivered (the message appears as an info-level issue), 1 means delivery failed and prints why, 2 means the DSN was missing or malformed.

Enrichment

Attach the ambient facts triage always needs. Every subsequent event carries them, so nothing has to be threaded through capture calls:

condux.set_user({"id": "1042", "email": "dev@example.com"})   # None clears it (sign-out)
condux.set_tag("plan", "team")                                 # None removes the tag
condux.set_context("job", {"queue": "billing", "attempt": 3})  # None removes the context
condux.add_breadcrumb("charge.started", category="billing")

The breadcrumb trail keeps the most recent 30 entries. condux.clear_scope() resets everything.

Framework integrations

WSGI (Flask, Django) and ASGI (FastAPI, Starlette) middleware report uncaught exceptions (handled=False) and re-raise:

# WSGI
from condux.integrations.wsgi import ConduxWsgiMiddleware
app.wsgi_app = ConduxWsgiMiddleware(app.wsgi_app)

# ASGI
from condux.integrations.asgi import ConduxAsgiMiddleware
app = ConduxAsgiMiddleware(app)

Develop

pip install -e .
python -m unittest discover -s tests

Zero runtime dependencies (standard library only). The transport and sleep are injectable, so the tests exercise the retry/backoff with no real network or timers.

Metadata

Release files for condux 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for condux 0.1.5
File Size Uploaded
condux-0.1.5.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for condux 0.1.5
File Interpreter ABI Platform
condux-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 35.5 kB

Release files / condux-0.1.5.tar.gz

Download URL condux-0.1.5.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3f56ec68c66302f04dbd056c70e183b03d86f0ada5078c9ac82e4d57b3423ff3
BLAKE2b-256 checksum
How to use checksums
92dbc8e726c3273b7f8d5883a7b08117118bbe9c7cb525b90dbe662223fe84b9
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 Aug 14, 2026.

Transparency log

Release files / condux-0.1.5-py3-none-any.whl

Download URL condux-0.1.5-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d12c3475bfce363668ab0c6b1ca58a89e3a8db9ac023d5db87f72d9e02aaddcd
BLAKE2b-256 checksum
How to use checksums
72c518f94b0726a2ffb36481658eebc492bb8b5d911fdcb96964d9652f2b0e35
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 Aug 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page