Skip to main content

SMSD Pro

SMSD Pro™ for Python

PyPI Licence

SMSD Pro provides substructure search, maximum common substructure (MCS) search, fingerprints and similarity screening for chemical graphs. Core matching needs no RDKit, CDK or Java; RDKit is optional, for RDKit molecules and the RDKit image helpers.

Installation

python -m pip install "smsd==8.0.2"

To include RDKit, install the rdkit extra:

python -m pip install "smsd[rdkit]==8.0.2"

The CPU/OpenMP wheels cover CPython 3.10–3.14 on macOS arm64, Linux x86_64 and aarch64, and Windows x86_64. See the supported-platforms table for operating-system requirements and Docker support. Free-threaded CPython and Intel macOS need a source build.

Optional CUDA package

smsd-cuda provides optional NVIDIA CUDA screening on Linux x86_64 and needs the same version of smsd:

python -m pip install "smsd==8.0.2" "smsd-cuda==8.0.2"

The GPU computes integer overlaps; scores use the CPU expressions and hits keep target order. Matching runs on the CPU. See the CUDA section for dispatch and CPU fallback behaviour.

Quick start

import smsd

query = "c1ccccc1"       # benzene
target = "c1ccc(O)cc1"   # phenol

assert smsd.Substructure.find(query).match(target).found
result = smsd.MCS.find(query).with_timeout(1000).match(target)
print(f"MCS: {result.best.atom_count} atoms")  # MCS: 6 atoms

Substructure and MCS prepare a query once and provide match, match_all and match_many. Each match maps query to target atom indices and records the selected bonds and fragments. A search that stops early can return a valid but unproved answer, so check result.optimal, result.complete and result.status; an empty incomplete result does not prove absence.

MCS defaults to a connected maximum common induced subgraph (MCIS), ranked by atoms and then bonds. MCS.Objective.MCES selects the maximum common edge subgraph (MCES), which maximises common bonds, then their atoms, and adds no isolated atoms. with_fragments() allows disconnected common graphs.

Parse molecules once when you reuse them. Results follow the target order, and each target has its own search budget:

import smsd

query = smsd.parse_smiles("c1ccccc1")
targets = [smsd.parse_smiles(s) for s in ["c1ccc(O)cc1", "CCO"]]
results = smsd.Substructure.find(query).match_many(targets, num_threads=2)
assert [result.found for result in results] == [True, False]
assert [result.best.atom_count if result.found else 0 for result in results] == [6, 0]
results = smsd.MCS.find(query).with_timeout(1000).match_many(targets)
assert [result.best.atom_count for result in results] == [6, 2]

match_all returns up to 1,000 matches by default, symmetry-related mappings included; check complete before treating an enumeration as exhaustive. TargetCorpus holds targets for repeated queries. Batch calls use OpenMP, or run sequentially without it.

For repeated screening, TargetCorpus.screen_many returns ECFP4 Tanimoto hit indices for each query, and screen_targets_many returns similarity-bound hit indices. See the corpus API for preparation and return order.

Fingerprints

Radius 2 gives ECFP4; mode="fcfp" gives functional-class fingerprints (Rogers and Hahn, 2010). similarity() is a screening bound, not a fingerprint metric; use the coefficients below for fingerprint similarity:

import smsd

query_fp = smsd.fingerprint_from_smiles("c1ccccc1", radius=2, fp_size=2048)
target_fp = smsd.fingerprint_from_smiles("c1ccc(O)cc1", radius=2, fp_size=2048)
score = smsd.tanimoto_coefficient(query_fp, target_fp)
assert 0.0 <= score <= 1.0

FingerprintOptions configures circular, path, torsion and structural-key fingerprints, including the 166 MACCS keys, with the same bits as in C++ and Java:

import smsd

options = smsd.FingerprintOptions(family="ecfp", ring_size=True, cip_atoms=True)
fp = smsd.fingerprint("CC(=O)Oc1ccccc1C(=O)O", options=options)
keys = smsd.fingerprint("CC(=O)Oc1ccccc1C(=O)O", options=smsd.FingerprintOptions.maccs())
assert fp and keys

Screening

Rank a library by ECFP4 similarity, then search it by substructure as a prepared corpus:

import smsd

library = ["CC(=O)Oc1ccccc1", "OC(=O)c1ccccc1O", "CC(=O)Nc1ccc(O)cc1", "c1ccccc1"]
ranked = smsd.batch_similarity("CC(=O)Oc1ccccc1C(=O)O", library)  # (index, Tanimoto), most similar first
corpus = smsd.TargetCorpus.from_smiles(library)
corpus.prewarm()
acids = smsd.Substructure.smarts("C(=O)[OX2H1]").match_many(corpus, num_threads=0)
assert library[ranked[0][0]] == "CC(=O)Oc1ccccc1" and sum(r.found for r in acids) == 1

