Fast substructure search, MCS, circular fingerprints, and molecular similarity with tautomer awareness and GPU acceleration
Project description
SMSD Pro — Molecular Graph Matching for Python
Fast substructure search, maximum common substructure (MCS), circular fingerprints, and molecular similarity — with optional tautomer awareness and GPU acceleration. No RDKit or CDK required.
Install
pip install smsd
Quick Start
import smsd
# Substructure search
assert smsd.is_substructure(
smsd.parse_smiles("c1ccccc1"), # benzene
smsd.parse_smiles("c1ccc(O)cc1")) # phenol
# Maximum Common Substructure
mcs = smsd.mcs("c1ccccc1", "c1ccc2ccccc2c1")
print(f"MCS: {len(mcs)} atoms") # 6
# Tautomer-aware MCS
mcs = smsd.mcs("CC(=O)C", "CC(O)=C", tautomer_aware=True)
# Circular fingerprint (ECFP4, tautomer-aware)
ecfp4 = smsd.circular_fingerprint("c1ccccc1", radius=2, fp_size=2048)
# Similarity
sim = smsd.similarity("c1ccccc1", "c1ccc(O)cc1")
Features
Search & Matching
| Feature | Description |
|---|---|
| Substructure search | VF2++ with 3-level NLF pruning, GPU-accelerated domain init |
| MCS | 11-level funnel: chain/tree DP → greedy → McSplit → BK → McGregor |
| SMARTS matching | Full SMARTS support including X (total connectivity), D (degree), v (valence), R (ring count), r (ring size), x (ring connectivity), / \ (E/Z stereo), $() (recursive), logical AND/OR/NOT |
| Tautomer matching | 30 transforms with pKa-informed weights, 6 solvents, pH-sensitive |
| Tautomer validation | validate_tautomer_consistency() — proton conservation check |
| CIP R/S/E/Z | assign_rs(), assign_ez() — full digraph-based stereo descriptors (IUPAC 2013) |
| MCS SMILES | find_mcs_smiles() — extract MCS as canonical SMILES string |
| findAllMCS | find_all_mcs() — top-N MCS enumeration with canonical dedup |
| SMARTS MCS | find_mcs_smarts() — largest substructure matching a SMARTS pattern |
| R-group decomposition | decompose_r_groups() — scaffold + R-group extraction |
Fingerprints
| Type | Description |
|---|---|
| Circular ECFP | Tautomer-aware structural invariants, configurable radius (2=ECFP4, 3=ECFP6, -1=whole molecule) |
| Circular FCFP | Pharmacophoric invariants (H-bond donor/acceptor, ionisable, aromatic, hydrophobic) |
| Count-based ECFP/FCFP | ecfp_counts() / fcfp_counts() — superior to binary for ML |
| Topological Torsion | topological_torsion() — 4-atom path fingerprint (SOTA on peptides) |
| Path fingerprint | Graph-aware DFS path enumeration, tautomer-invariant |
| MCS fingerprint | MCS-aware, uses chemical matching rules for path compatibility |
| Similarity metrics | tanimoto(), dice(), cosine(), soergel() — binary + count-vector |
| Format conversions | to_hex(), to_binary_string(), from_hex() — for database storage and REST APIs |
| Subset check | fingerprint_subset() — fast substructure pre-screening |
Infrastructure
| Feature | Description |
|---|---|
| MatchResult | mcs_result() — structured result: size, mapping, tanimoto |
| RDKit interop | mcs_rdkit_native(), batch_mcs_rdkit(), from_rdkit() with correct indices |
| Similarity screening | RASCAL O(V+E) upper bound for fast pre-filtering |
| Lenient parser | Best-effort recovery from malformed SMILES |
| Batch operations | OpenMP-parallel batch_substructure(), batch_mcs(), batch_mcs_rdkit() |
| Adaptive timeout | min(30s, 500+n1*n2*2) based on molecule size |
| GPU acceleration | CUDA + Apple Metal for domain init and RASCAL screening |
| Force-directed layout | force_directed_layout() for bond-crossing minimisation |
| SMACOF stress majorisation | stress_majorisation() for optimal 2D embedding |
| Scaffold templates | match_template() for 10 pre-computed common scaffolds |
| Reaction-aware MCS | find_mcs(..., reaction_aware=True) or map_reaction_aware() post-filter |
| Ring perception | compute_sssr(), layout_sssr() — clean SSSR APIs |
Performance
Benchmarked alongside RDKit 2025.09.2 on the same machine, same Python process. Both toolkits excel at different tasks — use whichever fits your workflow, or both together.
| Pair | SMSD | RDKit | Notes |
|---|---|---|---|
| Morphine / Codeine | 51 us | 569 ms | Complex ring system |
| Coronene self-match | 6 us | 780 us | Symmetric PAH |
| Caffeine / Theophylline | 17 us | 564 us | N-methyl difference |
| PEG-12 / PEG-16 | 1.6 ms | 2.2 ms | Linear polymer |
Full data: benchmarks/results_python.tsv
Circular Fingerprint (Novel)
Tautomer-aware Morgan/ECFP — includes tautomer class in the atom invariant, so tautomeric forms of the same molecule produce more similar fingerprints.
ECFP vs FCFP: SMSD supports both fingerprint types (Rogers & Hahn 2010):
- ECFP (Extended Connectivity): atom invariant = atomic number, degree, charge, ring, aromaticity, tautomer class. Best for structural similarity.
- FCFP (Functional Class): atom invariant = pharmacophoric features (H-bond donor/acceptor, positive/negative ionisable, aromatic, hydrophobic). Best for activity-based similarity and SAR.
| Name | Radius | Type | SMSD call |
|---|---|---|---|
| ECFP2 | 1 | Structural | circular_fingerprint(mol, radius=1) |
| ECFP4 | 2 | Structural | circular_fingerprint(mol, radius=2) |
| ECFP6 | 3 | Structural | circular_fingerprint(mol, radius=3) |
| FCFP2 | 1 | Pharmacophoric | circular_fingerprint(mol, radius=1, mode="fcfp") |
| FCFP4 | 2 | Pharmacophoric | circular_fingerprint(mol, radius=2, mode="fcfp") |
| FCFP6 | 3 | Pharmacophoric | circular_fingerprint(mol, radius=3, mode="fcfp") |
| Whole | -1 | Either | circular_fingerprint(mol, radius=-1) |
import smsd
# ECFP4 (structural, recommended default)
ecfp4 = smsd.circular_fingerprint("c1ccccc1", radius=2, fp_size=2048)
# FCFP4 (pharmacophoric — H-bond donors/acceptors, ionisable, aromatic, hydrophobic)
fcfp4 = smsd.circular_fingerprint("c1ccccc1", radius=2, fp_size=2048, mode="fcfp")
# ECFP6 (radius 3, captures larger environments)
ecfp6 = smsd.circular_fingerprint("c1ccccc1", radius=3, fp_size=2048)
# ECFP2 (radius 1, fastest, less discriminating)
ecfp2 = smsd.circular_fingerprint("c1ccccc1", radius=1, fp_size=2048)
# Whole molecule (radius -1 = expand until convergence)
whole = smsd.circular_fingerprint("c1ccccc1", radius=-1, fp_size=2048)
# Tanimoto similarity (works with any fingerprint type)
sim = smsd.tanimoto(
smsd.circular_fingerprint("c1ccccc1", radius=2),
smsd.circular_fingerprint("c1ccc(O)cc1", radius=2))
Using with RDKit
SMSD works standalone or alongside RDKit. Use RDKit for parsing and drawing, SMSD for fast matching:
from rdkit import Chem
import smsd
mol1 = Chem.MolFromSmiles("c1ccccc1")
mol2 = Chem.MolFromSmiles("c1ccc(O)cc1")
# MCS with RDKit molecules
result = smsd.mcs_rdkit(mol1, mol2)
# Depict MCS with highlighted atoms (works in Jupyter)
img = smsd.depict_mcs("c1ccccc1", "c1ccc(O)cc1")
# Export to SDF
smsd.export_sdf([smsd.parse_smiles(s) for s in ["CCO", "c1ccccc1"]], "output.sdf")
# Convert between SMSD and RDKit
g = smsd.from_rdkit(mol1)
rdmol = smsd.to_rdkit(g)
RDKit is optional —
pip install smsdworks without it.
Solvent-Aware Tautomer Matching
import smsd
opts = smsd.ChemOptions.tautomer_profile()
opts.solvent = smsd.Solvent.DMSO # adjust for DMSO
opts.with_ph(5.0) # adjust for pH 5.0
mcs = smsd.mcs("CC(=O)C", "CC(O)=C", chem=opts)
Supported solvents: AQUEOUS, DMSO, METHANOL, CHLOROFORM, ACETONITRILE, DIETHYL_ETHER
Platform & GPU Support
SMSD automatically dispatches to the best available compute backend:
| Platform | CPU | GPU |
|---|---|---|
| macOS (Apple Silicon) | OpenMP | Metal (zero-copy unified memory) |
| macOS (Intel) | OpenMP | CPU fallback |
| Linux | OpenMP | CUDA (if available) |
| Windows | OpenMP | CUDA (if available) |
import smsd
# Check GPU availability
if smsd.gpu_is_available():
print(smsd.gpu_device_info())
# e.g. "Metal GPU: Apple M2 Pro [OpenMP 5.0, 10 threads]"
# e.g. "GPU: Tesla T4 [OpenMP 4.5, 8 threads]"
# GPU is used automatically for:
# - Domain initialization in VF2++ substructure search
# - RASCAL batch screening
# - NLF histogram computation
# CPU fallback is seamless — no code changes needed
results = smsd.batch_substructure(query, targets) # uses GPU if available
API Reference
Core Functions
# Parsing
mol = smsd.parse_smiles("c1ccccc1")
smi = smsd.to_smiles(mol)
# Substructure
smsd.is_substructure(query, target)
mapping = smsd.find_substructure(query, target)
# MCS
mapping = smsd.find_mcs(mol1, mol2)
mapping = smsd.mcs("SMILES1", "SMILES2", tautomer_aware=True)
# Similarity
sim = smsd.similarity("SMILES1", "SMILES2")
ub = smsd.similarity_upper_bound(mol1, mol2)
hits = smsd.screen_targets(query, library, threshold=0.5)
# Fingerprints
fp = smsd.path_fingerprint(mol, path_length=7, fp_size=2048)
fp = smsd.circular_fingerprint(mol, radius=2, fp_size=2048) # ECFP4
fp = smsd.circular_fingerprint(mol, radius=2, fp_size=2048, mode="fcfp") # FCFP4
sim = smsd.tanimoto(fp1, fp2)
ok = smsd.fingerprint_subset(query_fp, target_fp)
# Format conversions (database storage, REST APIs)
hex_str = smsd.to_hex(fp, fp_size=2048)
fp_back = smsd.from_hex(hex_str)
bits = smsd.to_binary_string(fp, fp_size=2048)
# Batch (OpenMP parallel)
results = smsd.batch_substructure(query, targets)
results = smsd.batch_mcs(query, targets)
fps = smsd.batch_fingerprint(mols, path_length=7, fp_size=2048)
hits = smsd.batch_fingerprint_screen(query_fp, target_fps)
# RASCAL pre-screen + exact MCS in one call
matches = smsd.screen_and_match(query, targets, threshold=0.5)
# GPU
smsd.gpu_is_available()
smsd.gpu_device_info()
Configuration
opts = smsd.ChemOptions()
opts.match_atom_type = True
opts.tautomer_aware = True
opts.ring_fusion_mode = smsd.RingFusionMode.STRICT
opts.match_bond_order = smsd.BondOrderMode.LOOSE
# Profiles
opts = smsd.ChemOptions.tautomer_profile()
opts = smsd.ChemOptions.profile("strict")
Complementary Strengths
SMSD is designed to work alongside existing toolkits, not replace them. Each toolkit brings unique strengths to the cheminformatics ecosystem:
| Capability | SMSD Pro | RDKit | CDK |
|---|---|---|---|
| Tautomer-aware circular FP | Yes | — | — |
| pH/solvent-sensitive matching | Yes | — | — |
| Multi-level MCS pipeline | 11 levels | FMCS | MCSPlus |
| GPU acceleration | CUDA + Metal | — | — |
| Descriptor calculation | — | Extensive | Extensive |
| Reaction handling | Basic | Comprehensive | Comprehensive |
| 3D conformers | — | Yes | Yes |
| Header-only C++ | Yes | — | — |
Recommended workflow: Use RDKit or CDK for parsing, descriptors, and 3D — use SMSD for MCS and substructure matching.
Also Available
- Java:
com.bioinceptionlabs:smsd:6.6.2on Maven Central - C++: Header-only, zero dependencies — GitHub
Citation
If you use SMSD in your research, please cite:
Rahman SA, Bashton M, Holliday GL, Schrader R, Thornton JM. Small Molecule Subgraph Detector (SMSD) toolkit. Journal of Cheminformatics, 1:12, 2009. DOI: 10.1186/1758-2946-1-12
A machine-readable CITATION.cff is available for automated citation tools.
License
Apache 2.0 — Copyright (c) 2018-2026 Syed Asad Rahman, BioInception PVT LTD. See NOTICE for attribution, trademark, and novel algorithm terms.
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 smsd-6.6.2.tar.gz.
File metadata
- Download URL: smsd-6.6.2.tar.gz
- Upload date:
- Size: 654.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce14b5d53ad546719f8aadaab2d53aa3a6da469b70e95b5f607a3f1fbf7b5413
|
|
| MD5 |
0be10ceddde12457c6eb2a130f71d942
|
|
| BLAKE2b-256 |
bcdef0a8312d8069bec34498ffce507c1b87cab8b76719a3f7ae41f38ee0c68b
|
Provenance
The following attestation bundles were made for smsd-6.6.2.tar.gz:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2.tar.gz -
Subject digest:
ce14b5d53ad546719f8aadaab2d53aa3a6da469b70e95b5f607a3f1fbf7b5413 - Sigstore transparency entry: 1202748148
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: smsd-6.6.2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 658.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb61e33190f71357124fabbe9ee58fbb13aec2a62d47120268eb34ab87b13ae5
|
|
| MD5 |
1e08f4e81f300311678b98d46559419e
|
|
| BLAKE2b-256 |
e1a0b9e9310420d261bcb912926680927da2b995ba05fb98abc54abeee385632
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp313-cp313-win_amd64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp313-cp313-win_amd64.whl -
Subject digest:
cb61e33190f71357124fabbe9ee58fbb13aec2a62d47120268eb34ab87b13ae5 - Sigstore transparency entry: 1202748221
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: smsd-6.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 740.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed1e7ef2e39e686e95672dcaef197b7a8681831d717252c3f3185f787bfc1982
|
|
| MD5 |
84488593959237d1ebcf3bd7a410248f
|
|
| BLAKE2b-256 |
90a8b0fb5087ed93968dfe347c2be4975ab829057506e6cb937e0bf8613a5b26
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
ed1e7ef2e39e686e95672dcaef197b7a8681831d717252c3f3185f787bfc1982 - Sigstore transparency entry: 1202748383
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: smsd-6.6.2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 687.9 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 |
6010bf281ffb5286720588ca41c852a8844bef927df6ee2303d5b4fd5a835450
|
|
| MD5 |
f852fdbb7eac3479b4ba6310923735d0
|
|
| BLAKE2b-256 |
47ab41b347571f70b49f087eb0a7fe333657d23145013e8362598b21cdc6dc4a
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
6010bf281ffb5286720588ca41c852a8844bef927df6ee2303d5b4fd5a835450 - Sigstore transparency entry: 1202748333
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: smsd-6.6.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 658.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
264d9368bcf4e35c15e272f723ebe1c3c4227631965298605283c27610200741
|
|
| MD5 |
ffbdd1bd17be2266b8424c7ab4e10b5a
|
|
| BLAKE2b-256 |
544b573249d350bb7000377818e6500e0a6a97a5b3121560d071e02722eab1c1
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp312-cp312-win_amd64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp312-cp312-win_amd64.whl -
Subject digest:
264d9368bcf4e35c15e272f723ebe1c3c4227631965298605283c27610200741 - Sigstore transparency entry: 1202748169
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: smsd-6.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 740.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e56182250684abc5cd459fab1126e76c498b18c12d6cdf2017db62c288caf7dc
|
|
| MD5 |
c5ef39e0d7fba33f9f8faba55f254770
|
|
| BLAKE2b-256 |
6e1f15715c2fd3f8127dd25f972a200da0f7c6b9cdf066998fe16b08bfeb61d8
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
e56182250684abc5cd459fab1126e76c498b18c12d6cdf2017db62c288caf7dc - Sigstore transparency entry: 1202748359
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: smsd-6.6.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 687.8 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 |
033cc2aa0370c26fcc4beba6e3a1ccb36c1ceb57df16d51896bc5be261632ff8
|
|
| MD5 |
4f20564f3e7225bcb5f58655e81c513d
|
|
| BLAKE2b-256 |
cf2fd0786253eb25d887776291e5d47ad1ec4aedf85db6bb72f5c63799f1584d
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
033cc2aa0370c26fcc4beba6e3a1ccb36c1ceb57df16d51896bc5be261632ff8 - Sigstore transparency entry: 1202748290
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: smsd-6.6.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 656.4 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 |
ece856f50350c657dc606f33d75b5b4caae510f89ad5c1208e00b7f16c2b1909
|
|
| MD5 |
65d0f3d46a21647599fedec1dbacf614
|
|
| BLAKE2b-256 |
e3ccb85019cb2488896dd1eaabf0eed7778bbd12518d0e6fdff592ddb0a36475
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp311-cp311-win_amd64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp311-cp311-win_amd64.whl -
Subject digest:
ece856f50350c657dc606f33d75b5b4caae510f89ad5c1208e00b7f16c2b1909 - Sigstore transparency entry: 1202748248
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: smsd-6.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 737.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6feadee3efc2f99d11c37514d274294d9d4c7e86dde0e4d45198d33d7c9d5d9
|
|
| MD5 |
bbdbba6020f0721aba6263f740475279
|
|
| BLAKE2b-256 |
02c14101701a76654edde3a76ef9be26f231d2fbeeaf01d7e52fc5c78fbdcd58
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
e6feadee3efc2f99d11c37514d274294d9d4c7e86dde0e4d45198d33d7c9d5d9 - Sigstore transparency entry: 1202748193
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: smsd-6.6.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 687.7 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 |
02ccf5a6b202a32dbb3fd8043d4e7dbe097add7b1687b6953a3ddd8e7ee71e15
|
|
| MD5 |
2edeae9de0115b80c7f382e17466ad18
|
|
| BLAKE2b-256 |
aefb09234ee7488710a0cebf73ab0de2ef7c6b2985902992cccc8e73cc21dc1b
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
02ccf5a6b202a32dbb3fd8043d4e7dbe097add7b1687b6953a3ddd8e7ee71e15 - Sigstore transparency entry: 1202748272
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: smsd-6.6.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 655.7 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b48e7bf5dd68803681f854347dcc3db2c53e73e4dcd676ac2ab283b181da7e72
|
|
| MD5 |
9739207c98bfdfb81b5878af32a90430
|
|
| BLAKE2b-256 |
b7b04c90496a48400bd0924b713efe1721c246dc24f03ecb38b863b9fbefb1ca
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp310-cp310-win_amd64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp310-cp310-win_amd64.whl -
Subject digest:
b48e7bf5dd68803681f854347dcc3db2c53e73e4dcd676ac2ab283b181da7e72 - Sigstore transparency entry: 1202748229
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: smsd-6.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 736.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cef149f8e84dd09a2004e74b468a18e5d30dc8c40d5e7c710aa43cd4ba2cf37
|
|
| MD5 |
d26a374019fc3ad5e130defbb2e5b59d
|
|
| BLAKE2b-256 |
657ab314fdb0fd20fde9fb032e24053317a040381386867ab52fe49b62736f52
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4cef149f8e84dd09a2004e74b468a18e5d30dc8c40d5e7c710aa43cd4ba2cf37 - Sigstore transparency entry: 1202748309
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type:
File details
Details for the file smsd-6.6.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: smsd-6.6.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 686.4 kB
- Tags: CPython 3.10, 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 |
b28e4b300b2a4b14cd1c7b60d888fe8b27d00bc631c1f8cafd81d3717d057693
|
|
| MD5 |
c2c2c7cca6f6203a426902ea70fea5f1
|
|
| BLAKE2b-256 |
9c08914fcc155e3d47079d630bbfcb09840e77520f81afbbf90c6eff684dbb2e
|
Provenance
The following attestation bundles were made for smsd-6.6.2-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
python-publish.yml on asad/SMSD
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smsd-6.6.2-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
b28e4b300b2a4b14cd1c7b60d888fe8b27d00bc631c1f8cafd81d3717d057693 - Sigstore transparency entry: 1202748204
- Sigstore integration time:
-
Permalink:
asad/SMSD@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Branch / Tag:
refs/tags/v6.6.2 - Owner: https://github.com/asad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@521c591dcc3135fa9225bcebe0131de6a2714b4b -
Trigger Event:
release
-
Statement type: