Skip to main content

Fast SASA calculation using Zig

Project description

zsasa Python Bindings

Python bindings for the zsasa library - a high-performance implementation of Solvent Accessible Surface Area (SASA) calculation.

Features

  • NumPy integration: Pass coordinates and radii as NumPy arrays
  • Two algorithms: Shrake-Rupley (point-based) and Lee-Richards (slice-based)
  • Multi-threading: Automatic parallelization across CPU cores
  • Atom classification: NACCESS, PROTOR, and OONS classifiers with polar/apolar assignment
  • RSA calculation: Relative Solvent Accessibility using standard reference values
  • Per-residue aggregation: Aggregate atom-level SASA to residue-level with RSA
  • Library integrations: Built-in support for gemmi, BioPython, and Biotite
  • Type-safe: Full type hints and runtime validation

Installation

From Source (Development)

# 1. Build the Zig shared library
cd /path/to/zsasa
zig build -Doptimize=ReleaseFast

# 2. Install Python package
cd python
pip install -e .

Optional Dependencies

# For gemmi integration
pip install zsasa[gemmi]

# For BioPython integration
pip install zsasa[biopython]

# For Biotite integration (also works with AtomWorks)
pip install zsasa[biotite]

# All integrations
pip install zsasa[all]

Library Location

The Python bindings look for libzsasa.dylib (macOS), libzsasa.so (Linux), or zsasa.dll (Windows) in these locations:

  1. ZSASA_LIB environment variable (if set)
  2. ../zig-out/lib/ (relative to package)
  3. /usr/local/lib/
  4. /usr/lib/
  5. Current working directory

Quick Start

Basic SASA Calculation

import numpy as np
from zsasa import calculate_sasa, get_version

print(f"Library version: {get_version()}")

# Define atom coordinates (N, 3) and radii (N,)
coords = np.array([
    [0.0, 0.0, 0.0],
    [3.0, 0.0, 0.0],
    [6.0, 0.0, 0.0],
])
radii = np.array([1.5, 1.5, 1.5])

# Calculate SASA
result = calculate_sasa(coords, radii)
print(f"Total SASA: {result.total_area:.2f} Ų")
print(f"Per-atom areas: {result.atom_areas}")

Using Library Integrations (Recommended)

The easiest way to calculate SASA from structure files:

# With gemmi (fast mmCIF/PDB parser)
from zsasa.integrations.gemmi import calculate_sasa_from_structure
result = calculate_sasa_from_structure("protein.cif")

# With BioPython
from zsasa.integrations.biopython import calculate_sasa_from_structure
result = calculate_sasa_from_structure("protein.pdb")

# With Biotite (also works with AtomWorks)
from zsasa.integrations.biotite import calculate_sasa_from_structure
result = calculate_sasa_from_structure("protein.pdb")

print(f"Total: {result.total_area:.1f} Ų")
print(f"Polar: {result.polar_area:.1f} Ų")
print(f"Apolar: {result.apolar_area:.1f} Ų")

Per-Residue Analysis with RSA

from zsasa.integrations.gemmi import calculate_sasa_from_structure
from zsasa.analysis import aggregate_from_result

# Calculate SASA
result = calculate_sasa_from_structure("protein.cif")

# Aggregate to per-residue
residues = aggregate_from_result(result)

for res in residues:
    rsa_str = f"{res.rsa:.1%}" if res.rsa is not None else "N/A"
    print(f"{res.chain_id}:{res.residue_name}{res.residue_id}: "
          f"{res.total_area:.1f} Ų (RSA: {rsa_str})")

API Reference

Core Functions

calculate_sasa(coords, radii, *, algorithm="sr", n_points=100, n_slices=20, probe_radius=1.4, n_threads=0)

Calculate Solvent Accessible Surface Area.

Parameters:

Parameter Type Default Description
coords NDArray[float64] required Atom coordinates as (N, 3) array
radii NDArray[float64] required Atom radii as (N,) array
algorithm "sr" | "lr" "sr" Shrake-Rupley or Lee-Richards
n_points int 100 Test points per atom (SR only)
n_slices int 20 Slices per atom (LR only)
probe_radius float 1.4 Water probe radius in Å
n_threads int 0 Number of threads (0 = auto-detect)

Returns: SasaResult

SasaResult

Attribute Type Description
total_area float Total SASA in Ų
atom_areas NDArray[float64] Per-atom SASA values

classify_atoms(residue_names, atom_names, classifier=NACCESS)

Classify atoms and get radii.

Parameters:

