Skip to main content

Ultra-fast retrosynthesis engine for computer-aided synthesis planning (CASP) — pure Rust, Python bindings via PyO3

Project description

RENKIN — Retrosynthetic Exploration Network for Knowledge-Informed Navigation

Computer-Aided Synthesis Planning (CASP) · Pure Rust · WebAssembly · Python
Named after 錬金 (れんきん, renkin) — Japanese for alchemy: just as alchemists transformed base metals into gold, RENKIN transforms target molecules back into cheap starting materials.

CI Crates.io PyPI npm License: MIT WASM Pure Rust unsafe forbidden Open In Colab

日本語版 README · Documentation · Live Demo →


What is RENKIN?

RENKIN is an open-source retrosynthesis engine for computer-aided synthesis planning (CASP) that automatically discovers optimal chemical reaction routes from a target molecule back to cheap, commercially available starting materials.

Built entirely in Rust with the chematic cheminformatics crate. Zero C/C++ dependencies. All crates enforce #![forbid(unsafe_code)] — compiler-verified Pure Safe Rust throughout.

→ Try the Live Playground — runs entirely in WebAssembly, no installation needed.
→ Full Documentation — API reference, examples, benchmark.


Installation

pip install renkin          # Python
cargo add renkin            # Rust
npm install renkin          # JavaScript / Node.js

Quick Start

import renkin

result = renkin.find_routes(
    "CC(=O)Oc1ccccc1C(=O)O",   # Aspirin
    depth=5,
    max_routes=3,
)

for route in result["routes"]:
    for step in route["steps"]:
        print(f"  {step['target']}{' + '.join(step['precursors'])}  [{step['rule']}]")
import init, { find_routes } from './pkg/renkin.js';
await init();
const result = JSON.parse(find_routes("CC(=O)Oc1ccccc1C(=O)O", 5, 3, 0));
./target/release/renkin --target "CC(=O)Oc1ccccc1C(=O)O" --depth 5 \
    --templates data/templates_extracted_5000.smi --format tree
Target: CC(=O)Oc1ccccc1C(=O)O
Routes found: 3

Route 1  [score=1.02, depth=1]
OC(=O)c1ccccc1OC(=O)C
└── [extracted_169]
    ├── OC(=O)C  ✓ BB
    └── [OH]c1ccccc1C(=O)O  ✓ BB

Route 2  [score=1.02, depth=1]
OC(=O)c1ccccc1OC(=O)C
└── [extracted_145]
    ├── CC(=O)Cl  ✓ BB
    └── [OH]c1ccccc1C(=O)O  ✓ BB

Route 3  [score=1.03, depth=1]
OC(=O)c1ccccc1OC(=O)C
└── [extracted_238]
    ├── c1cccc(c1O)C(O)=O  ✓ BB
    └── C([OH])(=O)C  ✓ BB

Use --format mermaid for GitHub/Notion-compatible flowcharts.


Constraint-based Search

Restrict routes by the element composition of their building blocks.

Default search — all 5 routes for biphenyl:

renkin --target "c1ccc(-c2ccccc2)cc1" --templates data/templates_extracted_5000.smi --format tree
Routes found: 5
Route 1  [score=1.00, depth=1]  c1ccccc1Br + c1c(B(O)O)cccc1
Route 2  [score=1.03, depth=1]  c1ccccc1Br + c1c(B(O)O)cccc1
Route 3  [score=1.06, depth=1]  c1cc(Cl)ccc1 + c1c(B(O)O)cccc1
Route 4  [score=1.08, depth=1]  c1(I)ccccc1  + c1c(B(O)O)cccc1
Route 5  [score=1.08, depth=1]  c1ccccc1Br  + c1(B2OC(C(C)(C)O2)(C)C)ccccc1

Constrained search — boronic-acid coupling, no Br or I starting materials:

renkin --target "c1ccc(-c2ccccc2)cc1" --templates data/templates_extracted_5000.smi \
    --require-elements "B" --avoid-elements "Br,I" --format tree
Routes found: 1

