Skip to main content

pjsua2-python

Build Wheels PyPI

Pre-built binary wheels for the PJSUA2 Python bindings, packaged from upstream pjproject.

pip install pjsua2-python

Available for Linux (x86_64), macOS (Intel + Apple Silicon), and Windows (AMD64) on Python 3.8–3.12.


Reusable binary wheel packaging for PJSUA2 Python bindings built from upstream pjproject.

This repository is designed for the problem you called out directly:

  • no official wheel
  • brittle local builds
  • repeated manual SWIG compilation per project

The repo is wheel-first. It builds PJSIP/PJSUA2, stages the generated SWIG artifacts into a Python package, and emits installable wheels with cibuildwheel.

Packaging model

pjsua2-python is a native extension package, not a pure Python package.

The package version should match the bundled pjproject version exactly. This avoids the usual confusion of having a separate wrapper version and an upstream PJSIP version.

Examples:

  • pjsua2-python==2.15.1 packages pjproject 2.15.1
  • future pjsua2-python==2.16.x should package pjproject 2.16.x

This repository now treats pjsua2/_version.py as the single source of truth. The package metadata and CI build default both derive from that file automatically.

That means pip install pjsua2-python works by publishing multiple wheels, then letting pip choose the right one for the current machine:

  • Linux x86_64
  • macOS x86_64
  • macOS arm64
  • Windows AMD64
  • Python 3.8 through 3.12

For this scope, that means 20 wheels total.

There is no correct single binary wheel that works unchanged across Linux, macOS, and Windows. Serious projects like NumPy and PyTorch solve this exactly the same way: one wheel per platform and per Python ABI.

Target outputs

Examples:

  • pjsua2_python-2.15.1-cp38-cp38-manylinux2014_x86_64.whl
  • pjsua2_python-2.15.1-cp311-cp311-macosx_13_0_x86_64.whl
  • pjsua2_python-2.15.1-cp311-cp311-macosx_14_0_arm64.whl
  • pjsua2_python-2.15.1-cp311-cp311-win_amd64.whl

What this repo does

  1. Clones pjproject
  2. Checks out a configured release/tag/branch
  3. Builds upstream PJSIP and the SWIG Python binding
  4. Copies generated artifacts into the local pjsua2 package
  5. Builds wheels for each Python/platform target with cibuildwheel

Repository layout

pjsua2-python/
├── .github/workflows/build.yml
├── pjsua2/
│   ├── __init__.py
│   └── _version.py
├── scripts/
│   ├── build_pjsip_linux.sh
│   ├── build_pjsip_macos.sh
│   ├── build_pjsip_windows.ps1
│   ├── build_linux_wheel.sh
│   ├── build_macos_wheel.sh
│   ├── build_windows_wheel.ps1
│   ├── check_linux_build_tools.sh
│   ├── check_macos_build_tools.sh
│   ├── check_windows_build_tools.ps1
│   ├── config_site.h
│   ├── get_package_version.py
│   ├── install_linux_build_deps.sh
│   ├── install_macos_build_deps.sh
│   ├── install_windows_build_deps.ps1
│   ├── setup_pjsua2_windows.py   ← MSVC-explicit build script (replaces upstream setup.py)
│   ├── smoke_test.py             ← end-to-end wheel validation + SIP reg/unreg
│   ├── stage_bindings.py
│   ├── test_import.py
│   └── test_local_cp312.sh
├── MANIFEST.in
└── pyproject.toml

Supported build targets

  • Linux: manylinux2014_x86_64
  • macOS Intel: x86_64
  • macOS Apple Silicon: arm64
  • Windows: AMD64
  • Python: 3.8 through 3.12

Bundled upstream version

The Python package version is declared in pjsua2/_version.py. The bundled pjproject checkout is declared separately in pjsua2/_pjproject_ref.

For normal releases these usually match. For packaging-only fixes, the package version may be a post-release while the bundled upstream ref stays on the original pjproject tag.

Examples:

  • package 2.15.1 with pjproject ref 2.15.1
  • package 2.15.1.post1 with pjproject ref 2.15.1
  • package 2.10.post1 with pjproject ref 2.10

Release tags should follow the Python package version, for example v2.15.1.post1.

Override it when needed:

PJSIP_REF=master python -m cibuildwheel --output-dir dist