Parameter Type Default Description
residue_names list[str] required Residue names (e.g., ["ALA", "GLY"])
atom_names list[str] required Atom names (e.g., ["CA", "N"])
classifier ClassifierType NACCESS NACCESS, PROTOR, or OONS
include_classes bool True Whether to include atom classes

Returns: ClassificationResult with radii and classes arrays

get_version()

Returns the library version string (e.g., "0.1.0").

calculate_rsa(sasa, residue_name)

Calculate Relative Solvent Accessibility.

Parameters:

Parameter Type Description
sasa float SASA value in Ų
residue_name str 3-letter residue code

Returns: float | None (None for non-standard amino acids)

Utility Functions

These functions are available for advanced use cases:

Function Description
get_radius(residue, atom, classifier) Get radius for a specific atom
get_atom_class(residue, atom, classifier) Get polarity class for an atom
guess_radius(element) Guess radius from element symbol
guess_radius_from_atom_name(atom_name) Guess radius from PDB atom name
get_max_sasa(residue_name) Get max SASA reference value for RSA
calculate_rsa_batch(sasa_values, residue_names) Batch RSA calculation

Analysis Functions

aggregate_from_result(result)

Aggregate per-atom SASA to per-residue.

Parameters:

Parameter Type Description
result SasaResultWithAtoms Result from integration module

Returns: list[ResidueResult]

ResidueResult

Attribute Type Description
chain_id str Chain identifier
residue_id int Residue sequence number
residue_name str 3-letter residue code
total_area float Total SASA in Ų
polar_area float Polar SASA in Ų
apolar_area float Apolar SASA in Ų
rsa float | None Relative Solvent Accessibility
n_atoms int Number of atoms

Integration Modules

All integration modules provide the same API:

  • extract_atoms_from_model(model) - Extract atom data
  • calculate_sasa_from_model(model) - Calculate SASA from model object
  • calculate_sasa_from_structure(source) - Calculate SASA from file or structure

SasaResultWithAtoms

Extended result with atom metadata:

Attribute Type Description
total_area float Total SASA in Ų
atom_areas NDArray[float64] Per-atom SASA values
atom_classes NDArray[int32] Per-atom polarity classes
atom_data AtomData Atom metadata
polar_area float Total polar SASA in Ų
apolar_area float Total apolar SASA in Ų

Enums

ClassifierType

Value Description
NACCESS NACCESS classifier (default)
PROTOR ProtOr classifier
OONS OONS classifier

AtomClass

Value Description
POLAR Polar atom (N, O, etc.)
APOLAR Apolar atom (C, S, etc.)
UNKNOWN Unknown classification

Examples

Algorithm Comparison

import numpy as np
from zsasa import calculate_sasa

coords = np.array([[0.0, 0.0, 0.0], [3.0, 0.0, 0.0]])
radii = np.array([1.5, 1.5])

# Shrake-Rupley (default, faster)
result_sr = calculate_sasa(coords, radii, algorithm="sr", n_points=100)
print(f"SR: {result_sr.total_area:.2f} Ų")

# Lee-Richards (more precise)
result_lr = calculate_sasa(coords, radii, algorithm="lr", n_slices=20)
print(f"LR: {result_lr.total_area:.2f} Ų")

Multi-threading

# Auto-detect CPU cores (default)
result = calculate_sasa(coords, radii, n_threads=0)

# Use specific number of threads
result = calculate_sasa(coords, radii, n_threads=4)

# Single-threaded
result = calculate_sasa(coords, radii, n_threads=1)

Atom Classification

from zsasa import classify_atoms, ClassifierType, AtomClass

residue_names = ["ALA", "ALA", "ALA"]
atom_names = ["N", "CA", "O"]

# With default classifier (NACCESS)
result = classify_atoms(residue_names, atom_names)

# Or with explicit classifier
result = classify_atoms(residue_names, atom_names, ClassifierType.PROTOR)

print(f"Radii: {result.radii}")
print(f"Classes: {result.classes}")

# Count polar/apolar
polar_count = sum(1 for c in result.classes if c == AtomClass.POLAR)
apolar_count = sum(1 for c in result.classes if c == AtomClass.APOLAR)
print(f"Polar: {polar_count}, Apolar: {apolar_count}")

Finding Buried Residues

from zsasa.integrations.gemmi import calculate_sasa_from_structure
from zsasa.analysis import aggregate_from_result

result = calculate_sasa_from_structure("protein.cif")
residues = aggregate_from_result(result)

# Find buried residues (RSA < 20%)
buried = [r for r in residues if r.rsa is not None and r.rsa < 0.2]

print(f"Buried residues ({len(buried)}):")
for r in buried:
    print(f"  {r.chain_id}:{r.residue_name}{r.residue_id} - RSA: {r.rsa:.1%}")

