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:
ZSASA_LIBenvironment variable (if set)../zig-out/lib/(relative to package)/usr/local/lib//usr/lib/- 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 datacalculate_sasa_from_model(model)- Calculate SASA from model objectcalculate_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f7dad38621c6dedf3921b1aad04354b54a3f126e3f7ddc98b36f751eb8dca6d
|
|
| MD5 |
496739d0696ca1750f5ef316fd3ac465
|
|
| BLAKE2b-256 |
7a8e800171ad4730ccb4e512446bcc1e30dc3468ce8e3d85f135e1565b57f88d
|
Provenance
The following attestation bundles were made for zsasa-0.2.1.tar.gz:
Publisher:
publish.yml on N283T/zsasa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1.tar.gz -
Subject digest:
3f7dad38621c6dedf3921b1aad04354b54a3f126e3f7ddc98b36f751eb8dca6d - Sigstore transparency entry: 991769141
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
525a3cfa5a1cf58669a1680b0cb038871bb0db0e7054ee06c4fb97582a83f0c4
|
|
| MD5 |
c72dd2b3d52c9cb862545da4b4a37e7e
|
|
| BLAKE2b-256 |
f3ea019cce84ae0076eb08921d42643f0ea00eaae7dec31c900ece6cb6b519ba
|
Provenance
The following attestation bundles were made for zsasa-0.2.1-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on N283T/zsasa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp313-cp313-win_amd64.whl -
Subject digest:
525a3cfa5a1cf58669a1680b0cb038871bb0db0e7054ee06c4fb97582a83f0c4 - Sigstore transparency entry: 991769197
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
- Download URL: zsasa-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 901.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f8cf5ea12eda87f6b4964be85573410637f9e7fb92fda14f5421960aa78c632
|
|
| MD5 |
c49521df9967c4f5244ebd22dcd300d7
|
|
| BLAKE2b-256 |
f98d11092bf468f9e6bc79fe8355259cdf9ffd7036131db4b5d57b6f2941d3f8
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
0f8cf5ea12eda87f6b4964be85573410637f9e7fb92fda14f5421960aa78c632 - Sigstore transparency entry: 991769206
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 854.0 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c034316d4bdebb8cd8b15e4078df8d6dab0603dde27f72babe324d10491cbf6
|
|
| MD5 |
a6eab3e5b15396169f4a8b0bf312348b
|
|
| BLAKE2b-256 |
90f7c126bea513734fc4a2f781ff45aad45554497e6e9a0c8805f6f25342aeac
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
7c034316d4bdebb8cd8b15e4078df8d6dab0603dde27f72babe324d10491cbf6 - Sigstore transparency entry: 991769229
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl
- Upload date:
- Size: 269.6 kB
- Tags: CPython 3.13, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f3e124086d1ad48fc6a09586a5a8416ceb2569bc1445b329e924a3775f06228
|
|
| MD5 |
eebc3cd3625ba4397a09f8d403bce3d5
|
|
| BLAKE2b-256 |
ccf2d676276683d37b3107804936e673ac820d40974866b0cb71c213fedcf0fa
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp313-cp313-macosx_11_0_x86_64.whl -
Subject digest:
2f3e124086d1ad48fc6a09586a5a8416ceb2569bc1445b329e924a3775f06228 - Sigstore transparency entry: 991769185
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 246.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
909c18e5db48c442678f8c705cb3e8cbcdb220bf47744556dc631091ba1e32af
|
|
| MD5 |
c6854d7b49cb2f508b4d3b8a16f6718f
|
|
| BLAKE2b-256 |
07c291a896c5c3b3102106a6d33316f44209d82d860bab61d38862e84e7719b9
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
909c18e5db48c442678f8c705cb3e8cbcdb220bf47744556dc631091ba1e32af - Sigstore transparency entry: 991769223
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e325234857e5df93afaf67af94e5ede34b602f69b91ea82e912bef9fe88b962b
|
|
| MD5 |
d8e646c0f1096a4e8982bcc1d9514be8
|
|
| BLAKE2b-256 |
e09a32229f5ea69be2cc63fd1ac76eb8e4b056badebd31ec142902a6ef18cc91
|
Provenance
The following attestation bundles were made for zsasa-0.2.1-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on N283T/zsasa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp312-cp312-win_amd64.whl -
Subject digest:
e325234857e5df93afaf67af94e5ede34b602f69b91ea82e912bef9fe88b962b - Sigstore transparency entry: 991769230
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
- Download URL: zsasa-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 901.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca6f8f5c74ce4aeab619ad1e4294442ee12c96487e0bd1394a3326bc1c7f4821
|
|
| MD5 |
a6b17d067728ca3ce4fd407f7866328d
|
|
| BLAKE2b-256 |
8d4ef1b4dc9191bb43d513f774c416c50db985adf0621f990f033c8a0a53e2f2
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
ca6f8f5c74ce4aeab619ad1e4294442ee12c96487e0bd1394a3326bc1c7f4821 - Sigstore transparency entry: 991769193
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 854.0 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d752dfed97c513cd78553700453e79645c8d54c0e3d338cf8cd17cf08e96efbf
|
|
| MD5 |
fbc01dee96d9377076f2a198a113aa65
|
|
| BLAKE2b-256 |
fd41157de62c42fe1df9d28c6bce53d506c57f2bab5c922b8e9282769f80fb10
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
d752dfed97c513cd78553700453e79645c8d54c0e3d338cf8cd17cf08e96efbf - Sigstore transparency entry: 991769146
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl
- Upload date:
- Size: 269.6 kB
- Tags: CPython 3.12, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5e2a0a8e5d2aca04d6f5934ac7f9f1eb52b591eabddbc1422b20b765bcc7aa1
|
|
| MD5 |
349ca8645ec56670e38d35572bfec187
|
|
| BLAKE2b-256 |
e1dc13d4359191f6aee42c6246a2faef8ed1b7a54d412727ce10df5ecfe56544
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp312-cp312-macosx_11_0_x86_64.whl -
Subject digest:
c5e2a0a8e5d2aca04d6f5934ac7f9f1eb52b591eabddbc1422b20b765bcc7aa1 - Sigstore transparency entry: 991769171
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 246.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a54a7087db3fd596e1d5c3c6363fede53eb7ebdf8c49e0a4d95e9210f79a5c6
|
|
| MD5 |
27c0594124ca0fe545ebe383ca0e4bf4
|
|
| BLAKE2b-256 |
d4a72fe408086083dfd4eb794a31963bff544bdb66ebd55ae3724f184d489431
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
8a54a7087db3fd596e1d5c3c6363fede53eb7ebdf8c49e0a4d95e9210f79a5c6 - Sigstore transparency entry: 991769154
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e2710beb2df64cb8b686a135eb2df46a487676b71ce0075b9495dc1c4e9b1a3
|
|
| MD5 |
52d1930627aaedbe02805c608393398c
|
|
| BLAKE2b-256 |
0fd68bac7073a93a8d6a7ebe7ac13fc13d2f37cbaef065257e614de6d599c8dd
|
Provenance
The following attestation bundles were made for zsasa-0.2.1-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on N283T/zsasa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp311-cp311-win_amd64.whl -
Subject digest:
1e2710beb2df64cb8b686a135eb2df46a487676b71ce0075b9495dc1c4e9b1a3 - Sigstore transparency entry: 991769217
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
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
- Download URL: zsasa-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 901.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa48df71c2b5a0d280a6ea5adc508dca5506d2e5cb44c5473b8c7a09cec68c46
|
|
| MD5 |
699acfda5d34917f1cfdc3446411c327
|
|
| BLAKE2b-256 |
9e6a547271a94a51233e89930f57a35717341d6f4cb1017aaa5277db941dbbb8
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
fa48df71c2b5a0d280a6ea5adc508dca5506d2e5cb44c5473b8c7a09cec68c46 - Sigstore transparency entry: 991769202
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 854.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d591e6b9978a22f2c286fe4f667a7e7ef92784c541330389a48819029d76331b
|
|
| MD5 |
dd95dff47c1fdd2d13a65189c1eed243
|
|
| BLAKE2b-256 |
313e128499581a16f7c88fce2bfc3bc9a75b507a5ab03d67492e50cf9a5aa84a
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
d591e6b9978a22f2c286fe4f667a7e7ef92784c541330389a48819029d76331b - Sigstore transparency entry: 991769174
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl
- Upload date:
- Size: 269.6 kB
- Tags: CPython 3.11, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47add36f725d37578e431881a571cae9c5ae3cfa1606a291c1c403314054c6b8
|
|
| MD5 |
a74765c5e59032aecf625cbc7dbcdba9
|
|
| BLAKE2b-256 |
18c5c9a4f826bfceb7604c7e9386c4184843871ac9f54c16e2facf3c7107f00f
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp311-cp311-macosx_11_0_x86_64.whl -
Subject digest:
47add36f725d37578e431881a571cae9c5ae3cfa1606a291c1c403314054c6b8 - Sigstore transparency entry: 991769180
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type:
File details
Details for the file zsasa-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: zsasa-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 246.5 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13af616bc02887713787bbd2d6505ee4043287a0b6f83532d35a5734b890f08c
|
|
| MD5 |
c9235217f36e899d3c8963c5610ab6a5
|
|
| BLAKE2b-256 |
5d9ff8606dbfcf641e6c9209c39912d2b7ab17e3c77c410d1d80a864dbfb760e
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zsasa-0.2.1-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
13af616bc02887713787bbd2d6505ee4043287a0b6f83532d35a5734b890f08c - Sigstore transparency entry: 991769159
- Sigstore integration time:
-
Permalink:
N283T/zsasa@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/N283T
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7232e8bcf0a0eb20d626cff8706d4ffc970e0b31 -
Trigger Event:
push
-
Statement type: