Skip to main content

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

Project description

RENKIN — Retrosynthesis Engine 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 Docs Release Security Audit

Crates.io docs.rs PyPI Python npm License: MIT

Pure Rust unsafe forbidden WASM PyO3 MCP templates building blocks USPTO-50k ChEMBL

日本語版 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.


Why RENKIN?

RENKIN is designed as a Rust-native synthesis planning stack:

Fast A* / AND-OR tree search with beam search and template frequency weighting
Portable Native CLI · Python wheels · npm/WASM · browser playground — one codebase
Explainable Per-step confidence, atom_economy, route_cost, and procedure_hint
Verifiable renkin-forward validates each retrosynthetic step by forward-applying templates
Benchmarkable USPTO-50k, PaRoutes-style evaluation, route diversity, and atom balance checks
Agent-ready MCP server exposes routes and validation to Claude Desktop and AI agents

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.

Open In Colab


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 with pluggable heuristics (MoleculeValueEstimator, ReactionPrior)
Up to 50k reaction templates Auto-extracted from USPTO-50k/MIT via rdchiral; frequency-weighted priority; --templates for custom sets
Route scoring confidence, step_confidence, success_probability (Retro-prob style), convergency, atom_economy per step
Route cost scoring route_cost = Σ(BB cost) + steps×0.5; actual prices via --bb-prices CSV
Forward validation renkin-forward validate verifies each step by applying templates forward; accepts --route-json or stdin
PaRoutes benchmark renkin-bench --input-format paroutes for multi-step ground-truth evaluation with depth_delta and route_diversity
Atom balance check renkin-bench flags steps where target_MW > Σ precursor_MW (CompleteRXN reference)
Procedure hints 19 hand-crafted rules carry procedure_hint — placeholder for QFANG-style procedure generation
MCP server renkin-mcp exposes find_routes, validate_route, estimate_diversity to Claude Desktop
Beam search --beam-width N for memory-bounded exploration; SmallVec<[FEntry; 6]> stack-allocated frontier
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

Pipeline Examples

# Route cost scoring with commercial prices
renkin -t "Cc1ccc(-c2ccccc2)cc1" --bb-prices data/prices.csv --format json

# Forward validation — pipe find_routes output directly
renkin -t "CC(=O)Oc1ccccc1C(=O)O" --format json | renkin-forward validate

# Faster template retrieval with bond-center index (~24% speedup)
renkin -t "c1ccc(NC(=O)c2ccccc2)cc1" --templates data/templates_extracted_5000.smi --bond-index

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 (5k default; 50k via --templates) 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))
│  - 20 built-in + up to 50k via --templates  │     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              # retro rules + BB lookup + 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 — crates/renkin-forward/ sibling crate
  • renkin-forward predict — template-based forward prediction (reactants → products)
  • renkin-forward validate — forward-validate retrosynthetic routes; stdin-pipe friendly
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}: Retrosynthesis Engine for Knowledge-Informed Navigation},
  year      = {2026},
  url       = {https://github.com/kent-tokyo/renkin/releases/tag/v0.15.2},
  version   = {0.15.2},
  license   = {MIT}
}

Security

Report vulnerabilities via GitHub Private vulnerability reporting. See SECURITY.md.


License

MIT


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


If RENKIN saves you time, a GitHub star helps others discover it.

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.4.tar.gz (158.2 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.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (857.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

renkin-0.15.4-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (811.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (854.7 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (855.4 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (854.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (805.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp314-cp314-win_amd64.whl (612.8 kB view details)

Uploaded CPython 3.14Windows x86-64

renkin-0.15.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (854.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (805.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp314-cp314-macosx_11_0_arm64.whl (735.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

renkin-0.15.4-cp313-cp313-win_amd64.whl (611.1 kB view details)

Uploaded CPython 3.13Windows x86-64

renkin-0.15.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (853.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (803.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp313-cp313-macosx_11_0_arm64.whl (734.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

renkin-0.15.4-cp312-cp312-win_amd64.whl (611.2 kB view details)

Uploaded CPython 3.12Windows x86-64

renkin-0.15.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (854.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (804.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp312-cp312-macosx_11_0_arm64.whl (734.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

renkin-0.15.4-cp311-cp311-win_amd64.whl (614.9 kB view details)

Uploaded CPython 3.11Windows x86-64

renkin-0.15.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (857.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (808.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp311-cp311-macosx_11_0_arm64.whl (739.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

renkin-0.15.4-cp310-cp310-win_amd64.whl (614.9 kB view details)

Uploaded CPython 3.10Windows x86-64

renkin-0.15.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (856.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (809.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (857.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

renkin-0.15.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (809.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

renkin-0.15.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (809.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: renkin-0.15.4.tar.gz
  • Upload date:
  • Size: 158.2 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.4.tar.gz
Algorithm Hash digest
SHA256 4eb97b1fd730c3b66608aeba7c2b34e81b23a963628ca701bdd3013e5e991033
MD5 97a12eabfd2d9a002a1c77c1e1f88732
BLAKE2b-256 761d87b82f2b6b5a145665fce4488c83a1505abb082a231d8f7989a46233c912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9414318b8e551a99fe6afd27795f65a1b0637872cdf18c3dd546ccff3e489c43
MD5 cbccae17118e4c33483c6b15fe2225cd
BLAKE2b-256 ebf88c81a3ef1493f0c3fd06f92d8976d5619c2a36d7dd9aedbd953128821be1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9f61f168fde429c79da65035cb3cedc58c9db7cffb6406e9d76aa93ccd7d24d3
MD5 79301e2aac3a4bc08b895621239fca72
BLAKE2b-256 dd127f7a143900c890e98ca84dc300e2953959bb9f8927961f1abf931b5cbcbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ca11f3104c711a3d6eededc0c777300fe8e20744639d8014bc58b0fcc89f771
MD5 a0d5c423fcd89e00cfffacb41ec15d60
BLAKE2b-256 eb3f298193ec4439ead0be4d73195dad5b43ad12bf0fc72c63cb1f1260cf19b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5cb795ff89a9c0ab63f99f0e38eca021deb8ff2dd3cbaf0c763e8072b19ed959
MD5 856f751748bd2c495912cea4356ab1cc
BLAKE2b-256 af78a3870dd746fbd9597befda2cc107d2461580df880a9b9cbec689be8ffd30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b35db1b065f3314a444f37b3d6af495fa0be49707ae5e73ecfeb8e8fd3da7f2d
MD5 23a5d42937cef3d02954b061d3bccd18
BLAKE2b-256 2c7912a797558d95fbeceda8d637baa430d06391d39b642ae5f095182085d053

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04b67eb62970580f24420920cf704400a2e524b44383c17b7625c14f96b5b5fb
MD5 a19d2ab36b085e311480cd3f81afba3f
BLAKE2b-256 f97e29d2b959231f46172a44766f301997adf510e30ff5021d8dd7afbc7233b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: renkin-0.15.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 612.8 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.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 77dc81537ea702283cbb0b8c4fb855b52779d36b6d3014020ed3e775cf08b080
MD5 55e64a214cef0f5d4b284d2373e46d89
BLAKE2b-256 94b78e6a818b996445469debd37c72b6c00fd77383433e04772ae949e0ecc662

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4729f5d5632b2ba4abc5e46d5283f5dc5186756491aae9f9979259a911d35798
MD5 210dbf4f73fb48706ff68920e8f295e6
BLAKE2b-256 1eebe5a6fa370f85e70c47ab410bfab7b58114df76272271b55699ddc50a5230

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 da7a16649903a2570445e3b91782099f7f0b60ed97a34505e0fad14f84fd99c8
MD5 4e3953e16384ea46bcbba18710eaee7c
BLAKE2b-256 2c726fc91754fd09e2f50e21c6c2f92e994cccdb298c7372b5670b4d3de497ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee8eb4f42f22ab43102504662339539ef88f8c812d46bcc1a94e8bd7c6b001f6
MD5 1fad2ef36340e419fd440e66a6d7bffe
BLAKE2b-256 0e10b202ce610baab45c145fb12765e89ec45b4b58d3d5cecd561773fae1449f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: renkin-0.15.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 611.1 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 66b2f3c4e330218143963431c6c9a803a612e6c73518a29cfbc82b54e407bd93
MD5 d84b58aa54bb4268168b19c7a94cc7ec
BLAKE2b-256 3ceb653df7f841ba2f15946a0ba4e1b14de5154aff9e5f0293fe6807f2faffe7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6edacd3e95ec95c8f32f94793dd11453317aa2c4ee7b21a54b2328fc8698bbca
MD5 3d6c62584ef6257b1a1f60d38593e82e
BLAKE2b-256 886ef3d4919eaa2aba156f3f2948f74b255a10cfbaf4ff10c642324fcfdbfee0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 99e7960e06996bad4860339c4dc4a0801967c471766e111c7b534c94bf7df100
MD5 5f01a73fcbea9532d48ab78fbcba3cf5
BLAKE2b-256 60c6575207987f20c018356da151e5ef88582db37342403c0b1fcf755d212c8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c80345587fe0876c841eb03e400196206f0fbb03fabde1da8dc891344baf16d
MD5 5e3cfc977236347b55402b553c2431cc
BLAKE2b-256 ff5171aec5ee2e08a1d4481868cfef4cd00e334a4c4380ac6dcfd2f9225bc97b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: renkin-0.15.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 611.2 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 beabbedccdcd07f71792f42ed655bdd2fd250926a123579a7f71a1e8020d9575
MD5 a4b21d70c8df9bbc5f6c248cc66863ca
BLAKE2b-256 9e3c81b4f912cd1e525704fbc4a85d3d198297151d8c1474eeb75a25c1d10d26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f07a91fca90a5a537a2e6451ed1eb782a95d8b8bd8e70aca13f9d7684da97e4c
MD5 de46a3f8ba20ed497f65993b6143663d
BLAKE2b-256 ced0bc6181eb326caa0d2c012f28abb0c27bdddebbfdba3a5dd41b4d3d1c8f0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d782d9f6d328e0f91e0fff24264ea0285af2bf7ea3f6ddc9a651fbf912dbcac7
MD5 6e90b2a066fbf5131ac2375e95864a40
BLAKE2b-256 1542341a773769d022b0ae586b82d3b3250d23b399ba316ee8bb759a91a6100b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c77290f80d048bb02e9ec27d94bc9088896ff046fa81241ef624e9a5d07fb05
MD5 df2442bdf9d891350dd48ee14ad0da71
BLAKE2b-256 2dd8ca55bc0ac23b26a0103f5b5d37a930e229d3ba356196fd8ad858177cf1a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: renkin-0.15.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 614.9 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 740030f7b9a36bed5c0ffd5f74e91c0ed8d9e88b326057c6ed80985858146af3
MD5 092bf3e603c351c136d28eda566088da
BLAKE2b-256 84cae188f7bb725c6b134cc6f8b1c32981fae4f981c0b860e03688cac82b4ed8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1926ea45ed55935216483f78aea4431fdda343dcd88faecf9e047f23fa25e0f3
MD5 7be04f688915f85df0594c0dca4ae004
BLAKE2b-256 c0e58542ed848cdab586393c2fd548d914d7389b41c0e14fd4a5c4629e46df42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70cc36d4ae952ab18198225d951b28d27f36a0747fde602a32290e7d7a9e945c
MD5 73c2217d50095a728203216f66a6b17d
BLAKE2b-256 fd8202649f5a5e4876de6e4551fbe2126699bf4f607713f0712619a3cbebc72a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42088f7ac22583f317e822d703c51f1924e8b64142c774953b1354f1e7d4a665
MD5 08fbc98af53ad7df0bc79f9b75adecf6
BLAKE2b-256 884783aee759de9fc08b66669691a31b4553baadf09132ac9bbfbc4b032b2965

See more details on using hashes here.

File details

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

File metadata

  • Download URL: renkin-0.15.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 614.9 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e9e08b61cf467d17e951a5ee244f17cdcd3a9924e822fc667790af515e0f043b
MD5 7427cd27ea826204fb677f88833026bb
BLAKE2b-256 1167479b84471d05b48382e3549266dd47932f0f55f72840fe781f19c684a578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 275b751f38e13cf977fb7b7edb0e77999e894d984fe932107e789b4758e9b94c
MD5 fedf5480b8700a3441a0898ee2a11d1e
BLAKE2b-256 58d6f06d6d4a78c562d674590667c10313af351e8af73d6d10689fea9efc49a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1bd9ba648286e00d267393756ea719d6df539decd72c1fb486599dad587aa6ae
MD5 50595eced9c2a00b47607686a69fb6a0
BLAKE2b-256 18a3bbc3e5bf9ef7da21c50dbf872f2388b3c9c089c24ff3b907a92518ad2521

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 134bda3075e2882f234e812ed787e36f7c5cf2f0cd5c105eef5ff77db9423961
MD5 83c267b7cb73587a89c59aa49a879a6d
BLAKE2b-256 8c32cb383f1a2c96263108d944e722267b3078bc71eb860114b13a22691c58d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3a860e7bada423272432aa0828dc0306e8a277c92dc5bde4e2869cfee6f82fb8
MD5 d45481774406b4cdf35f7dad67a673c3
BLAKE2b-256 ce28ef8a81b555f352fe51b26f93ca1051e0b26d1316d26798c1fb88bacc2e46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.15.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe11d5a29d2bdcd6cd17000b80481d5e6f5ea6a4cf34e307b08b514e9390aee1
MD5 1cb32dd3314be87bfc505c6418d0fe1d
BLAKE2b-256 2ccc79edb7063e71183cf4a390da741b508944bba40758e3992577b3809d9c9c

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