Skip to main content

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

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

日本語版 README · 中文版 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, #![forbid(unsafe_code)] throughout. One codebase compiles to a native CLI, a Rust library, Python wheels (PyO3), and a WebAssembly module that runs entirely client-side in the browser.


Installation

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

Live Playground

→ Try it now — runs entirely in WebAssembly: no installation, no server, no network calls.


Quick Start

import json
import renkin

result = json.loads(
    renkin.find_routes(
        target="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


Current Limitations

⚠️ Benchmark numbers are under active re-measurement after a validator-accuracy fix — historical 78.0%/95.9%/81.8%(ChEMBL) figures elsewhere in this repo predate that fix and are invalidated. RENKIN does not predict yields, calibrated experimental success probabilities, or side reactions, and does not search the literature automatically (success_probability is a template-frequency search-ranking score, not a calibrated prediction — see Benchmark for the current corrected numbers, full methodology, and known limitations).


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

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.


Template Evidence Metadata

Extracted templates only have a positional display name (extracted_{i}) that changes whenever the source .smi file is reordered or re-extracted, so external knowledge (a DOI, a reported yield, a known side reaction) can't be durably attached to one. Every template — hand-crafted and extracted — now has a stable template_id instead:

  • Hand-crafted rules: rule:<rule_name> (e.g. rule:suzuki_retro).
  • Extracted templates: smirks-sha256:<hex> — the SHA-256 hex digest of the trimmed SMIRKS string. Independent of file position, load order, and count; purely syntactic (no SMIRKS canonicalization — a semantically equivalent SMIRKS written differently gets a different ID).

Run renkin template ids <file.smi> to list every template's template_id, display name, SMIRKS, and weight (TSV by default, --format json for JSON) — use this to look up the IDs you need when authoring a sidecar file.

Attach curated evidence with --template-metadata sidecar.json (also available in Python as find_routes(..., template_metadata_path=...)), keyed by template_id:

{
  "schema_version": 1,
  "templates": {
    "smirks-sha256:ef8778a2888469d619c52cce7e74f6848e101049050dd1b765b78f32e3c94498": {
      "references": [
        { "id": "ref-1", "kind": "doi", "identifier": "10.xxxx/example" }
      ],
      "condition_candidates": [
        {
          "catalysts": ["Pd(PPh3)4"],
          "bases": ["K2CO3"],
          "solvents": ["EtOH", "water"],
          "temperature_c": { "min": 75.0, "max": 85.0 },
          "source": "literature",
          "scope": "template",
          "reference_ids": ["ref-1"]
        }
      ],
      "reported_yields": [
        {
          "percentage": { "min": 72.0, "max": 81.0 },
          "basis": "isolated",
          "source": "literature",
          "scope": "template",
          "reference_ids": ["ref-1"]
        }
      ],
      "warnings": [
        {
          "code": "possible_protodeboronation",
          "severity": "medium",
          "message": "Protodeboronation has been reported under prolonged aqueous heating.",
          "source": "literature",
          "scope": "template",
          "reference_ids": ["ref-1"]
        }
      ]
    }
  }
}

A matching step gets an evidence field with condition_candidates, reported_yields, references, and warnings; steps whose template has no sidecar entry get no evidence key at all. The sidecar is loaded and validated (schema version, duplicate/dangling reference IDs, yield range, range min <= max, non-empty DOI/patent identifiers) before search starts — malformed metadata is a hard error, and a template_id in the sidecar that matches no loaded rule prints a warning rather than failing silently.

What this is not:

  • reported_yields is a curated record of what was reported externally — not a RENKIN prediction. step_confidence/success_probability are unaffected and keep meaning template-frequency-derived search-ranking scores, not experimental success rates.
  • warnings reflects only what's explicitly present in the sidecar you supply — not automatic side-reaction detection.
  • Templates without a matching sidecar entry get no fabricated evidence. Nothing is invented for missing data.

Yield/success prediction and automatic literature search are explicitly out of scope for this phase — tracked as future work in #41.


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 — see caveat below the table
Step metadata provenance Each step reports metadata_source/metadata_scope (e.g. handcrafted_default/reaction_family) so it's machine-readable whether conditions/reaction_family came from a rule-author default vs. something more grounded; absent for extracted templates, since nothing is fabricated for them.
Stable template IDs + evidence sidecar Every template gets a stable template_idrule:<name> for hand-crafted rules, smirks-sha256:<hex> for extracted templates (independent of file order/position/count). Attach curated DOIs/patents, reported conditions, reported yields, and known side-reaction warnings via a --template-metadata sidecar.json file keyed by template_id; matching steps get an evidence field, everything else stays untouched — see Template evidence metadata below. Run renkin template ids <file.smi> to list stable IDs for authoring a sidecar. Automatic yield/success prediction and literature search remain out of scope (#41).
Route cost scoring route_cost = Σ(BB cost) + steps×0.5; actual prices via --bb-prices CSV or --stock stock.csv
Pareto multi-objective search --format pareto returns a Pareto front across route_cost, success_probability, steps, etc.; objectives configurable via --objectives cost:min,success_probability:max,steps:min
Constraint DSL --constraints constraints.json — JSON-driven synthesis planning: element filters, step limits, confidence thresholds, preferred reaction families; enables LLM → RENKIN pipeline
Output formats --format json · tree · mermaid · explain (human-readable per-route analysis) · compare (side-by-side table) · compare-json · pareto
Failure diagnostics Zero-route JSON output includes diagnostics block with likely_causes and suggestions
Forward validation renkin-forward validate verifies each step by applying templates forward; accepts --route-json or stdin
Plausibility report renkin-bench --plausibility — forward-validates best routes and reports composite plausibility score
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)
Stock CSV management renkin stock stats|validate|coverage — inspect and validate stock CSV files with SMILES, name, vendor, price, hazard fields
Template quality tools renkin template stats|validate|dedup|explain|coverage|ids — inspect SMIRKS template sets: frequency distribution, validity, duplicates, per-template lookup, coverage rate, stable template IDs
MCP server renkin-mcp exposes 6 tools: find_routes, validate_route, explain_route, find_pareto_routes, plan_with_constraints, estimate_diversity
renkin-doctor Environment diagnostic binary — checks templates, building blocks, Python import, tool versions, and data integrity
renkin-kg Reaction knowledge graph builder — constructs bipartite mol↔reaction graphs from routes; exports to GraphML or Cypher
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
building_blocks in JSON Each route includes the leaf starting-material SMILES — no manual step parsing needed
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
402 building blocks Aryl halides, boronic acids, heterocycles, amines, acids, amino acids (data/building_blocks.smi, unique compounds actually loaded — see Benchmark section)

step_confidence/success_probability are not yields or measured success rates. They're template-frequency-derived search-ranking scores (rule_weight / max_rule_weight, multiplied across a route's steps) used to order candidate disconnections during search — not a calibrated probability of experimental success, and not an expected isolated yield. Route-level experimental yield/success-rate reporting is not implemented.


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 building block set, within depth=5 and beam=100. Ground-truth reactants from USPTO-50k are not checked — any commercially accessible route counts.

Corrected baseline (commit e20dc8c, 2026-07-22)

Public label Internal metric Value
Search-to-stock rate raw_solved_rate 20.09% (986/4,907)
Atom-balance-filtered rate atom_balanced_solved_rate 15.41% (756/4,907) — subset of search-to-stock
Current-validator-confirmed rate provenance_validated_solved_rate 0.88% (43/4,907) — subset of atom-balance-filtered

402 building blocks (unique compounds actually loaded from data/building_blocks.smi — see below), 5,000 extracted templates, 28 handcrafted rules, depth=5, beam=100. These three rates are a nested series over the same 4,907 targets, not independent numbers, and none is an experimentally-verified synthesis success rate or a human-chemist-reviewed route-accuracy figure. provenance_validated_solved_rate is not a measured chemical-accuracy rate and not a proven lower bound on correctness — it only counts routes the current validator can positively confirm, and an unknown fraction of "invalid" verdicts may be validator false negatives rather than real chemistry or route errors (the split is unmeasured). Full methodology, per-rule breakdown, and reproduction command: tasks/phase31_final_remeasurement_run.md · Full benchmark details →

Historical progression (pre-fix, invalidated — see notice above)

⚠️ The figures in this subsection (78.0% single-pass, 95.9% cascade, 81.8% ChEMBL OOD) predate the 31.11/31.12 fixes, are invalidated, and have not been re-measured. Kept for continuity only — do not cite as current performance.

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 was separately evaluated via ChEMBL approved drugs (81.8%, 409/500, also not re-measured).

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 3826/4907 78.0% 509 5,000 5 100 ≈2,800
Cascade (stage2: depth=7, beam=300 on unsolved) 4705/4907 95.9% 509 5,000 7 300

* 29/50 chunks, previous binary
† 50/50 chunks — 72.1% (3,540/4,907) confirmed
BB counts in this historical table (463/480/509) are as originally documented at each point in time — legacy documentation values, not re-verified against ChemEnv::bb_count(). The corrected-baseline section above uses the actually-loaded count (402) for the current data/building_blocks.smi.

Note: LocalRetro (53.4%) and GLG (58.0%) report single-step top-1 prediction accuracy — a different metric, not directly comparable.

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, pre-fix, not re-measured) suggested the rule set generalizes beyond the test corpus, but neither historical 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