If you want strict reproducibility, keep using a tag. If you want the newest upstream commit, set PJSIP_REF=master or a commit SHA.

Older PJSIP releases

Older upstream releases can be built by setting PJSIP_REF to the matching tag, for example:

PJSIP_REF=2.10 python -m cibuildwheel --output-dir dist

For published wheels, prefer a release branch per upstream line. For example, keep main on the latest PJSIP line and create release/2.10 where pjsua2/_pjproject_ref contains 2.10. If you need packaging-only fixes for an already published upstream version, use a post-release package version such as 2.10.post1 while keeping pjsua2/_pjproject_ref set to 2.10.

PJSIP 2.10 exposes the legacy digest authentication API. It does not provide AuthCredInfo.algoType or constants such as PJSIP_AUTH_ALGORITHM_MD5, so application and test code should set those only when present.

Design choices

1. Wheel-first, not source-first

This repo is optimized for prebuilt wheels. That is the real operational win. Source installs are intentionally not the primary path.

2. Minimal upstream feature set

The supplied config_site.h disables video and sound-device support to reduce build friction and external library sprawl. That keeps wheel creation practical.

If your application needs additional PJMEDIA features, expand scripts/config_site.h and the dependency install scripts deliberately.

3. Static-first upstream linking

The build scripts prefer static upstream linkage to reduce runtime sidecar libraries and keep pip install closer to a self-contained experience.

Local build examples

Linux

Full build (all Python versions)

./scripts/install_linux_build_deps.sh
python -m pip install --upgrade pip build cibuildwheel auditwheel
python -m cibuildwheel --platform linux --output-dir dist

This pulls the manylinux2014 Docker image and builds wheels for cp38–cp312 inside the same container CI uses. Resulting wheels land in dist/.

Quick single-version validation (recommended for iterating on build script changes)

Use the focused helper to test cp312 only (the most likely to break due to distutils removal):

# Prerequisites — one-time setup
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo pip3 install --break-system-packages cibuildwheel

# Run the cp312-only test (~5 min, uses the exact manylinux2014 Docker image CI uses)
bash scripts/test_local_cp312.sh

The script at scripts/test_local_cp312.sh sets CIBW_BUILD=cp312-* and runs cibuildwheel inside the manylinux2014 container, emitting the wheel into dist/. Failures are identical to what CI would show, without the 15-minute wait per push.

Why not just run bash scripts/build_pjsip_linux.sh directly? The host build uses your local Python and a cached build/pjproject tree, so it passes even when the CI container would fail (missing setuptools, wrong Python version, stale build artifacts). Always use the Docker-based test to validate changes to the build scripts.

macOS

./scripts/install_macos_build_deps.sh
python -m pip install --upgrade pip build cibuildwheel delocate
python -m cibuildwheel --platform macos --output-dir dist

If you run scripts/build_pjsip_macos.sh directly, it now checks for required tools before starting the build.

Windows

./scripts/install_windows_build_deps.ps1
py -m pip install --upgrade pip build cibuildwheel
py -m cibuildwheel --platform windows --output-dir dist

For a host-built Windows wheel after staging the native artifacts:

./scripts/build_windows_wheel.ps1

The Windows build path now checks for git, python, swig, and either msbuild or cl before starting.

macOS host wheel helper

./scripts/build_macos_wheel.sh

That helper builds the package on the current macOS host and runs delocate into wheelhouse/.

Verify a wheel

pip install pjsua2-python
python scripts/smoke_test.py --expected-version 2.15.1

Expected output:

============================================================
  import pjsua2        ... PASS
  version check        ... PASS [2.15.1]
  module attributes    ... PASS [96 attrs]
  endpoint lifecycle   ... PASS
  SIP register         ... PASS [200 OK (expires=3600s)]
  SIP unregister       ... PASS [200 OK (expires=0)]
============================================================
Results: 6 passed, 0 failed

GitHub Actions

The included workflow builds wheels on:

  • ubuntu-22.04 (manylinux2014_x86_64)
  • macos-15-intel (x86_64)
  • macos-14 (arm64)
  • windows-2022 (AMD64)

For every push to main the pipeline runs these jobs in order:

  1. Build — cibuildwheel builds 5 wheels (cp38–cp312) per platform = 20 wheels total
  2. Build source package — python -m build --sdist + twine check
  3. Verify — 20 smoke-test jobs (one per wheel): installs the wheel, checks version, validates 96+ pjsua2 class/struct attributes, runs endpoint lifecycle, and tests SIP REGISTER + UNREGISTER against opensips.org (timeouts on network-filtered runners are treated as warnings, not failures)

