Lightweight Pydantic v2 validator for RDKit SMILES: sanitizes, canonicalizes & caches results
Project description
Smiles-Validator
Lightweight Pydantic v2 validator for RDKit SMILES strings: validates, sanitizes, and optionally returns canonical or original input.
Install
pip install smiles-validator
Requires Python ≥ 3.10 · Pydantic v2 · RDKit 2024.9+
Usage
from pydantic import BaseModel
from typing import Annotated
from smiles_validator import SmilesText, SmilesValidator
class Model(BaseModel):
# Default: Canonical SMILES
canonical: SmilesText
# Keep original input
original: Annotated[str, SmilesValidator(keep_original=True)]
m = Model(
canonical="C1=CC=CC=C1",
original="C1=CC=CC=C1"
)
print(m.canonical) # => "c1ccccc1"
print(m.original) # => "C1=CC=CC=C1"
Features
- 🚀 Fast SMILES validation using RDKit
- 🔄 Canonicalization with optional original input preservation
- 📦 Pydantic v2 integration
- 📊 Comprehensive test coverage
- 🧪 CI/CD with multiple Python versions
- 📚 Well-documented API
API
SmilesText: alias forAnnotated[str, SmilesValidator()](canonical by default).SmilesValidator(keep_original: bool = False): setkeep_original=Trueto return the exact input after validation.
Both options parse with Chem.MolFromSmiles(..., sanitize=False), sanitize (using RDKit's default sanitization), and cache results (up to 4096 entries). Canonical output uses Chem.MolToSmiles(mol, canonical=True).
Development
To contribute:
# Install dependencies
uv sync --locked --all-extras --dev
# Run tests
just test
# Run linting
just check
# Run formatting
just format
License
MIT · GitHub
Acknowledgements
- Built with RDKit for chemical structure handling
- Uses Pydantic v2 for validation integration
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 Distribution
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 smiles_validator-0.1.2.tar.gz.
File metadata
- Download URL: smiles_validator-0.1.2.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57f7cc0db452ce38cb282aca7ba5c35071a49be96a66449c9d74c9b3f04bfa5c
|
|
| MD5 |
a1909987728dcd089e1d74c227c06892
|
|
| BLAKE2b-256 |
9c0204b14c3340068db48a320265109dc03fde77c9f452ea4b091466dc28e2d4
|
File details
Details for the file smiles_validator-0.1.2-py3-none-any.whl.
File metadata
- Download URL: smiles_validator-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dca44e0f27a957d9c0afbc4143aa852f870ad70fdfb3954ee408faca55189af0
|
|
| MD5 |
886025cf573aa5f3193accb0dfb96342
|
|
| BLAKE2b-256 |
c4cde6fb5553ed4a7b1e0c5ca90ac87f22c72227982ccfb2dd025ae90e5a7d59
|