⚠️ RENKIN's row below uses the corrected raw_solved_rate (20.09%, see notice near the top of this README) — the 95.9% cascade figure some earlier versions of this table cited is invalidated and not re-measured; it is not included here.

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) 402+

raw_solved_rate is the closest available RENKIN metric to the published route-finding success rates of the other planners above, but the figures are not directly comparable — stock size, template library, target set, search budget, and route-quality checks all differ across systems, and this table does not establish RENKIN as better or worse than the alternatives.

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 (corrected baseline, commit e20dc8c, 2026-07-22), it reaches 20.09% raw_solved_rate (986/4,907) single-pass — see the Benchmark section above for the full nested-metric series and why the stricter provenance_validated_solved_rate (0.88%) is not RENKIN's measured or bounded correctness rate. 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" }
  }
}

Tools (6):

Tool Description
find_routes Retrosynthesis: SMILES → routes with scoring
validate_route Forward-validate a retrosynthetic route
explain_route Human-readable strengths/weaknesses per route
find_pareto_routes Pareto-front multi-objective route search
plan_with_constraints Constraint-DSL planning (element filters, step limits, confidence thresholds)
estimate_diversity Route diversity and coverage metrics

The server auto-detects data/building_blocks.smi and data/templates_extracted_5000.smi in the working directory. Falls back to the embedded DEFAULT_BUILDING_BLOCKS / default_rules() defaults if not found (152 unique building blocks per ChemEnv::bb_count(), 28 handcrafted rules — verified 2026-07-22; a "509-BB / 20-rule" figure was previously documented here without verification).

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

