Skip to main content

Python client for Basepair

Python bindings for Basepair's API and command line interface (CLI).

Sentry & custom metrics (optional)

Install with Sentry support:

pip install basepair[sentry]

The library provides shared Sentry init and entity metric constants so consumer apps (Pinda, webapp, ivfapp, kmap) do not duplicate scrubbing, sampling, or metric naming.

Important: basepair-python does not read environment variables for Sentry or metrics. Each app loads its own config and passes explicit parameters.

Sentry init

from basepair.sentry import init_sentry

init_sentry(
    dsn=os.environ.get("SENTRY_DSN"),
    environment=os.environ["MODE"],
    release=os.environ["VERSION"],
    service="pinda-backend",
    traces_sample_rate=float(os.environ["SENTRY_TRACES_SAMPLE_RATE"]),
    profile_sample_rate=float(os.environ["SENTRY_PROFILE_SAMPLE_RATE"]),
    project_name=os.environ.get("PROJECT_NAME"),
    customer_app=os.environ.get("CUSTOMER_APP"),
    debug=os.environ.get("SENTRY_DEBUG") == "true",
    low_value_transactions=("/api/health", "/api/health/"),
)
  • Empty dsn → no-op (safe for local dev).
  • Required when dsn is set: environment, release, service, traces_sample_rate, profile_sample_rate.
  • Optional: project_name, customer_app, debug, low_value_transactions, server_name.

Django apps can use request context helpers:

from basepair.sentry.django import SentryContextMiddleware, set_request_sentry_context

Entity metrics

Shared metric names and tags live in basepair.metrics:

from basepair.metrics import (
    METRIC_ANALYSIS_BULK_START,
    METRIC_ANALYSIS_TERMINAL,
    Source,
    Tag,
    Outcome,
    emit,
)

Analysis.bulk_start and Analysis.reanalyze emit create-side metrics when Sentry is initialized in the calling process (requires sentry-sdk>=2.44.0 for the metrics API). Pass metric_source in the webapp API client config:

Analysis({**settings.WEBAPP["api"], "metric_source": Source.PINDA})

Webapp should emit completion metrics using the same constants (e.g. METRIC_ANALYSIS_TERMINAL) when an analysis reaches a terminal state.

Spec: Confluence — Sentry Custom Metrics

Using MFA

Note: It is advisable to use MFA for increased security and best practices

After you have been added to the list of collaborators, you can verify if MFA has been activated for you by visiting collaboration page

How to build and push to pypi:

Automated publishing of distribution

In the testing stage of the changes, it is advisable to use Test PyPI. We already have github actions to publish on both Test PyPI and PyPI.

Manual way from local

python setup.py sdist bdist_wheel # This will create two files in a newly created dist directory, a source archive and a wheel:
twine upload dist/* # To upload it to Pypi
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username:
Enter your password:

Note: username must be __token__ (not your pypi username) password is the token. You may generate the token -> token creation page.

That is it!

Below is a successful execution sample:

Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: __token__
Enter your password:
Uploading basepair-2.0.7-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51.0/51.0 kB • 00:00 • 36.3 MB/s
Uploading basepair-2.0.7.tar.gz
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.4/37.4 kB • 00:00 • 47.2 MB/s

View at:
https://pypi.org/project/basepair/2.0.7/

Metadata

Release files for basepair 3.4.1

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

Source distribution (sdist)

Source distribution for basepair 3.4.1
File Size Uploaded
basepair-3.4.1.tar.gz 80.2 kB Details

Built distribution (wheel)

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

Total release size: 191.2 kB

Release files / basepair-3.4.1.tar.gz

Download URL basepair-3.4.1.tar.gz
Size 80.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3811bf1f82b6c0ff053772bc89e6436f915e40f2d6c724654e080d22c53f2282
BLAKE2b-256 checksum
How to use checksums
df0ebc6085ef0fa7d9533388c1b80243bfcbc4d0c309d505e5bac1d144739141
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / basepair-3.4.1-py3-none-any.whl

Download URL basepair-3.4.1-py3-none-any.whl
Size 111.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
abb697af71b80885ae08f8c7444dedaf76ee9cea01f2d1fa0b2e282eb5a3c01a
BLAKE2b-256 checksum
How to use checksums
93f84ac659a8fd6e5fba686b2e4f42f08b1150c1656dd02f6e3b0b8669c51055
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

3.5.4

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.6

2 release files

3.4.5

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.2

2 release files

This release

3.4.1 This release

2 release files

3.4.0

2 release files

3.3.3

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.4.5

2 release files

2.4.4

2 release files

2.4.3

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.9

2 release files

2.2.8

2 release files

2.2.7

2 release files

2.2.6

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.14

2 release files

2.1.13

2 release files

2.1.12

2 release files

2.1.11

2 release files

2.1.9

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.14

2 release files

2.0.13

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.7.9

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

1 release file

1.6.2

1 release file

1.6.1

2 release files

1.6.0

1 release file

1.5.8

1 release file

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5

3 release files

1.3.83

1 release file

1.3.82

2 release files

1.3.81

2 release files

1.3.79

1 release file

1.3.78

1 release file

1.3.77

2 release files

1.3.76

1 release file

1.3.75

1 release file

1.3.74

1 release file

1.3.73

1 release file

1.3.72

1 release file

1.3.71

1 release file

1.3.70

1 release file

1.3.61

1 release file

1.3.60

1 release file

1.3.59

1 release file

1.3.57

1 release file

1.3.56

1 release file

1.3.55

1 release file

1.3.54

1 release file

1.3.53

1 release file

1.3.52

1 release file

1.3.51

1 release file

1.3.44

1 release file

1.3.43

1 release file

1.3.42

1 release file

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