With OpenMP, as in the published wheels, num_threads=0 uses every core unless OMP_NUM_THREADS sets fewer. The Python examples screen a library of 2,744 molecules and set aside targets that cannot reach an MCS similarity threshold before computing the MCS; they also cover count fingerprints and the other coefficients.

RDKit molecules

With RDKit installed, pass its molecules directly. Mappings use the original RDKit atom indices:

from rdkit import Chem
import smsd

query = Chem.MolFromSmiles("c1ccccc1")
target = Chem.MolFromSmiles("c1ccc(O)cc1")
result = smsd.MCS.find(query).with_timeout(1000).match(target)
assert result.best.atom_count == 6

Conversion passes through SMILES, so coordinates, data fields and query predicates are not transferred. from_openbabel and to_openbabel do the same for Open Babel, without its atom numbering. See input atom numbering.

Documentation

Build from source

From the repository root, with Python 3.10 or later, a C++17 compiler and CMake 3.18 or later:

python -m pip install build
python -m pip install -e ".[dev]"
python -m build

The standard wheels use CPU/OpenMP. The optional smsd-cuda package needs a compatible NVIDIA driver; macOS uses the CPU. gpu_device_info() reports an available backend, not the one a particular call used.

Other languages

SMSD Pro is also available for Java, with CDK integration, and as a header-only C++17 library.

Citation

If you use SMSD Pro in your research, please cite:

Rahman SA. SMSD Pro: Coverage-Driven, Tautomer-Aware Maximum Common Substructure Search. ChemRxiv, 2026. DOI: 10.26434/chemrxiv.15001534/v1

For the original SMSD toolkit, please also 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 provided for citation software.

Licence

Apache License 2.0. Copyright (c) 2018-2026 BioInception PVT LTD. Algorithm Copyright (c) 2009-2026 Syed Asad Rahman. See LICENSE and NOTICE.

Metadata

Release files for smsd 8.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smsd 8.0.2
File Size Uploaded Provenance
smsd-8.0.2.tar.gz 1.2 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for smsd 8.0.2
File
smsd-8.0.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
smsd-8.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
smsd-8.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
smsd-8.0.2-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
smsd-8.0.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
smsd-8.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
smsd-8.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
smsd-8.0.2-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
smsd-8.0.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
smsd-8.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
smsd-8.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
smsd-8.0.2-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details
smsd-8.0.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
smsd-8.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
smsd-8.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
smsd-8.0.2-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details
smsd-8.0.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
smsd-8.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
smsd-8.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
smsd-8.0.2-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details

Total release size: 38.8 MB

Release files / smsd-8.0.2.tar.gz

Download URL smsd-8.0.2.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
13e73110a7e37099a5c1f7fcc047b5421bf6d570976ed72dcf4f4486f575b82f
BLAKE2b-256 checksum
How to use checksums
a0e775dd785326e2fc0ab5ae17bd51422ceddf7048735755025f1638c608e82e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp314-cp314-win_amd64.whl

Download URL smsd-8.0.2-cp314-cp314-win_amd64.whl
Size 1.8 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
57f0565dfc39506cbcaa73fc424e30c2c9986188d5038de5aca9a422f2a5eb16
BLAKE2b-256 checksum
How to use checksums
aa748080bf9ee39a727724f44a3ee5adf14ffdb770d8af18640170849dece01d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL smsd-8.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.0 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3893b259cf50b577f92cc295452690718d69dd10809192bb62375f56e915069d
BLAKE2b-256 checksum
How to use checksums
831a5bea518ad7579ccca5edf30f230b01174a56443ad01e495341e1396cf615
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL smsd-8.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8c8a8e3fdd614d108cea3fa7d8df16e1014fa6ed4fa9cf8baebcbb5d67067818
BLAKE2b-256 checksum
How to use checksums
b5a3e6cf96fdf44b4dc23647ea4824b7dc9d0169e49a4a219c2097c1cab7826e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp314-cp314-macosx_26_0_arm64.whl

Download URL smsd-8.0.2-cp314-cp314-macosx_26_0_arm64.whl
Size 1.9 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
c3bccb82314391188e7c55cba9cf94fbeacfd6529278032ae74f024092c846e5
BLAKE2b-256 checksum
How to use checksums
5549cf48428937e66604688c513d91a27cceb08a2091099da3fa75445ed9bee1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp313-cp313-win_amd64.whl

Download URL smsd-8.0.2-cp313-cp313-win_amd64.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9d3fb514edfb70747cec6e21845e3610a9a215df32d42426deff72d3073e4773
BLAKE2b-256 checksum
How to use checksums
4a9d115c8ee31ac940a2d1a75e0c55a59850bcd520c7e3a4dd6335aa9ef123b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL smsd-8.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.0 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6331e82f644a7f56679478121970c4bc4b3b9a185146baca5f0ead876a4877ec
BLAKE2b-256 checksum
How to use checksums
227c77de56427eb9bb59df3302b64893e6a9530f4f3197c95e5203815faeb4d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL smsd-8.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7a9bf117feac96e5afb5fb8e9afc1cbfbac6df8634b069ed89136a2e566134af
BLAKE2b-256 checksum
How to use checksums
b3fdf226b258d6050906c5135c1cf0bac42c0d44b52fce450743fa639be5648f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp313-cp313-macosx_26_0_arm64.whl