For tagged releases (v*) two additional jobs run after verify passes:

  1. Create GitHub Release — attaches all 20 wheels, the sdist, and SHA256SUMS.txt
  2. Publish to PyPI — uploads via OIDC trusted publishing

SIP smoke test credentials

The SIP register/unregister tests use repository variables (not secrets):

Variable Example
SIP_SERVER opensips.org
SIP_USER sthorat1
SIP_PASSWORD your password

Set these under Settings → Secrets and variables → Actions → Variables. If absent, the SIP tests are skipped (non-fatal).

GitHub Actions is the release authority for distributable wheels. Local host wheel helpers are mainly for validation and debugging.

Keep the release order strict:

  1. fix GitHub Actions until all build and release jobs are green
  2. verify the generated artifacts on GitHub
  3. only then configure or use PyPI publishing

How pip install works for users

After the wheels are published to PyPI, users run:

pip install pjsua2-python

pip inspects the current machine:

  • OS
  • CPU architecture
  • Python version

Then it downloads the matching wheel automatically. Users do not choose among the 20 wheels manually.

Important caveats

Linux compatibility

Linux wheels are built against manylinux2014 to keep glibc compatibility broad.

Important distinction:

  • Local wheels built on a normal host reflect that host libc and OpenSSL baseline.
  • CI wheels built by cibuildwheel in the configured manylinux container are the portable artifacts you want to publish.

On this Ubuntu 24.04 host, the repaired local wheel validated successfully but landed at manylinux_2_39_x86_64, not manylinux2014_x86_64. That is expected for a host build and is exactly why the repo uses cibuildwheel for release artifacts.

macOS compatibility

Apple Silicon and Intel are built separately in the workflow. If you prefer universal2 later, change the workflow and CIBW_ARCHS strategy.

Windows build path

Windows is the most fragile target in the PJSIP ecosystem. The script here is structured for CI and upstream Python SWIG packaging, but you should expect occasional upstream breakage across Visual Studio and Python releases.

That is exactly why centralizing this in one repo is the right move.

Local vs release builds

  • Local helper scripts validate that the packaging flow works on a given machine.
  • Release wheels should come from cibuildwheel in CI.
  • On Linux specifically, the local repaired wheel policy reflects the host baseline, while CI should emit the intended manylinux2014 wheels.

Metadata

Release files for pjsua2-python 2.15.1.post1

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

Source distribution (sdist)

Source distribution for pjsua2-python 2.15.1.post1
File Size Uploaded Provenance
pjsua2_python-2.15.1.post1.tar.gz 20.3 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for pjsua2-python 2.15.1.post1
File
pjsua2_python-2.15.1.post1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pjsua2_python-2.15.1.post1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pjsua2_python-2.15.1.post1-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details
pjsua2_python-2.15.1.post1-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
pjsua2_python-2.15.1.post1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pjsua2_python-2.15.1.post1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pjsua2_python-2.15.1.post1-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details
pjsua2_python-2.15.1.post1-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
pjsua2_python-2.15.1.post1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pjsua2_python-2.15.1.post1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pjsua2_python-2.15.1.post1-cp310-cp310-macosx_15_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 15.0+ x86-64 Details
pjsua2_python-2.15.1.post1-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details
pjsua2_python-2.15.1.post1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
pjsua2_python-2.15.1.post1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
pjsua2_python-2.15.1.post1-cp39-cp39-macosx_15_0_x86_64.whl CPython 3.9 CPython 3.9 macOS 15.0+ x86-64 Details
pjsua2_python-2.15.1.post1-cp39-cp39-macosx_14_0_arm64.whl CPython 3.9 CPython 3.9 macOS 14.0+ ARM64 Details
pjsua2_python-2.15.1.post1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
pjsua2_python-2.15.1.post1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
pjsua2_python-2.15.1.post1-cp38-cp38-macosx_15_0_x86_64.whl CPython 3.8 CPython 3.8 macOS 15.0+ x86-64 Details
pjsua2_python-2.15.1.post1-cp38-cp38-macosx_14_0_arm64.whl CPython 3.8 CPython 3.8 macOS 14.0+ ARM64 Details

