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.1.tar.gz (176.2 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.1-cp313-cp313-win_amd64.whl (348.9 kB view details)

Uploaded CPython 3.13Windows x86-64

zsasa-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.1 kB view details)

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

zsasa-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.0 kB view details)

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

zsasa-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl (269.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

zsasa-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (246.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

zsasa-0.2.1-cp312-cp312-win_amd64.whl (348.9 kB view details)

Uploaded CPython 3.12Windows x86-64

zsasa-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.1 kB view details)

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

zsasa-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.0 kB view details)

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

zsasa-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl (269.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

zsasa-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (246.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zsasa-0.2.1-cp311-cp311-win_amd64.whl (348.9 kB view details)

Uploaded CPython 3.11Windows x86-64

zsasa-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (901.1 kB view details)

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

zsasa-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (854.0 kB view details)

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

zsasa-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl (269.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

zsasa-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (246.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: zsasa-0.2.1.tar.gz
  • Upload date:
  • Size: 176.2 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.1.tar.gz
Algorithm Hash digest
SHA256 3f7dad38621c6dedf3921b1aad04354b54a3f126e3f7ddc98b36f751eb8dca6d
MD5 496739d0696ca1750f5ef316fd3ac465
BLAKE2b-256 7a8e800171ad4730ccb4e512446bcc1e30dc3468ce8e3d85f135e1565b57f88d

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1.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.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 348.9 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 525a3cfa5a1cf58669a1680b0cb038871bb0db0e7054ee06c4fb97582a83f0c4
MD5 c72dd2b3d52c9cb862545da4b4a37e7e
BLAKE2b-256 f3ea019cce84ae0076eb08921d42643f0ea00eaae7dec31c900ece6cb6b519ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f8cf5ea12eda87f6b4964be85573410637f9e7fb92fda14f5421960aa78c632
MD5 c49521df9967c4f5244ebd22dcd300d7
BLAKE2b-256 f98d11092bf468f9e6bc79fe8355259cdf9ffd7036131db4b5d57b6f2941d3f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c034316d4bdebb8cd8b15e4078df8d6dab0603dde27f72babe324d10491cbf6
MD5 a6eab3e5b15396169f4a8b0bf312348b
BLAKE2b-256 90f7c126bea513734fc4a2f781ff45aad45554497e6e9a0c8805f6f25342aeac

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2f3e124086d1ad48fc6a09586a5a8416ceb2569bc1445b329e924a3775f06228
MD5 eebc3cd3625ba4397a09f8d403bce3d5
BLAKE2b-256 ccf2d676276683d37b3107804936e673ac820d40974866b0cb71c213fedcf0fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 909c18e5db48c442678f8c705cb3e8cbcdb220bf47744556dc631091ba1e32af
MD5 c6854d7b49cb2f508b4d3b8a16f6718f
BLAKE2b-256 07c291a896c5c3b3102106a6d33316f44209d82d860bab61d38862e84e7719b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 348.9 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e325234857e5df93afaf67af94e5ede34b602f69b91ea82e912bef9fe88b962b
MD5 d8e646c0f1096a4e8982bcc1d9514be8
BLAKE2b-256 e09a32229f5ea69be2cc63fd1ac76eb8e4b056badebd31ec142902a6ef18cc91

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca6f8f5c74ce4aeab619ad1e4294442ee12c96487e0bd1394a3326bc1c7f4821
MD5 a6b17d067728ca3ce4fd407f7866328d
BLAKE2b-256 8d4ef1b4dc9191bb43d513f774c416c50db985adf0621f990f033c8a0a53e2f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d752dfed97c513cd78553700453e79645c8d54c0e3d338cf8cd17cf08e96efbf
MD5 fbc01dee96d9377076f2a198a113aa65
BLAKE2b-256 fd41157de62c42fe1df9d28c6bce53d506c57f2bab5c922b8e9282769f80fb10

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c5e2a0a8e5d2aca04d6f5934ac7f9f1eb52b591eabddbc1422b20b765bcc7aa1
MD5 349ca8645ec56670e38d35572bfec187
BLAKE2b-256 e1dc13d4359191f6aee42c6246a2faef8ed1b7a54d412727ce10df5ecfe56544

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a54a7087db3fd596e1d5c3c6363fede53eb7ebdf8c49e0a4d95e9210f79a5c6
MD5 27c0594124ca0fe545ebe383ca0e4bf4
BLAKE2b-256 d4a72fe408086083dfd4eb794a31963bff544bdb66ebd55ae3724f184d489431

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: zsasa-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 348.9 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1e2710beb2df64cb8b686a135eb2df46a487676b71ce0075b9495dc1c4e9b1a3
MD5 52d1930627aaedbe02805c608393398c
BLAKE2b-256 0fd68bac7073a93a8d6a7ebe7ac13fc13d2f37cbaef065257e614de6d599c8dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fa48df71c2b5a0d280a6ea5adc508dca5506d2e5cb44c5473b8c7a09cec68c46
MD5 699acfda5d34917f1cfdc3446411c327
BLAKE2b-256 9e6a547271a94a51233e89930f57a35717341d6f4cb1017aaa5277db941dbbb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d591e6b9978a22f2c286fe4f667a7e7ef92784c541330389a48819029d76331b
MD5 dd95dff47c1fdd2d13a65189c1eed243
BLAKE2b-256 313e128499581a16f7c88fce2bfc3bc9a75b507a5ab03d67492e50cf9a5aa84a

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 47add36f725d37578e431881a571cae9c5ae3cfa1606a291c1c403314054c6b8
MD5 a74765c5e59032aecf625cbc7dbcdba9
BLAKE2b-256 18c5c9a4f826bfceb7604c7e9386c4184843871ac9f54c16e2facf3c7107f00f

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zsasa-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13af616bc02887713787bbd2d6505ee4043287a0b6f83532d35a5734b890f08c
MD5 c9235217f36e899d3c8963c5610ab6a5
BLAKE2b-256 5d9ff8606dbfcf641e6c9209c39912d2b7ab17e3c77c410d1d80a864dbfb760e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zsasa-0.2.1-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