Route 1  [score=1.06, depth=1]
c1ccccc1-c2ccccc2
└── [extracted_398]
    ├── c1cc(Cl)ccc1  ✓ BB
    └── c1c(B(O)O)cccc1  ✓ BB

Constraints compose freely and are enforced in two layers:

  • --avoid-elements prunes expansions during search when a BB precursor contains a forbidden element (no dead-end nodes added to the heap).
  • A final route-level post-filter is still applied for correctness.
  • --require-elements is a route-level post-filter only.

Add --verbose to print search statistics (nodes expanded, elapsed time) to stderr. Performance counters are available in native builds only; disabled in WASM.


Key Features

Feature Detail
Pure Safe Rust #![forbid(unsafe_code)] on all crates — compiler-enforced, zero C/C++ dependencies
A* / AND-OR Tree Search Retro*-equivalent algorithm, proven more efficient than MCTS
SA Score heuristic Admissible h = Σ(1 + 0.5·(sa−1)/9) guides toward accessible precursors
SA Score memoization Per-search cache avoids redundant SA Score computation on repeated intermediates
Beam search --beam-width N for memory-bounded exploration; SmallVec<[FEntry; 6]> stack-allocated frontier
5,000 reaction templates Auto-extracted from USPTO-50k training set via rdchiral; frequency-weighted beam priority
Template frequency weighting Phase A: weight = ln(count+1) from USPTO training set; high-frequency templates preferred in beam search (+19 pp)
Element pre-screening required_elements bitset skips impossible rules before SMARTS matching
apply_retro memoization SMARTS VF2 skip on repeated intermediates — per-search cache
Arc path sharing Persistent linked-list; O(1) per child instead of O(depth) clone
FxHashMap / FxHashSet rustc-hash replacing std collections throughout for faster hashing
Auto template extraction scripts/extract_templates.py — rdchiral + chematic-compatible simplification
Graph-based biaryl cleavage Bridge-bond DFS for correct Suzuki disconnection
Parallel rule application rayon on non-WASM; sequential fallback on wasm32
tract-onnx NN scorer Pure Rust ONNX inference (no C++ dep) — optional --scorer flag for Phase B template relevance scoring
Route visualization --format tree ASCII tree · --format mermaid GitHub/Notion flowchart
building_blocks in JSON Each route includes the leaf starting-material SMILES — no manual step parsing needed
MCP server renkin-mcp binary — AI agents (Claude, etc.) call retrosynthesis over JSON-RPC stdio
Tetrahedral stereo @/@@ Full stereochemistry support via chematic 0.4.16
Python pip install renkin — pre-built wheels for Linux/macOS/Windows
WASM ~500 KB bundle — runs in the browser at near-native speed
509 building blocks Aryl halides, boronic acids, heterocycles, amines, acids, amino acids

Benchmark

USPTO-50k test set (4,907 molecules, full evaluation):

Evaluation definition: A molecule is solved if find_routes returns at least one route whose leaf precursors are all in the 509-reagent building block set, within depth=5 and beam=100. Ground-truth reactants from USPTO-50k are not checked — any commercially accessible route counts.

Evaluation note: All numbers use the standard USPTO-50k train/test split (same corpus). Templates are extracted from the training set and evaluated on the test set. Numbers reflect performance within the USPTO-50k domain; out-of-distribution generalization is separately evaluated via ChEMBL approved drugs (81.8%, 409/500).

Config Solved Rate BBs Templates depth beam ms/mol
v0.1.0 initial 366/4907 7.5% 463 31 3 50
+ auto templates (top-300) 1363/4907 27.8% 463 222 3 50
+ depth=5, top-500 templates 2315/4907 47.2% 463 314 5 50
+ beam=100 2688/4907 54.8%* 463 314 5 100
+ Phase A (template freq. weighting) 3540/4907 72.1%† 463 314 5 100
+ 5,000 templates, 480 BBs 3826/4907 78.0% 480 5,000 5 100 2,775
Phase A unlimited (beam=0) 3832/4907 78.1% 480 5,000 5 0
Phase B (NN scorer, tract-onnx) 3826/4907 78.0% 480 5,000 5 100 3,394
+ diaryl sulfone rule, 509 BBs 3831/4907 78.1% 509 5,000 5 100 ≈2,800