Total release size: 83.8 MB

Release files / pjsua2_python-2.15.1.post1.tar.gz

Download URL pjsua2_python-2.15.1.post1.tar.gz
Size 20.3 kB
Tags Source
SHA-256 checksum
How to use checksums
283da3b61ad5a0c4b6067892e8455602a027a25595c4f4d0142d8977d3ef4c90
BLAKE2b-256 checksum
How to use checksums
e5ab81adbf9c9e810d2312957cf2f5d9c7790c22a721eb7909b541f9dcb092ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp312-cp312-win_amd64.whl

Download URL pjsua2_python-2.15.1.post1-cp312-cp312-win_amd64.whl
Size 2.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6a47b9eef62700f84337cd059c7edbd85d213a90ee2db6d233b021f4abd49eff
BLAKE2b-256 checksum
How to use checksums
36e24754da5ceb89ec98d53cd65512dc53a5f8429a619885c4fd53a5814b07fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
382f0a69e31d8a7bc98cf542fa1a369592150534aea43d38cb05864b17d9d00b
BLAKE2b-256 checksum
How to use checksums
e3cb860689711056c5b026018e04f307bae6f36ff0d41ee50b94a56de5d8feb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp312-cp312-macosx_15_0_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp312-cp312-macosx_15_0_x86_64.whl
Size 5.0 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
b354b81f9bb62983e6b97a8f01db4552babe8e84890a01977408d1e6d5d97469
BLAKE2b-256 checksum
How to use checksums
cf1960fd036239e43718ceb899cd9c34f2d0b2cb608dbfe5a62ec7a14298b42a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp312-cp312-macosx_14_0_arm64.whl

Download URL pjsua2_python-2.15.1.post1-cp312-cp312-macosx_14_0_arm64.whl
Size 5.0 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
a4c8309889fb46099c2f283cc7eb079ead22c70d767e0446249508920d4602ea
BLAKE2b-256 checksum
How to use checksums
57ea626bb3d28593f11eacf3fb18846d8af0c4ad7d5a12f902c3f6dfacc15098
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp311-cp311-win_amd64.whl

Download URL pjsua2_python-2.15.1.post1-cp311-cp311-win_amd64.whl
Size 2.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
83f2796c357ff2b47219285fe6f487237a421aea6e70a78d3d6f6e67f5dd0e07
BLAKE2b-256 checksum
How to use checksums
91ad6efaaeb130af9a7b61336422bf26306a3188ad0dd509012f88266f2b3b52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4eb5c3afca5ef589f94493ae14c86dbaf3584a9abc7964e89864ed85020c3d16
BLAKE2b-256 checksum
How to use checksums
2904fe6102e196309f71a2ab8910373f8674d990d33f6eda51e988dd9a32414c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp311-cp311-macosx_15_0_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp311-cp311-macosx_15_0_x86_64.whl
Size 5.0 MB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
34369800cb693970fda91c82916ca630d88b82326f15954e96b3195bd743ed17
BLAKE2b-256 checksum
How to use checksums
32b04b7e0b6b26fe9318dcfe481b354fd415a8db8b6b4ea7ee71ac126ad432ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp311-cp311-macosx_14_0_arm64.whl

Download URL pjsua2_python-2.15.1.post1-cp311-cp311-macosx_14_0_arm64.whl
Size 5.0 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
53d161bdd54d1bcc56f48cb534bce1412efe6907cdd843c1bcc331ec81d9daa4
BLAKE2b-256 checksum
How to use checksums
1672e6f3d667a06f430383fb0d8bd45a7e8d611344435becc3dce1c5c8c0d081
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp310-cp310-win_amd64.whl

Download URL pjsua2_python-2.15.1.post1-cp310-cp310-win_amd64.whl
Size 2.0 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a58fccb993468d24882034f989887485a65cf6b359d915a402d59f1f7098e7f9
BLAKE2b-256 checksum
How to use checksums
a76b61eec1b5ce269d74995abe802f0521aee6109460f95d8792e8e34c8f3b75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c257151dd4f4d149ce60cd2bc9bcfbb3ca97914932fe5f53563d431e035c8c26
BLAKE2b-256 checksum
How to use checksums
9b4b3d779298424e2aa575572095f7bf156e16ed4cfc3641059f325f308ca64b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp310-cp310-macosx_15_0_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp310-cp310-macosx_15_0_x86_64.whl
Size 5.0 MB
Tags CPython 3.10 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
41f93db5c84740070dbd79173eba05eb9b8c073546870138b94fec48db02813d
BLAKE2b-256 checksum
How to use checksums
a4acc116dfeed8cda358f0a46dcc935dfefba3c68b4a15ddbc702eabf8868a57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp310-cp310-macosx_14_0_arm64.whl