Architecture

Workspace scope

┌──────────────────────────────────────────────────────────────────┐
│ renkin workspace (this repository)                               │
│                                                                  │
│  renkin  (retrosynthesis)         renkin-forward                  │
│  ──────────────────────           ─────────────────────────────  │
│  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
├── Cargo.toml
├── src/                         ← renkin crate (retrosynthesis)
│   ├── lib.rs                   # public library
│   ├── main.rs                  # CLI binary (--templates, --template-metadata, --scorer, --constraints, --objectives flags)
│   ├── bin/benchmark.rs         # renkin-bench binary (--plausibility flag)
│   ├── bin/doctor.rs            # renkin-doctor diagnostic binary
│   ├── bin/fp.rs                # renkin-fp ECFP4 fingerprint (nn-scoring feature)
│   ├── bin/mcp.rs               # renkin-mcp MCP server (6 tools)
│   ├── 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
│   ├── renkin-forward/          # forward reaction prediction (reactants → products)
│   └── renkin-kg/               # reaction knowledge graph builder (GraphML / Cypher export)
├── data/
│   ├── building_blocks.smi              # 402 curated commercial starting materials (loaded/deduplicated count)
│   ├── 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

Recently shipped

  • Stable template_id (rule:<name> / smirks-sha256:<hex>) + --template-metadata evidence sidecar + renkin template ids (#41 phase 1)
  • renkin-bench cascade — multi-stage search (fast defaults → hard cases re-run deeper); only unsolved targets propagate to later stages. 78.0% → 95.9% on USPTO-50k
  • renkin-bench --failure-taxonomy — classify unsolved targets by cause (beam limit / depth limit / template gap / stock near-miss)
  • Graph-based ester cleavage — BFS-leakage-free R-C(=O)-O-R' → RCOOH + R'OH
  • --top-templates N — frequency-rank filter: use the top-N most frequent templates for speed / less noise
  • raw / validated / practical solved-rate metrics (--plausibility --practical-max-steps N)
  • Retro cache hit-rate in SearchStats + --verbose

In progress

  • Template retrieval index (element bitmask + bond-center prefilter) for the 50k template set
  • Calibrated route confidence (map success_probability to empirical solve rate)

Next

  • Graph rule expansion — sulfonamide / carbamate / urea cleavage (one PR per family, each with benchmark delta)
  • Stock-aware planning (price / hazard / availability re-ranking)
Earlier milestones
  • Route cost scoring — route_cost field + --bb-prices path.csv / --stock stock.csv
  • Cargo workspace — crates/renkin-forward/ + crates/renkin-kg/
  • renkin-forward predict / validate — forward prediction + route validation (stdin-pipe friendly)
  • renkin-doctor — environment diagnostic binary (templates, BBs, Python, binaries)
  • Failure diagnostics — zero-route output includes likely_causes + suggestions JSON block
  • --format explain|compare|compare-json — human-readable and tabular route output
  • renkin stock stats|validate|coverage — stock CSV management subcommand
  • Pareto multi-objective search — --format pareto, --objectives, find_pareto_routes MCP
  • Constraint DSL — --constraints JSON, plan_with_constraints MCP tool
  • renkin template stats|validate|dedup|explain|coverage — template quality tools
  • renkin-kg — reaction knowledge graph (bipartite mol↔reaction, GraphML/Cypher export)
  • MCP server expanded to 6 tools (explain_route, find_pareto_routes, plan_with_constraints)
  • 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.0% 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.0% USPTO-50k (3,826/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.17.0},
  version   = {0.17.0},
  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.

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.17.0.tar.gz (332.3 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.17.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

renkin-0.17.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (954.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (948.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp314-cp314-win_amd64.whl (744.9 kB view details)

Uploaded CPython 3.14Windows x86-64

renkin-0.17.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (950.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp314-cp314-macosx_11_0_arm64.whl (870.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

renkin-0.17.0-cp313-cp313-win_amd64.whl (743.6 kB view details)

Uploaded CPython 3.13Windows x86-64

renkin-0.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (949.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp313-cp313-macosx_11_0_arm64.whl (868.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

renkin-0.17.0-cp312-cp312-win_amd64.whl (743.9 kB view details)

Uploaded CPython 3.12Windows x86-64

renkin-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (949.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp312-cp312-macosx_11_0_arm64.whl (869.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

renkin-0.17.0-cp311-cp311-win_amd64.whl (746.5 kB view details)

Uploaded CPython 3.11Windows x86-64

renkin-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (953.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp311-cp311-macosx_11_0_arm64.whl (875.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

renkin-0.17.0-cp310-cp310-win_amd64.whl (746.5 kB view details)

Uploaded CPython 3.10Windows x86-64

renkin-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (954.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

renkin-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (954.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

renkin-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (954.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0.tar.gz
Algorithm Hash digest
SHA256 2aa5b54c1f131a61ac452e1498f023114b470febec834af8a0a0e9433c3cd48d
MD5 a0facc76b1999d707892f800f9fabab2
BLAKE2b-256 01a71bc9b8a4228a8a8d5a0a390425c30eecaf32bec5875a9a26f8e85b6eeb75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5eb612bcc1095972c22ce4795d1de591f6824c8c437c700f1d866177094c1ea3
MD5 0c3ad023bc963da3482e217ef648f462
BLAKE2b-256 df66396bddaf27eb4892b56b327701b4bf6388b236892d12a2a0e5190d30eb6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ae8325d8c20b68210164ea8bbcb40d8de7565ad9f3e875acabf806bad9917b07
MD5 92772dce2065f09d39f419a51a92904a
BLAKE2b-256 5fb7bd5e51261beeff6cc0daa99e90ad9b311fba200f167aab6bb838def690d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd6fe3b03d60133a5f6292aea8d9cbd7bb18415ed158b5e26d6006f0f663b13e
MD5 66e8b53f43f751568b0ae311a79aafc5
BLAKE2b-256 13470a262f4885560580e05bb1d3335e854ad7f48728b1944910f0466abeac19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a111116c7c75885b0ff6f925ad56acdf999757fb38cfded9955b8ceb049a3625
MD5 0faf555046dc056df865f3abb6556b01
BLAKE2b-256 4270a34b4408b7256d06cd7eac1beed72004b0c1b8275507f75daa6cd2727dc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b0daf319a58b8b4902ce2b87080adcfbaa52eddc32ed3229053935e153a88f8
MD5 8504c8c0eec9b67e0b37e6e9bd5c115b
BLAKE2b-256 48e8d4aaaf978ab0394c9b75923ba3f43f2528d44ff8a625f304f8cd312bd28d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 59803349bfa8a6267528c2d0e6465a87b4b70091c458c3d85a29e5b59da0fbf7
MD5 fae1dbe51d13aa38937ec074c816d058
BLAKE2b-256 60aec8e026dc0fd7a0b063b821489cd4493c376837c28849151e134662ae52cb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d3f8f094ef90260e62be6fd83f9214fafc39177d9486f720e6048f45ebe160fb
MD5 0dde621e7201896550eb7fda1bb1c3a7
BLAKE2b-256 1288d8e6628832c45f4ca1b4b9329ea7de13c70e1fadba9d9840ca10c161c082

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60bbf0051c636d9ce0b47c28a096929a16fba8565d1310b7d3e42ecbf1e0e343
MD5 5e1a39f37dae6208b4afd96e46d7dc81
BLAKE2b-256 ec5c1a676e0a0264b2e26d2e0d10e532d1f01b2891448b089d0695cb7a85e824

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b13e41809128e53e45dfa366ae5090a276517d9c501c70eef239fa4fefbf2b8
MD5 323881b03021c7c59794f186d033b985
BLAKE2b-256 7f7281fb0141884462f61483384a223a49eeeb103d0bfb134f679d75b5244d6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ad2fe6427e8d4cc3854b4b25617e8149bcf71f6d5c88f1d7f0f263c36441fe4
MD5 3169f4e653ceea51377d2c97c33c4e7b
BLAKE2b-256 6e58da4a497143df23caec6d1f36b123b327c68e610cf03f752cb6e30d5e8253

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9dfe58bc4acf0c953d18ef5b713213ec3a63a295eca7ecf429a8c09215b09f74
MD5 367ebcd43cd386262ebc64160b478933
BLAKE2b-256 b43a47e8073648e793f64d3c381991448f04dc420fb5fab03b455f2079bc3677

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ec61193264f22c546ffec49e678816e19ab2b03d16fe47094dcfbc3973835ce
MD5 ece8f2d03c760c6f7d509b3ee3ed85aa
BLAKE2b-256 caf04ceba1442161ef83dd43bd81827b0a26813ae6cd3ceff2cb4c824db968d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b64355f6d27e9aaef34f1c8d7d6357fa934929dfb142ce9ce4e3c9918adf9891
MD5 1700c5b3877ca15d7edbd78b021a5712
BLAKE2b-256 69f5b383e7921528a55a8e53b6cc2a8be4ba7a77d33f8ede3ace5fad05b51ea8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 349f5204c9e2aa3c1ce6d14aa5e1d740e661ab002607f3cd092b4c1e0d4ad863
MD5 49b0f19a8ced2b6b9c45a1f4325c129d
BLAKE2b-256 51e992912b4fbd3827c572ac46502907e0a1e1b1aaa23cfd8ced6bd7e6531119

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b58ec237b07b2682239dc6389dbf7b73d5ffa1df1239f92cf219ebdb157fdf22
MD5 733d2f25dac78b733015e119eaf7a23d
BLAKE2b-256 f15da7d205b1bb127521ad828abc21d2a5f8e93a43370fa68ff73fd29433cc7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d62c55b2acfeb6c7f9ccdbb58e272fda8f582238913571ac493a6d95676881a
MD5 f7d96d49b6b4b9fc3e94c3cb5e6c59fb
BLAKE2b-256 0d39e5f71efc5b91377408203752d6ed9d2dd50d63dd6c0722963ae0d97c7777

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3ef99c770423315470442c5ce3beec6a6f92ec1f9c88e51a8e91db7ac715376f
MD5 78a59aa742a584ac91a1d8d96a9d812d
BLAKE2b-256 e2f6f6f4d2ae795bd1641a8b9395edc54ec8bda5f8defb03896adf57eddb3210

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e214acfeca70bab5b6df64c9318d3141a04a69ef78f86eea264ea021c4a1e97
MD5 9899849718ab5ab1a128c7e035ec77b7
BLAKE2b-256 1a5807719d06085c241b64ea70ada5e1dcf83d62a10867dae0466ef032ea72b7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b97c4f4ce51096874922c5f0bbcbc4b59ff709a6896c6e5eccfc0c4b186bde14
MD5 e0e30ff38e70a822e82270e73513367c
BLAKE2b-256 20171bc72c3a5332b31e77109dfb5b5db5c1695b5dbab195d88821c394b52698

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57992d96861fcfe02a1a56ce207ac4b3e1f2436ecf9bb5fb54f4d2177404c25b
MD5 a993947ec8cd2e786ec15078cb378a07
BLAKE2b-256 8398a9fe9e7f0b53e93362b73be6eaf719ddc71a3252117b59b0f6471a4db23f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a11623527c007af2ee15e9e67d0cb8960dd81a695aad068ace44bbb288faf58
MD5 330647cdcae092c86e2872fc045aede0
BLAKE2b-256 2ab6f42024bfecf0e6c9ace3ed9d0e6841bd190e9cd46327482049f260b20264

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b10335b1ed5835357ab2765d6fbbcd4ed22d6ddb407c55c0b40a67c60be4303
MD5 8a1a593f7eba1bc81a8d8c8dffda4f4c
BLAKE2b-256 b293639ddbc6aa638a8e709e847a826fe43b3e8b16fecf5678471a2177b641d2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for renkin-0.17.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 20ebdb26a91896cec290c5bdad4b8797cf70c4e2e7174dbdda52e411da3dbce1
MD5 ee422657989d5bff0cd4b400e98f44ec
BLAKE2b-256 c75299b9ea9a0fadeed87fed0825ba2df9d02c19aa087ba5d8f48ea4a4d18231

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ceef2bb8200ca65fe286b3113a8e040ab30bf05d4906d3f88684cf2058b59dfa
MD5 62c911e2a31686301a25b71b1f056437
BLAKE2b-256 63b902557695917d4f1a87c16985d51f2cde26423f1269876da364e02786cbd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc3fde4c635cea6cc81608926bd0dc625819bd18b8a7dca40550dd212549e8de
MD5 535ae04a091caf44575e213ca8931c1f
BLAKE2b-256 0703e26ba5359a6a2a22a5677a38e42fa5fdc20ae33a13982a306048152a1053

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6328d78ca6d02cff69a4bd3653ebd5460a66de614530475e590ec47227c9ed53
MD5 386353e1534a647d3b3187d2da61591a
BLAKE2b-256 eb90b5621ff7c1545cc03bba777951f9a2c75ef9c95392ce3cad21e0a0ba118b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a0e84536c178c5c54b5a53b89a2ad3d575b170400136eced8acf73223273a64
MD5 51f3150b4587c3107a85a2bb0ea2d31f
BLAKE2b-256 4c82b1f4b4da7b3161584b8b94c6d01553d6482fd490e6114fe0a7310d0c05ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for renkin-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b72fb2288e0f3254d0290e386224352e04ea48549e442e351b8c490c758070d1
MD5 c7b8982c6fd6c7a78cb591705907f056
BLAKE2b-256 954ab74c8a70963ab5ee711db41f91629db0602dc6caf192909ad76c231e9df6

See more details on using hashes here.

Release history Release notifications | RSS feed

0.35.0

29 files

0.34.0

29 files

0.33.0

29 files

0.32.0

29 files

0.31.0

29 files

0.30.0

29 files

0.29.0

29 files

0.28.0

29 files

0.27.0

29 files

0.26.0

29 files

0.25.0

29 files

0.24.0

29 files

0.23.0

29 files

0.22.0

29 files

0.21.1

29 files

0.21.0

29 files

0.20.0

29 files

0.19.0

29 files

0.18.0

29 files

This release

0.17.0 This release

29 files

0.16.0

29 files

0.15.4

29 files

0.15.3

29 files

0.15.2

29 files

0.15.1

29 files

0.15.0

29 files

0.1.0

29 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page