Skip to main content

Reusable binary wheel packaging for PJSUA2 Python bindings

Project description

pjsua2-python

Build Wheels PyPI

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

pip install pjsua2-python

Install a specific bundled PJSIP line when your application needs one:

# Latest/default line, bundles pjproject 2.15.1
pip install "pjsua2-python==2.15.1.post1"

# Legacy line, bundles pjproject 2.10
pip install "pjsua2-python==2.10.post1"

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 normally tracks the bundled pjproject version. For packaging-only fixes, the Python package may use a post-release suffix while the bundled upstream ref stays on the original pjproject tag.

Examples:

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

This repository treats pjsua2/_version.py as the Python package version and pjsua2/_pjproject_ref as the bundled upstream ref.

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

Expected output:

============================================================
  import pjsua2        ... PASS
  version check        ... PASS [2.15.1.post1]
  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. Buildcibuildwheel builds 5 wheels (cp38–cp312) per platform = 20 wheels total
  2. Build source packagepython -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

That installs the newest published package version, currently the 2.15.1 line once 2.15.1.post1 is released. To install a specific bundled PJSIP line, pin the package version:

pip install "pjsua2-python==2.15.1.post1"
pip install "pjsua2-python==2.10.post1"

PyPI keeps both releases. Publishing 2.10.post1 does not replace 2.15.1.post1; users who need the older PJSIP line must request it explicitly.

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.

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