Download URL pjsua2_python-2.15.1.post1-cp310-cp310-macosx_14_0_arm64.whl
Size 5.0 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
e39a402b3c0549490a8993e98c9f52ed5efe1fa1b9c1d4a1ac3f877e61b3d700
BLAKE2b-256 checksum
How to use checksums
2966a41aaa396a836499384cde16e3ec692d18858486ce6a7b8cf256682e6d3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp39-cp39-win_amd64.whl

Download URL pjsua2_python-2.15.1.post1-cp39-cp39-win_amd64.whl
Size 2.0 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
2018166611a9f6bdabd04527bf1124e9c47e96c43e998f88a9543a2a7ec5ae68
BLAKE2b-256 checksum
How to use checksums
b1b884999e8aef861782f048524aa3d1d35979a81636b34b30d00c80112da7ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.8 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
910537e3fe88f606769541b80c7a9cad7eaf65ad77758a919e165b2f531b2b32
BLAKE2b-256 checksum
How to use checksums
997adc93b8a0d9394da9c27f68a373e30454eb172af45100723e8071a54e9ca0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp39-cp39-macosx_15_0_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp39-cp39-macosx_15_0_x86_64.whl
Size 5.0 MB
Tags CPython 3.9 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
412d80cbd87da6377f62fcea45790d1e95b6c0bd1247dcbfa748d9ce9017f3cf
BLAKE2b-256 checksum
How to use checksums
1a971eec8562d7465324eb76cad41c7ccf2047175a8c59fbb2342532b4a03f2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp39-cp39-macosx_14_0_arm64.whl

Download URL pjsua2_python-2.15.1.post1-cp39-cp39-macosx_14_0_arm64.whl
Size 5.0 MB
Tags CPython 3.9 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b0575398130a1a1abf738135e113a3c56ec8a371b1d683f52f906d76114a1826
BLAKE2b-256 checksum
How to use checksums
df8bd430059bb2ab95da035fd81e51b896fa81bcdd4b018a6cfd21f0a5208718
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp38-cp38-win_amd64.whl

Download URL pjsua2_python-2.15.1.post1-cp38-cp38-win_amd64.whl
Size 2.0 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
7544fe3ed3a5b3018f2ab635fb78a004c1ccca748f84a94d5935c30d245a86fd
BLAKE2b-256 checksum
How to use checksums
8178206601b41d079119169b160ae67931b117a0734d4632f2dcf8cfa242fd6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.8 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e441bc79fbb35b43b8347631e9e36c9ebe00c14d4634453f61cb53834a7523e7
BLAKE2b-256 checksum
How to use checksums
8f60689eda8aaaf3cb57fbce1a886318109fba9576934cc90c9acfae61a19c13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp38-cp38-macosx_15_0_x86_64.whl

Download URL pjsua2_python-2.15.1.post1-cp38-cp38-macosx_15_0_x86_64.whl
Size 5.0 MB
Tags CPython 3.8 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
c124eb92a16340f88a1ab234f3e4b1f5ed2e9a96da2509bc1fdda4159328e5b1
BLAKE2b-256 checksum
How to use checksums
3af939fc6f67de0f34af5d7d502f438ad6265dc6b06341e0de9c2792f0f5b572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Release files / pjsua2_python-2.15.1.post1-cp38-cp38-macosx_14_0_arm64.whl

Download URL pjsua2_python-2.15.1.post1-cp38-cp38-macosx_14_0_arm64.whl
Size 5.0 MB
Tags CPython 3.8 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
109a9a8875c0d31a9ac94afd0e29f03a70c7a6c494924832a25189a539c9701b
BLAKE2b-256 checksum
How to use checksums
04f73ef8b70f8800443975273e522e37da632d02b995be242e415254bebe8b20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 28, 2026.

Transparency log

Security for pjsua2-python 2.15.1.post1

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 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for pjsua2_python-2.15.1.post1.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 May 28, 2026.

Transparency log

A 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.

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