Working with AtomWorks

# AtomWorks is built on Biotite, so use the biotite integration
from atomworks.io.utils.io_utils import load_any
from zsasa.integrations.biotite import calculate_sasa_from_atom_array
from zsasa.analysis import aggregate_from_result

# Load with AtomWorks
atom_array = load_any("protein.cif.gz")

# Calculate SASA with zsasa
result = calculate_sasa_from_atom_array(atom_array)
residues = aggregate_from_result(result)

print(f"Total SASA: {result.total_area:.1f} Ų")

Performance

Library-to-library comparison (Python bindings vs FreeSASA Python):

Structure Atoms Zig SR FS SR SR Speedup Zig LR FS LR LR Speedup
1CRN 327 0.5ms 0.7ms 1.4x 1.5ms 4.4ms 2.9x
1UBQ 602 0.6ms 1.3ms 2.2x 2.0ms 8.4ms 4.2x
1A0Q 3,183 2.4ms 7.6ms 3.2x 8.9ms 48ms 5.5x
3HHB 4,384 3.4ms 11ms 3.2x 12ms 69ms 5.5x
1AON 58,674 44ms 163ms 3.7x 171ms 931ms 5.5x
  • SR algorithm: Zig is 1.4-3.7x faster (speedup increases with size)
  • LR algorithm: Zig is 2.9-5.5x faster
  • Accuracy: Results match FreeSASA (< 0.01% difference)

Run benchmark: ./benchmarks/scripts/run.py --tool zig --algorithm sr

Development

Running Tests

cd python
uv run --with pytest pytest tests/ -v

Type Checking

cd python
uv run --with ty ty check zsasa/

Linting

ruff format .
ruff check --fix .

References

RSA Reference Values

  • MaxSASA: Tien, M. Z.; Meyer, A. G.; Sydykova, D. K.; Spielman, S. J.; Wilke, C. O. Maximum Allowed Solvent Accessibilites of Residues in Proteins. PLoS ONE 2013, 8(11), e80635. doi:10.1371/journal.pone.0080635

Integration Libraries

  • Gemmi: Wojdyr, M. GEMMI: A Library for Structural Biology. J. Open Source Softw. 2022, 7(73), 4200. doi:10.21105/joss.04200
  • BioPython: Cock, P. J. A. et al. Biopython: Freely Available Python Tools for Computational Molecular Biology and Bioinformatics. Bioinformatics 2009, 25(11), 1422–1423. doi:10.1093/bioinformatics/btp163
  • Biotite: Kunzmann, P.; Hamacher, K. Biotite: A Unifying Open Source Computational Biology Framework in Python. BMC Bioinformatics 2018, 19, 346. doi:10.1186/s12859-018-2367-z

License

MIT

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

zsasa-0.2.0.tar.gz (176.1 kB view details)

Uploaded Source

Built Distributions

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

zsasa-0.2.0-cp313-cp313-win_amd64.whl (349.2 kB view details)

Uploaded CPython 3.13Windows x86-64

zsasa-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zsasa-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