pjsua2_python-2.10.post6.tar.gz (22.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pjsua2_python-2.10.post6-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pjsua2_python-2.10.post6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pjsua2_python-2.10.post6-cp312-cp312-macosx_15_0_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

pjsua2_python-2.10.post6-cp312-cp312-macosx_14_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pjsua2_python-2.10.post6-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pjsua2_python-2.10.post6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pjsua2_python-2.10.post6-cp311-cp311-macosx_15_0_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

pjsua2_python-2.10.post6-cp311-cp311-macosx_14_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pjsua2_python-2.10.post6-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pjsua2_python-2.10.post6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pjsua2_python-2.10.post6-cp310-cp310-macosx_15_0_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

pjsua2_python-2.10.post6-cp310-cp310-macosx_14_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

pjsua2_python-2.10.post6-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9Windows x86-64

pjsua2_python-2.10.post6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pjsua2_python-2.10.post6-cp39-cp39-macosx_15_0_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

pjsua2_python-2.10.post6-cp39-cp39-macosx_14_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

pjsua2_python-2.10.post6-cp38-cp38-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.8Windows x86-64

pjsua2_python-2.10.post6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pjsua2_python-2.10.post6-cp38-cp38-macosx_15_0_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.8macOS 15.0+ x86-64

pjsua2_python-2.10.post6-cp38-cp38-macosx_14_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.8macOS 14.0+ ARM64

File details

Details for the file pjsua2_python-2.10.post6.tar.gz.

File metadata

  • Download URL: pjsua2_python-2.10.post6.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pjsua2_python-2.10.post6.tar.gz
Algorithm Hash digest
SHA256 98c9be86b4648d98c6d2400f3a668eabc2c70ffa0391a24768e0aff334a96001
MD5 9f072c10d7b1e91ee17fac6ab998cc7d
BLAKE2b-256 6e3fd511950569efebf8d6951b25b2c1fc3a5406f109ba7b1b0fee5c8bd66a67

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6.tar.gz:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 be33954a7d4cc568e31e524674fe0882782110be665f3d68768884e1c1873529
MD5 e0081303f1708f25c111162c82a27990
BLAKE2b-256 d1e3030a0dcd9427c1e622ed616478d3073797e1c1aea367a68e4fc65c5c980e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp312-cp312-win_amd64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 968c2cca76680efd8aee746346dd31cdb7682353a11119fce14804d83a796db4
MD5 1c756df825af75ecc2ee379e13008314
BLAKE2b-256 4df0398ca2514efe6b9b4e1fd2f564497beec4573ced4ced6ea6167fee40b4b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 43fe178ab50cae1ac5441edaf89633194dce53441998a9ecc74f62dfa5641a79
MD5 c9835fff8c387118c4b4c9eb8a691848
BLAKE2b-256 26b3c743fd2d107fd7500d82a754f48455a0c84553efda9c56e9f54661c8f117

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp312-cp312-macosx_15_0_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 abad6fe1203db003a9244018bc1e71f0ff585edcd36c29fdc42dfb1ea02670ed
MD5 8ee8060eaedebd2ed6d7581b4f834249
BLAKE2b-256 19631eceb8a478e8d05f20358ecfab8f90b137c92cdecbf1a76f0c659e3534cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 55f304951ee74d60c8cbe0a8dc04e00d7c3b55cf9b1bebbf9502139823fc8f80
MD5 ab33304472ac2e673c1fa42a907d0a19
BLAKE2b-256 dc4185b2a23c9eb10d383a2dbd68de91e573f9bb269bac2b40cde1ca42174c99

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp311-cp311-win_amd64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6cda6c1940d657f0d7ce205f248eb85d1ba030f6f68a96ba680d8344e0df06b9
MD5 03d758c748360b04d67068be65df1633
BLAKE2b-256 819420535698115ff64ef92488ffe0c5e2aff59bfc8aac4104f83ed7629bfe9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d0e94dc9425c247fcdce00986a436d2291d141323f93e770ad9a9b57f622d093
MD5 62dea61914ad91ce8659eeff0d71a6bc
BLAKE2b-256 ca0f47ba98f7594d4b5f3ef85f37526736ef5e6179ba4741d4262c91376151f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp311-cp311-macosx_15_0_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 119948d9486722d88ff0043095f8025d1f0cc570bff5aa31d657381d314ad0fb
MD5 1b7458a4e60ee67ca0173a71f075013c
BLAKE2b-256 44fd0b013cef93a13fbc2c6b087aae5e47ff422aadff3c2f1a0aabd49189b774

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e286e55e566521b0d88fb434148d96f2fee8daacb0aa3b535da59cb6a52ab1f0
MD5 ae2840b1fae7aa195ead65a6ff1cc781
BLAKE2b-256 115457db440b759e4fba6c706b17527ac4ac75fa31aff4c8c355e06f6df16852

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp310-cp310-win_amd64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3bb70804170fb14dafa38792d0ae805bb36051fae60bbb493de9b538f5ca7be6
MD5 b65f36af2ec58bedbe9e10d520c6e70b
BLAKE2b-256 b6228ecfc897cb972e3c38ec24ee7cac7d363cd418793f499f8e9853269303d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 93f2c587b928ed65ad83f707db1cbe95fa86245dbcd24af6ad7b88e07cfa32b0
MD5 f18f09ebdfc4f1ed94259474b4745ea9
BLAKE2b-256 c3bee16b5b973c6a5e1d83ff5feee12e09d54788c5d1602e86ff8307b29c46ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp310-cp310-macosx_15_0_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4399dc3f431bf12a0a526b2f8c0af3713be582819acc922031f9475ea58ae404
MD5 44e4bf74b2057f6d8779c1fa4294c834
BLAKE2b-256 5fcdd04267f9f49754c1c8047b1886455e7fc9b20dc1f4311e20b1654920c4b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6ad66e62b2e7cdebb9bab5f248e3f0ac0128941fd038280fff0d7e5f4a13addc
MD5 87c8a365b654d0e48a993d3f3e900765
BLAKE2b-256 b5647bb47241ad449676241d442062112f1824dbaa280cebab0a3353a27e48b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp39-cp39-win_amd64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 bd5a7884a1798e40890271419460690edfb2ee9e20619c2246826431da940f45
MD5 36fcd7743f1453d12c49349de1061513
BLAKE2b-256 79e3534f26f58abc76aeb33042d664592903501c9b6f391c1ed0e6ebdcbc98f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 87bd5ba0c2e6ced7746a900c8bc85eaa620cd93aeec02e8f130c3b12b864fe98
MD5 af894775116f68a1dbe06c9c63517d0a
BLAKE2b-256 aae7860c707e0d58e272113619f4afe030dc7eced200710481096e5726f15d1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp39-cp39-macosx_15_0_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6211283080bf691ff299ba01e771cb9a638ed56f05631248e422a645c7107520
MD5 7b3fffd898a854b71b27874705dca248
BLAKE2b-256 3c20c9cf77ebcaec5bfca8160a1dc7edfceb6f5b36d1e4443398fd570600ce81

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3b8f70d90271ee008259f5735ccb630ebf163dfee4afad644683bda57504f9ab
MD5 06ce3dbcbc68183b4173e73ddcbc7cdd
BLAKE2b-256 06e2e5340bc49a85eccd80928ce74a95b4b1a001e8569adc52529087b131e29a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp38-cp38-win_amd64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c20035cc39ec9dd35f02b3ce410026646cdef92ed5a551ceb16142458fe65c70
MD5 7998a218e75c9fbd7666fb5a641f5f6e
BLAKE2b-256 c1d5b958d9d426f055bb975aed8fe5de52ad0f98a8324f236dc1d23d35f7c3c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp38-cp38-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp38-cp38-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 5e641f9590d0e6788786b1aa7b58374afb3aabf43515345011a6ee85d6c01207
MD5 e884d8eba017dfdec87c2e6f969f8fef
BLAKE2b-256 4cf1935097ef72bafbc3fbfc897a7aed89484d84c1a081e67fabb08d2c45346a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp38-cp38-macosx_15_0_x86_64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pjsua2_python-2.10.post6-cp38-cp38-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pjsua2_python-2.10.post6-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5d2afb0ecb4e21d63e7a69bfc5fd60a87a9fe54ca78d1af8117978c4f24b19e1
MD5 2227e01304f79985df2e2e57e7f880b0
BLAKE2b-256 0156330aa288f910c8819a4aa7f0baab0caa72f35eabae2e6f3bc9868945c10a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pjsua2_python-2.10.post6-cp38-cp38-macosx_14_0_arm64.whl:

Publisher: build.yml on srthorat/pjsua2-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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