* 29/50 chunks, previous binary
† 50/50 chunks — 72.1% (3,540/4,907) confirmed

Under RENKIN's evaluation setting (see definition above), RENKIN reaches 78.1% on USPTO-50k. Published numbers for AiZynthFinder (45–53%), Retro* (44.3%), and ASKCOS (41%) use different stock databases, template counts, and evaluation years — this is not a matched-condition comparison.
Note: LocalRetro (53.4%) and GLG (58.0%) report single-step top-1 prediction accuracy — a different metric, not directly comparable.
Full benchmark details →

Benchmark scope note: USPTO-50k is used here as a standardized sanity benchmark, not as proof of broad real-world synthesis performance. The corpus covers a narrow slice of reaction space (primarily C–C and C–N bond formations common in pharmaceutical synthesis), and reaction types with sparse USPTO representation are systematically underserved. Out-of-distribution performance on ChEMBL approved drugs (81.8%, 409/500) suggests the rule set generalizes beyond the test corpus, but neither number should be interpreted as a guarantee of route quality on arbitrary targets.

PaRoutes compatibility

RENKIN is compatible with the PaRoutes multi-step benchmark. Download their stock compounds and target molecules, then pass them directly:

renkin-bench \
  --input paroutes_n1_targets.smi \
  --building-blocks paroutes_stock.smi \
  --templates data/templates_extracted_5000.smi \
  --depth 5 --beam-width 100

The JSON output includes avg_nodes_expanded, avg_confidence, avg_convergency, and avg_success_prob (Retro-prob style) alongside the standard solved/success_rate metrics.


Competitive Landscape

Tool Language License WASM Zero-dep Algorithm Template source Stock
ASKCOS Python CC BY-NC No No (Docker, 64 GB) MCTS + A* USPTO (ML) ZINC
AiZynthFinder Python MIT No No (conda + model) MCTS USPTO (ML, ~50k) eMolecules (~6M)
SYNTHIA Closed Proprietary No No SMARTS + AND/OR Manual curated Sigma-Aldrich
IBM RXN Closed Cloud SaaS No No Transformer USPTO
Retro* Python MIT No No (unmaintained) A* + AND/OR USPTO (ML) eMolecules
★ RENKIN Rust MIT Yes Yes A* + AND/OR Hand-curated + rdchiral (5,000) 509+

RENKIN's goal: match state-of-the-art accuracy using only curated rules and auto-extracted SMIRKS templates — no GPU, no training data, no black boxes. Under RENKIN's benchmark setting, it reaches 78.1% (3,831/4,907 — full run confirmed). Template frequency weighting (Phase A) combined with 5,000 auto-extracted templates and 509 building blocks delivers this result. RENKIN runs anywhere: browser, CLI, Python — single cargo build.

⚠️ The table above lists tools under different evaluation conditions. No matched-condition experiment against other tools has been performed.


MCP Server

renkin-mcp exposes retrosynthesis as an MCP tool so AI agents (Claude, etc.) can call it directly.

Setup — add to claude_desktop_config.json:

{
  "mcpServers": {
    "renkin": { "command": "/path/to/renkin-mcp" }
  }
}

Tool: find_routes(smiles, depth?, max_routes?, avoid_elements?, require_elements?)

The server auto-detects data/building_blocks.smi and data/templates_extracted_5000.smi in the working directory. Falls back to the embedded 509-BB / 20-rule defaults if not found.

cargo build --release
# binary: target/release/renkin-mcp

Architecture

Workspace scope

┌──────────────────────────────────────────────────────────────────┐
│ renkin workspace (this repository)                               │
│                                                                  │
│  renkin  (retrosynthesis)         renkin-forward  (planned)      │
│  ──────────────────────           ─────────────────────────────  │
│  target → precursors              reactants → products           │
│  A* / AND-OR search               template-based forward         │
│  route scoring & constraints      (validates retro routes)       │
│        │                                    │                    │
│        └──────────────────┬─────────────────┘                    │
│                           ▼                                      │
│               chematic  (molecular representation,               │
│               SMILES, substructure matching, reaction SMARTS)    │
└──────────────────────────────────────────────────────────────────┘