Download URL smsd-8.0.2-cp313-cp313-macosx_26_0_arm64.whl
Size 1.9 MB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
0c62b19d1d45adbbfae6d0b53b1eb41d993d7e01c439d06135d45f79e469e9d5
BLAKE2b-256 checksum
How to use checksums
8302f4f3f9e53287ce5dd7c12d8c2e829a57aecd50902989e11e9861a9fb192e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp312-cp312-win_amd64.whl

Download URL smsd-8.0.2-cp312-cp312-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b7b15f8b42f9c59f27eaaa24a8fe873b8c62733b1e5b2a8964ed20f2b9c50db4
BLAKE2b-256 checksum
How to use checksums
29a7e990eeaf3c328c51bc1185b90249280d354273213d44fb46db1c69076feb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL smsd-8.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.0 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5e2c59cef9253993bb6212d20840c58c367e668e37e8d061a04832e89c274e9d
BLAKE2b-256 checksum
How to use checksums
412df2da2c29e3cf18beca72385b4492abc8d6e776080d5bc91097b697b07d0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL smsd-8.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f7b939a3cfeee90013ae192b68b410ee2f81697ad8d1fa6087e0f6a064c2d2ee
BLAKE2b-256 checksum
How to use checksums
a127e6874a8ba2465f4b39a8942b11a18cdb990f62b7003546c3959b715aab5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp312-cp312-macosx_26_0_arm64.whl

Download URL smsd-8.0.2-cp312-cp312-macosx_26_0_arm64.whl
Size 1.9 MB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
55841f7f63ac673172ddabdbfba5675c861adf11c4522d5b93cc8ef12b849bb9
BLAKE2b-256 checksum
How to use checksums
d94805bd6391434abc1fe0f4437567d1208dc329a199ec97ae540da7902379ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp311-cp311-win_amd64.whl

Download URL smsd-8.0.2-cp311-cp311-win_amd64.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c77fbd848a0a78638918d50264376ec132124673e75d945104db3b4b71ec647d
BLAKE2b-256 checksum
How to use checksums
b9d685d7d0a81cb7279b70950a4943348d31ceb22f1f8d57427adad71e26edda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL smsd-8.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.0 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f14e57798ab573a734cd1b7ccb738cba49e8a94fdd5e26a824e367c455a0d86a
BLAKE2b-256 checksum
How to use checksums
747d525073b8c17b8d07b0e8ee63786a0d172dd827cfc35478be81c46ef5a0e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL smsd-8.0.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a4df8cc49cc2a8f2324f4d504a0d61eb6bbb68ff25c77f2e862ae0197e960ed8
BLAKE2b-256 checksum
How to use checksums
30e475c2a4f8270aa82a5aae293bb30443b6c6d9110a6451b29e2515ce1f03ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp311-cp311-macosx_26_0_arm64.whl

Download URL smsd-8.0.2-cp311-cp311-macosx_26_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
973a7823ecf8d9dabb717bc3d6d31b8125d7276c2d87e5bf0a3d9f2ae3cd2c7e
BLAKE2b-256 checksum
How to use checksums
67a266eda89a04f4392a623b58c6ab5916a1dc40eeb842ff7f14fd9a08634c09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp310-cp310-win_amd64.whl

Download URL smsd-8.0.2-cp310-cp310-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7186664650b74eeb4007af48ec1bfdb5ea72cf45daa4c8d600efd0ba84c3fa2e
BLAKE2b-256 checksum
How to use checksums
dff90b00d0869899e2d4d5bbff8079f02a645e1c0c8cff66d99d14be1bd4ce1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL smsd-8.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.0 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1a0c1a557740f4736f63be55d5c0c7e20f338ea352ae3a76477aaffc2d67ee10
BLAKE2b-256 checksum
How to use checksums
a7db059d13842708ec58452c3e1ce2bd0b8ba034ecf3fdcd87594da3866c7250
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL smsd-8.0.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a21858bd3a89194eb4f98a24806202b0304a37f64247eeebc0a65257a654f9f0
BLAKE2b-256 checksum
How to use checksums
a09af171a8e8866f4347607ba92ddf1a0eef7169a152733f12d7734560c2255a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / smsd-8.0.2-cp310-cp310-macosx_26_0_arm64.whl

Download URL smsd-8.0.2-cp310-cp310-macosx_26_0_arm64.whl
Size 1.9 MB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
fdc996d304874d10c6893fbd06cfc1ebcf9406f5d4540c91f2b587bfb4b69590
BLAKE2b-256 checksum
How to use checksums
e4ce3c0435c428ffe747e1cec2f1318f7b67b99ba10e88a05bd163129d5f1ca8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for smsd 8.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for smsd-8.0.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page