Skip to main content

Fast substructure search, MCS, circular fingerprints, and molecular similarity with tautomer awareness and GPU acceleration

Project description

SMSD Pro

SMSD Pro — Molecular Graph Matching for Python

PyPI Downloads License 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

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 smsd works 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.3.0 on 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smsd-6.3.0.tar.gz (585.0 kB view details)

Uploaded Source

Built Distributions

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

smsd-6.3.0-cp313-cp313-win_amd64.whl (571.8 kB view details)

Uploaded CPython 3.13Windows x86-64

smsd-6.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (651.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

smsd-6.3.0-cp313-cp313-macosx_11_0_arm64.whl (593.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

smsd-6.3.0-cp312-cp312-win_amd64.whl (571.8 kB view details)

Uploaded CPython 3.12Windows x86-64

smsd-6.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (651.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

smsd-6.3.0-cp312-cp312-macosx_11_0_arm64.whl (593.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

smsd-6.3.0-cp311-cp311-win_amd64.whl (570.6 kB view details)

Uploaded CPython 3.11Windows x86-64

smsd-6.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (648.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

smsd-6.3.0-cp311-cp311-macosx_11_0_arm64.whl (592.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

smsd-6.3.0-cp310-cp310-win_amd64.whl (569.7 kB view details)

Uploaded CPython 3.10Windows x86-64

smsd-6.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (646.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

smsd-6.3.0-cp310-cp310-macosx_11_0_arm64.whl (591.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file smsd-6.3.0.tar.gz.

File metadata

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

File hashes

Hashes for smsd-6.3.0.tar.gz
Algorithm Hash digest
SHA256 5b99cee87367329122ef9de4a2bd80c725882197ff8d29a045b30779f8ba4e57
MD5 c2fb777992a39680678f696c70ecda61
BLAKE2b-256 3579086c50799e07975d8ecdcfe28b6e03d64b23dba7db2889d9be55387fc977

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0.tar.gz:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: smsd-6.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 571.8 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 smsd-6.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b10c0416c5fe8d2671aa82f23a3bbc39d81bb471f2ec483ce0ecb8a41a156b13
MD5 e998138cfba9f44bf44917df16fde328
BLAKE2b-256 00ca9f2f6868971f4f4a01fe4a645b2d6633b82a0c4b368d01e1114ad6f2ee44

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp313-cp313-win_amd64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f1cfaebf9b6637a731cd862b5adc6c712a6c53b281e8ba8099f0a544e16ba8c
MD5 c1b10e3289f5bfbf9b077dba9c151e6a
BLAKE2b-256 d65b6af87b8ada8fa00dd8cc214a8173e7e600e0d915ae79976f1383b855f6aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b54d55370d0f6dc6e96e0af1426a40207dc6339ce729ee7cf4db9bcd2fc67441
MD5 102abd013638cc7f728d1f3473581ecb
BLAKE2b-256 b4b974b95db900ffec2b1cfd3d3d694f6a7ad3e3712fb26bc9f4cb767501c90a

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: smsd-6.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 571.8 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 smsd-6.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7ede09729070846db6142b4305158d7a4851593c3c545f7834c5400524518dbe
MD5 d3f8f36fd5c756277b3252689244c596
BLAKE2b-256 2dc313e4d6ea4a8d10b47fc700aca7fe49c78798a98a0ec1741928cba3b943f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp312-cp312-win_amd64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e609ab7adccf231ccd05bd03dd9018eebe0ed6a49cd279e6f3ccdc6b0c0fd99
MD5 7a01ddf8939074229de98acf3851399c
BLAKE2b-256 a71d30d04d8281316d0cd7c291792d4a4d25b39df740d520e971e991f30fd841

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b1e86efa94ff1138f0cbb52744b527cd488ebd037559ce6f01ef364f9720b0b
MD5 d52d2a80b2bd03d8f1002a1c6e03eeb5
BLAKE2b-256 ab6c877c593f33be47aed825d1ab055b3fd20048d39f6c959497728c7910a07d

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: smsd-6.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 570.6 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 smsd-6.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3e01325fc4f8eafd3cf5cb5ef54dd14b7a25b1afb17183a9dd804ae736b0f91c
MD5 72f61a85463aec5599f93715ad0838dc
BLAKE2b-256 ca44e2360d565130a5bfffda3421da32a1c02216100bc15cdaa60af31efb1754

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp311-cp311-win_amd64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a413c2be7f4582468db4bc6c8389d76014d60fdab7eefb0c878634f3e782635
MD5 c24df4bd18e383fdb42cbf0b170d343e
BLAKE2b-256 f29ef5566cdbac65e3d4a49514b7c77071e56765e87fe6c04067240650369e89

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 558533dd111fa5648db8a3d95e5ad9ac32dad41e43f792997277226525155ed6
MD5 072ab69971fc38273aa240e575999d77
BLAKE2b-256 aa59a0e3319e231a9d849df33d6248012c5307e67ce9dabddb2ed8cf0f9b5125

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: smsd-6.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 569.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

Hashes for smsd-6.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 08f7d0432e1ba001f9f41fa4401cb3f8ddb2648fc5ad11e76e7d74db732b0dd4
MD5 f122412179b73f7809c237d790469511
BLAKE2b-256 d7901f86766f88555049fa8b8505d242c810b960bb5c7aadb1f7c516e94ec26f

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp310-cp310-win_amd64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6ed034363a3f44053c09e6b8e04e255d4e9bc5f2c2acd2d4c8096916955d2d1c
MD5 03202c8091524de96f965c5289ce7892
BLAKE2b-256 4b0c3ee1ce869af0edf9fc3133a5cd921856df0652c97adf63e12eef4e5e3b40

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish.yml on asad/SMSD

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

File details

Details for the file smsd-6.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for smsd-6.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8702c476acfb6de16d2a76e42ddbe05829e6b1de1fe4abe1a3093a066f006842
MD5 3da6cf31f9fbc65eba6973ff3ed2b1d8
BLAKE2b-256 b7ed1b4a676e2fe448572f8dc08524b76dedf78f4077326254acdf27cf2db802

See more details on using hashes here.

Provenance

The following attestation bundles were made for smsd-6.3.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on asad/SMSD

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