Internal data flow (renkin crate)

Target SMILES
     │
     ▼
┌─────────────────────────┐
│     chem_env.rs         │  ← chematic wrapper
│  - SMILES parse         │     canonical-SMILES FxHashSet BB lookup (O(1))
│  - 5,000 retro rules    │     fragment sanitization + ring-leak filter
│  - Building block check │     apply_retro memoization cache
└────────────┬────────────┘
             │  par_iter (rayon / sequential on WASM)
             ▼
┌─────────────────────────┐
│      search.rs          │  ← A* / AND-OR Tree Search
│  - Priority queue       │     SA Score heuristic + memoization
│  - Closed list          │     beam search (SmallVec frontier)
│  - Arc<PathNode> paths  │     O(1) path sharing per child
└────────────┬────────────┘
             │
             ▼
┌─────────────────────────┐
│      score.rs           │  ← Heuristic / Cost Function
│  - SA Score (chematic)  │     h = Σ(1 + 0.5·(sa−1)/9)
│  - MW step cost         │     g = Σ(1 + total_mw/2000)
└────────────┬────────────┘
             │
             ▼
┌─────────────────────────┐   (optional)
│      scorer.rs          │  ← Phase B: NN Template Scorer
│  - tract-onnx           │     Pure Rust ONNX inference
│  - --scorer flag        │     molecule-specific template ranking
└────────────┬────────────┘
             │
             ▼
  JSON  ←  CLI / Python / WASM

Project Structure

renkin/                          ← Cargo workspace root (planned)
├── Cargo.toml
├── src/                         ← renkin crate (retrosynthesis)
│   ├── lib.rs                   # public library
│   ├── main.rs                  # CLI binary  (--templates, --scorer flags)
│   ├── bin/benchmark.rs         # renkin-bench binary  (--templates flag)
│   ├── chem_env.rs              # 5,000 retro rules, BB check, template loader
│   ├── score.rs                 # SA Score heuristic + step cost
│   ├── search.rs                # A* / AND-OR tree engine + beam pruning
│   ├── scorer.rs                # Phase B: tract-onnx NN template scorer
│   ├── python.rs                # PyO3 bindings (--features python)
│   └── wasm.rs                  # wasm-bindgen bindings (cfg = wasm32)
├── crates/                      ← sibling crates (in development)
│   └── renkin-forward/          # forward reaction prediction (reactants → products)
├── data/
│   ├── building_blocks.smi              # 509 curated commercial starting materials
│   ├── templates_extracted_5000.smi     # 5,000 auto-extracted SMIRKS templates
│   ├── benchmark_targets.smi            # internal benchmark set
│   └── bench_chunks/                    # USPTO-50k per-chunk results
├── scripts/
│   ├── extract_templates.py         # rdchiral template extraction pipeline
│   └── run_benchmark_chunks.sh      # resumable chunked benchmark runner
├── docs/                # MkDocs source → kent-tokyo.github.io/renkin/
└── mkdocs.yml

Roadmap

  • Route cost scoring — route_cost field + --bb-prices path.csv flag (SA Score proxy or real prices)
  • Cargo workspace restructure — crates/renkin-forward/ sibling crate
  • renkin-forward: template-based forward reaction prediction (reactants → products)
  • Optional forward validation of retrosynthetic routes via renkin-forward