zsasa-0.2.0-cp313-cp313-macosx_11_0_x86_64.whl (269.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

zsasa-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (246.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zsasa-0.2.0-cp312-cp312-win_amd64.whl (349.2 kB view details)

Uploaded CPython 3.12Windows x86-64

zsasa-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zsasa-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

zsasa-0.2.0-cp312-cp312-macosx_11_0_x86_64.whl (269.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

zsasa-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (246.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zsasa-0.2.0-cp311-cp311-win_amd64.whl (349.2 kB view details)

Uploaded CPython 3.11Windows x86-64

zsasa-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

zsasa-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

zsasa-0.2.0-cp311-cp311-macosx_11_0_x86_64.whl (269.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

zsasa-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (246.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file zsasa-0.2.0.tar.gz.

File metadata

  • Download URL: zsasa-0.2.0.tar.gz
  • Upload date:
  • Size: 176.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zsasa-0.2.0.tar.gz
Algorithm Hash digest
SHA256 aa167d36bffea5624711d760c9e94662a0c3b6a26ba314d191e5c49e89ce39f4
MD5 d6be387b03ec3c3fa856f45bab7ac801
BLAKE2b-256 f03caa6102523ca1bf12badbad3108df083356b958a7d4eb821fb3e77a12d8e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0.tar.gz:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 349.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zsasa-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 61205ba260b383e6c3a3d05614be27389a407e03d42f40c370ee01243fd8e2cb
MD5 54c92e16f317844b11d4e6ff32e04e47
BLAKE2b-256 60d1026401721f24fa45db9c21ddd67cd25d18fc57834654a89929384e58efc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e65959ff5d7b0c4fbac84f3c7e76c71c332368c90bae07444c021bb563bcd97c
MD5 5958b79a3db3aef844895f68022f07b4
BLAKE2b-256 12d1423991ae70ad4fbe6e1dd7d5574580f698a8ef1720ec427f1207a6846064

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c9c2480ecd6679c6b72f3431ba314e11084756227f62354777d77f3d48473b3
MD5 0fdb63b45c222c925f05db77727da301
BLAKE2b-256 71ed43369987ae799201de355c092016ee688334aa877615773463ea3c1cbfda

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5f88bd6217d81bdc9050a2f30e8364747cf553cc5a58d4d677217e3896cb22e6
MD5 833131674f2648db7718f9784fa50c66
BLAKE2b-256 4579af0c16de8f04f8887465e98c73f796c46d5b4fa34fb23a33c88c2fc835c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp313-cp313-macosx_11_0_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76b447755844c23fdee3e2a377ad17696d37b6370c5f4b1b61a6af3ddf61801c
MD5 3520c4b0319a6a9d634547bac86d0712
BLAKE2b-256 6708df3ed3f7916f0a6833e0481a66f93303075ce3a659f8bd279a39aca0c405

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 349.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zsasa-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 474b8e6a4b1f481663135474f6c9be62827bbbe05fb6f8bc31242d17bfac4e3b
MD5 87ae9d1ab0c47eff9604b6d404727d26
BLAKE2b-256 9a1e45cca83f865a80096f8f38af0cbf0d5bcbcb06c73596b7a5705be3614d3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8abaac4425967036325dd94570f795a437f4ea4fbdc518014f1254d70722d174
MD5 04a20aae4b60cd89adc39d9a8d9603c2
BLAKE2b-256 35f000d37325e955b543448f594702d04c13969f0f849b298b4a8362327be3a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 84a8e19f289f63aa9385a60920ba4c33f83404332aa7bfd765f1506d88e6ffd7
MD5 dd94e52b782415d43ed0be6bcca3f312
BLAKE2b-256 794e735cdb8427189836e84aaa001b26cdee7d66de718287c7d8e5b858329151

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0efb23e992cb5a2c73b79e7b45ee7c90629c01c9033c5d5dae02fcdf85c01bc4
MD5 33d498ccd5e5e614bd7886eb14824049
BLAKE2b-256 1dfa7e1a4769c0f0c43dc0c7f79128d3ca653e718d64aea690201401baa6ca3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c64be65d268f222fd37bdee1aed90eb68a325dfbc9b6ba81bcda3702635f18c0
MD5 b3b8c7248001b4bc57b7081a179835cc
BLAKE2b-256 a055885bd46d89c9e13e0d4eb23f323117ae2aaecc280070e4bec6c91755f6b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 349.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zsasa-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 93b6e0896f87c02be42166485efe17cc6c005371a445e6bdc75a892e0162f6e1
MD5 bfbdb4e0b15026423e50f26570569984
BLAKE2b-256 ae009e885584c193afec8fcee831cf604490ef6c6062679ed5c3816fd536244a

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61de32d1b411c9218518025dfbd1e7e675856e0fa163c713db393c390f1902f0
MD5 cb3fc0e50303610fb382b00fb1b5000e
BLAKE2b-256 7ebc0203cd65330d3c6d98e633ed22f9f0cb7fcd3f1fbe25ce31e077db3e2f32

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8d64f5e90fac42bc223ce0cc2129d24181886941d3411082a1f73c6f3a5c2b90
MD5 7616fe0d724c65f7c5bedefc269c6f30
BLAKE2b-256 56fca4cee355943a6ee33d0bdefc58126f6d18e5a60c19ce163581970a876c3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 924728c312ca95e5f58eb4d053b7294bf575f5e87e46ebaf2f0cd2e39a23f352
MD5 d19e6fb4a2916d70adc538bcd1b920e6
BLAKE2b-256 ca16a2b284dfc330ecba9e5e40e027ec043fd5063dfce89a9f3bbdcd1a927506

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp311-cp311-macosx_11_0_x86_64.whl:

Publisher: publish.yml on N283T/zsasa

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

File details

Details for the file zsasa-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea3b4039b6610dd64f556f8baff7e6bda5e11ca925757a287b796033833007e1
MD5 d98e439cbedc3b1ae075302112840ded
BLAKE2b-256 7a9ed3f8fa66457230cd7c35f9d064c18d19a55c83843246d5d7a9d163a6f061

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on N283T/zsasa

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