Completed milestones
  • SMIRKS retro-reaction rules + fragment sanitization
  • A* / AND-OR tree search, closed list, degenerate-route filter
  • SA Score heuristic + beam search
  • Parallel rule application (rayon; sequential fallback on WASM)
  • Python bindings (PyO3 + maturin) · pip install renkin
  • WASM build · npm install renkin
  • Benchmark CLI (renkin-bench) + USPTO-50k evaluation
  • WASM browser playground + i18n (EN/JA/ZH)
  • Graph-based biaryl cleavage · O(1) canonical-SMILES BB index
  • Published to crates.io / PyPI / npm · GitHub Actions CI/CD
  • MkDocs documentation site · GitHub Pages playground
  • Auto template extraction (rdchiral): 27.8%78.1% USPTO-50k
  • Tetrahedral stereo @/@@ + E/Z double-bond stereo
  • Template frequency weighting (Phase A): 72.1% USPTO-50k
  • FxHashMap · SmallVec beam frontier · SA Score memoization · Arc path sharing
  • 5,000 extracted templates + 509 BBs: 78.1% USPTO-50k (3,831/4,907 ✅)
  • NN template scorer via --scorer flag (tract-onnx, Pure Rust ONNX)
  • --format tree|mermaid route visualization
  • Constraint-based search: --avoid-elements, --require-elements
  • --verbose search statistics to stderr
  • MCP server (renkin-mcp) — AI agents call retrosynthesis directly
  • #![forbid(unsafe_code)] — compiler-enforced Pure Safe Rust

Citation

If you use RENKIN in academic work, please cite:

@software{renkin2026,
  author    = {kent-tokyo},
  title     = {{RENKIN}: Retrosynthetic Exploration Network for Knowledge-Informed Navigation},
  year      = {2026},
  url       = {https://github.com/kent-tokyo/renkin},
  version   = {0.15.0},
  license   = {MIT}
}

License

MIT


GitHub Topics: retrosynthesis cheminformatics wasm rust drug-discovery casp synthesis-planning computational-chemistry

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

renkin-0.15.0.tar.gz (154.1 kB view details)

Uploaded Source

Built Distributions

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

renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (817.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (777.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (815.0 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (814.9 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (814.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (773.3 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp314-cp314-win_amd64.whl (579.3 kB view details)

Uploaded CPython 3.14Windows x86-64

renkin-0.15.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (814.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (773.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp314-cp314-macosx_11_0_arm64.whl (703.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

renkin-0.15.0-cp313-cp313-win_amd64.whl (578.0 kB view details)

Uploaded CPython 3.13Windows x86-64

renkin-0.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (812.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (773.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp313-cp313-macosx_11_0_arm64.whl (702.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

renkin-0.15.0-cp312-cp312-win_amd64.whl (578.4 kB view details)

Uploaded CPython 3.12Windows x86-64

renkin-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (813.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (773.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp312-cp312-macosx_11_0_arm64.whl (702.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

renkin-0.15.0-cp311-cp311-win_amd64.whl (581.4 kB view details)

Uploaded CPython 3.11Windows x86-64

renkin-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (776.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp311-cp311-macosx_11_0_arm64.whl (705.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

renkin-0.15.0-cp310-cp310-win_amd64.whl (581.4 kB view details)

Uploaded CPython 3.10Windows x86-64

renkin-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (776.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (817.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

renkin-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (776.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

renkin-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (776.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file renkin-0.15.0.tar.gz.

File metadata

  • Download URL: renkin-0.15.0.tar.gz
  • Upload date:
  • Size: 154.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0.tar.gz
Algorithm Hash digest
SHA256 557d914e3805e3897a184ba0928c74e2e7f32a39f63de498c81ac25b1eb3e841
MD5 19e9121f8857b270930f0f27a2ba79dd
BLAKE2b-256 b2fc756cb02cfaed1e9227eeb45b89eb17875850a9199f77233e994cd81b4011

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b93f4b82f77853de5db97a5d47a06a4bbaeee06bf5d2cedf0aaf4970f53d2231
MD5 043e3a82c6d69d1df96d93bb6581183c
BLAKE2b-256 021fbb84255f16d3c0396e51e13c983a48dc99fc4efc95248acb38d508fc0440

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 73b9468ca3beb89beebab51bcaa2f27b153c764c1787b1e6e6e7afcc0c281ed9
MD5 48156223c64fe2206922ac28e36ce692
BLAKE2b-256 f13f25a3a837cddfefb37618f2d5023476bb3f1b705081cfb2babb23890bdb4e

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 732f363c930ce9cf3d1ed44b415756fbb18715316f2951cf4cf4a2f64b26442a
MD5 90bf87356f87ad652c4247835f53f95d
BLAKE2b-256 7540939c64a087b15c5432a78a6ff4dfbc3124d224b163707ea2624b0af2a58d

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06b2137bc6d1a70da2981f68121e434c29d46fc533ad0eed0a93606006115036
MD5 a1e06245aca4e46e49d82b0140d06938
BLAKE2b-256 14f5138f6fb13f840f60889846aed3ca265bba995bcb8165aa8fdf997c1ed92e

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe78bb83c9ac8dcf383fe779435403479a0504ec2b77b67d31fddfe06f6ac98a
MD5 3faf73c877d9e721ab61a8cc3c732412
BLAKE2b-256 916e9b4e57c52e9a4a8e51f9b44f1c7f9bd6bdf6de9376bf7f656fe5f4a4ddb1

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 61b1d057cfa811400cfb619876ff9a619ebc602bdedf72f9a37509e4f96d07a4
MD5 0607354249e48baadf4ea3d226f7c285
BLAKE2b-256 fc501df6c1d5d0da86367685a565236382fe61c842e153da7ae70087ba41e583

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: renkin-0.15.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 579.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7ba840bec07192f42b31fb39eb8e4649d50bd2994bb2ea11aa25df37db2e7e49
MD5 59373c8f5bc1ecdd4377bbbad6dbcf15
BLAKE2b-256 56f439c1a30a2b745f96df811dabebf0e133793663df4c7e46be82e774e14e69

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2eb6a060944ee25c28a2dd6808596c258b1cd873e809b74a7cd97b2ba9c01f25
MD5 65e0cb3ea7488b2914a53fa7e32b9f9b
BLAKE2b-256 333b76569bb9e4e94be81fc6a25d72c6703e459fddc727dac0867fbc86fe0873

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6961e51a19e673677b678e391dd3eaf6aba09d47c1d7ea4372f86465b55a156a
MD5 a0f357f2e33a2773f257ac58be10514c
BLAKE2b-256 4f9396358bc5c43b69fcdf9c96e1d611d945645ba8b89eba73a5c8eb3d23d544

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 791a7faacfd01daab7f2da9116b435aa8ed032cfb483fe0042f2684cf0c8877e
MD5 7646b8c5d88dbb5b478ab55d840f840f
BLAKE2b-256 5448752036d727fc17c7ca10226e3b80b1b6d330570b125d1ed2c80c48faf921

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: renkin-0.15.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 578.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1992ab5fc246bc20c45bb12063576f65e43b3f7d78c33b6499f78ffca83eee4f
MD5 1f3214d3cd59d06e235b45b3d0711210
BLAKE2b-256 392f993c3afedce0e5eaab84aeaa11815761bfe6065898eb5477e8ba72439562

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c7b07d63f2719b60e4ef6508713e498ce5ebb4d27abddc25fc1b8c02f8708c0
MD5 f743c92f8774bfd3e0d39892561c266a
BLAKE2b-256 ae8ed2546b035daa68461922aa88ff0617186b82d3d56413cd639d0a42c2d10c

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6b25c31c3368abf69e33e7b7b1876d181d75c389d30a83ca49758b42ae2cf562
MD5 d153baa1469c1ba41cbaa8275566db04
BLAKE2b-256 397e5b2b7128f822e9ad1e78c4ab9c58b240bfd5315ef2bd618fa2f18e0f0f43

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99ad9e45dd5d858ba4b83c175ae35ddd1c739115808c3c2c930d32948bddd1e3
MD5 dc66924008dfa668c6d0cd5f66ff3da0
BLAKE2b-256 4138a6482c2ed492ed143046044192c8326f6bedbb2615a9d041df6d0700305d

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: renkin-0.15.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 578.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0d294206b44f9869fd15904b8cc3376a896ee16d3d729e5c846e513c24801973
MD5 022b22ec0efe90453b1ba23c24a61870
BLAKE2b-256 95325e446b16faf6ffd6be98b3033c14a12da40a3d89b719c49280f3522cc0d6

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2c4840945a42920c687ac41fb6a07be97e5123529e389b8fa30d8f83b9df29a
MD5 be1deca891f7e54e121f420a40531640
BLAKE2b-256 8b6c2ee2515c30a9daa1ce48dab482aac1141d6663af2813df869fc4c59432f7

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 89594a0d552b434c35525d1f26405ec6a4d2d31b8d87d846226f57111f7dbf27
MD5 dc4aad503fd0b64b2b791316a8bdb290
BLAKE2b-256 a8c950ef77d6f188a595d70b6b2c18d7b708a67e7c1df347feb84cc45a7d7662

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c0be33eec70787116cd256a29cfcb22545074f0fd875fa45c4546e3c3a12132
MD5 f0d997251d593fd48f1cb9a0b6ed3649
BLAKE2b-256 e594f332a240e4359a04d21d5fb117e1c6e0a41ddbfba54df38b92e81d141533

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: renkin-0.15.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 581.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 48006c3059c159636a8726724d15b324273bc817b84bb3129bb90c20f9e7769c
MD5 7b2498a0d9f077057d78d46b277b3303
BLAKE2b-256 0512bd85c7dd1fc8061f314490d123108ecbcb4d3b1ae9dbcc7ea823a2e86034

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1d3fe6a4965f5c4510bc475ab9962d583a5428f27797f35ad5035547addf0d4
MD5 300431da19fa8d70732665833719b680
BLAKE2b-256 79d7f8545ea9e7c022a0340139eea162068167d006bdf177157777c2b6a9a8bb

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e77a31d1108963335b509694c26ccb28b1d5f64de249eeb7a72d9e7c71ce2e88
MD5 19eeba07dd428c030b364727daae3a63
BLAKE2b-256 3a537f5ef4172bbc5306847cee1bae37edb2b59e2f88adca33801803b822ab50

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aef492db442b52120850fd2deb1baca88b047bd4be7c2fa1011ec90a41aba4ee
MD5 08ab9856273358b35e1bda7089a83384
BLAKE2b-256 724c328bc103457c91192332a8f916773cbd810cc52e283c8b4254e9b0b57235

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: renkin-0.15.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 581.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renkin-0.15.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 96c8ec313bede006a2f69a5a412fea0b315658b60a14cc5d9549dfaed9cf2f0d
MD5 73f7777ebc86b50984d0d591a6848ab0
BLAKE2b-256 b1530af202c778c7e22b39c551fcee7da9eb47524834366968df89096f4ec513

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 77f576e876efe59a0e657fa938012fbd120246bb401941afcce772ffaed64bd0
MD5 bcd8771491b649675c40332c2be6a02a
BLAKE2b-256 5351c13d55cfe487efb3f56b62c1225ae1e6a052181ab851dbd5a4e17d4cd7c8

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 278f6323d2567ee84b0445283d18214f40a8cb8c6916b0e5fa4a9213ab05b34a
MD5 55815d4cd1980b7d5b0aad0ab69a0975
BLAKE2b-256 3f61800cb6722e114656d01dce524b3d49f94b8e10bf98c8fb6b50bf60337b9f

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18aff1efd579ee7ad9eef15978eb7cdef07772c1d2b3a46e3ccb9b5b8863909e
MD5 c4fa3db9df6034fd71abbb72cf7afe6e
BLAKE2b-256 a7e2bc82d23ff298029b62d12d39391b19b929096da1e5123bfa9edef85e82fa

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 37f8294b64c99a2f8a01cf52e8e28bc44be32251141cc9cee0e635ee7dc32f06
MD5 41bd504cca2a521595616817cd403fd5
BLAKE2b-256 a2ef147978c311dbb89deca84713b4b05161756fbb9f1dfbe57717d92356ad2e

See more details on using hashes here.

File details

Details for the file renkin-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for renkin-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0940eb820abdb80ec42243a597af11c64c701fe4612a52e4641b69bd4b1eb3e5
MD5 f7c55c912eff34810c0e8fb135f8994c
BLAKE2b-256 dd9ddd6e90a938f976f32dca3c33c7fd936fe8a821f2c230c95d2b3c35a274c8

See more details on using hashes here.

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