Skip to main content

ikat

CI GitHub Pages PyPI crates.io License: MIT License: Apache-2.0 Python Rust ikat

Weave Markdown into camera-ready LaTeX. ikat is an md→tex/pdf pipeline whose compute core is Rust (via PyO3/maturin) with thin Python wrappers: Markdown documents go in, conference-ready PDFs come out, and every figure is generated — never screenshotted.

The name is a fabric pattern: in ikat weaving, threads are patterned before they reach the loom, so the design is carried by the material itself. Likewise, an ikat document carries its figures as data and diagram source: the pipeline weaves them into TikZ/pgfplots at build time, set in the document's own fonts. No matplotlib, no pasted PNGs, no font mismatch between text and figures.

What it does

  • Markdown → LaTeX (ikat.pipeline): headings, tables, citations, code, footnotes, and fenced elements → a complete .tex document.
  • Mermaid → TikZ (ikat._core.flowchart_to_tikz, Rust): the graph TD/LR flowchart subset → a tikzpicture with deterministic layered layout. No Node.js, no browser, no SVG round-trip.
  • Data → pgfplots (ikat._core, Rust): bar charts with min/max whiskers, log axes, line plots → tikzpicture code compiled by your LaTeX installation, so figure fonts always match the paper. Legend placement is a keyword: auto (default) tries the inside corners against the drawn data and falls back below the axis; below pins the under-axis row; the four corners and outside-right place it by hand. Anything else is a build error.
  • Per-element spanning (ikat.toml): one/two-column layout is not global — each element kind (diagram, plot, table) declares column or wide, overridable per element from Markdown.
  • Compile (ikat.compile): pdflatex/bibtex driver that turns the woven tree into PDF.

Showcase paper

Read the ikat showcase paper (PDF), or browse its Markdown source and build instructions.

Layout

ikat/
  src/            Rust core (pyo3): mermaid.rs (flowcharts), plot.rs
                  (pgfplots + legend auto-placement), table.rs, doc.rs,
                  esc.rs (unicode/citations), config.rs (ikat.toml),
                  texenv.rs (package scan), tectonic.rs (engine),
                  md_spike.rs (parser-spike harness, tests only)
  python/ikat/    thin wrappers: pipeline.py (fences/spans/floats),
                  document.py (BuildSpec assembly), compile.py (pdflatex
                  driver), texenv.py (kpsewhich/tlmgr), cli.py (`ikat`
                  script), mcp_server.py (FastMCP stdio),
                  templates/ (9 heads + skeleton-plain)
  tests/          pytest suite (runs against maturin develop build)
  docs/           ARCHITECTURE.md, QUICKREF.md, RESEARCH.md, ROADMAP.md, FORMAT-DRAFT.md
  skills/          Agent Skills: ikat guide, ikat-api, ikat-cli, ikat-mcp
  examples/       mini.md starter + ikat-paper/ showcase (6-page paper
                  built by ikat itself), plot/float/skeleton proofs

Develop

Requires Rust (cargo) and Python ≥ 3.10.

uv venv .venv && uv pip install -p .venv maturin pytest
VIRTUAL_ENV=$PWD/.venv maturin develop
.venv/Scripts/pytest tests/      # windows
cargo test                       # Rust unit tests

LLM agent surface: API, MCP, CLI, skills

Use ikat programmatically through its Python API, automate it with the CLI, or connect the optional stdio MCP server as agent tools. The repo also includes focused Python API, CLI, and MCP skills, plus a general ikat guide. These interfaces use the same Rust-backed pipeline; the skills guide the agent but do not install or run ikat.

Same core operations across API, CLI, and MCP. Python API is the reference; the CLI and MCP server call it directly (ikat[mcp] pins mcp>=1,<2).

ikat build doc.md --toml ikat.toml --outdir out --ensure-packages
ikat weave doc.md --spec spec.json > doc.tex   # tex to stdout, no TeX needed
ikat check doc.tex [--install]                 # missing packages (-> exit 1)
ikat templates | ikat template arxiv --show-preset
ikat skeletons | ikat skeleton skeleton-plain
printf 'graph TD\na[x]-->b[y]\n' | ikat flowchart -
echo '{"title":"t",...}' | ikat barchart - [--legend top-left]
ikat version

--spec is BuildSpec JSON (diagrams/plots/table_captions/bib_style/…; unknown keys ignored). MCP server over stdio:

python -m ikat.mcp_server
// Claude Desktop / pi client config
{ "mcpServers": { "ikat": {
  "command": "/path/to/.venv/Scripts/python.exe",
  "args": ["-m", "ikat.mcp_server"],
  "cwd": "/path/to/ikat" } } }
operation Python API CLI MCP tool
weave document build_document / build_from_paths ikat build / weave weave_document
flowchart flowchart_to_tikz ikat flowchart flowchart_to_tikz
bar chart barchart_to_tikz ikat barchart (JSON, --legend) barchart_to_tikz
line plot lineplot_to_tikz ikat lineplot (JSON, --legend) lineplot_to_tikz
check packages check_tex_env ikat check check_tex_packages
install packages ensure_tex_packages ikat check --install ensure_tex_packages
templates list_templates / template_path / template_preset ikat templates / template list_templates / get_template
skeletons list_skeletons / template_path ikat skeletons / skeleton list_skeletons / get_skeleton

compile_pdf stays out of MCP (workdir-bound, minutes-long); drive it from the CLI.

Floats: span, position, width

Every floatable element (diagram, picture, plot, table) takes {...} attributes on its fence — tables via a %% table {...} comment on the line above:

```mermaid {span=column pos=both width=0.8}
%% table {pos=barrier}
attr values default
span column | wide per-kind [spans] (picture falls back to diagram)
pos top | bottom | both([!tb]) | page | here | force([H]) | barrier [floats] pos_default (top)
width fraction of span (0.8) or TeX length (5cm) span width
captionpos top | bottom figures bottom, tables top

Hard LaTeX rules are build errors, not log mysteries: figure* with here/force is illegal (use span=column); wide+bottom auto-loads dblfloatfix; force/barrier auto-load float/placeins (generated head) or are required in template heads (validated). Document-wide tuning lives in [floats] (fractions, counters, barrier_sections, pos_default) and is emitted only when non-default — default documents weave byte-identically.

Templates

The generated preamble fits the common case; journals are not the common case. [template] in ikat.toml hands you the head (level 1) or the whole document (level 3):

[template]
preamble_file = "journal-head.tex"      # replaces the generated head
preamble_append = ["\\usepackage{natbib}"]  # extra lines before \\begin{document}
  • preamble_file (resolved relative to the toml) replaces everything before \begin{document} — class, packages, title, author. The body tail (\maketitle … bibliography … \end{document}) stays generated.
  • Safety over silence: ikat validates the replacement carries a \documentclass and every package the woven body provably needs (tikz for diagrams, pgfplots for plots, graphicx for precompiled figures, tabularx for tables). A head that drops one fails fast naming it, instead of dying in a TeX log.
  • Path-based builds resolve it for you: build_from_paths(md, toml, spec); spec.preamble_override set directly beats the toml value.

Shipped library

Nine starting heads in ikat/templates/ (each documents its companion config). Tokens {{{title}}}, {{{author}}} and {{{thanks}}} fill from the manuscript H1 + spec author/thanks; an emptied \\thanks{} is dropped (it kills IEEEtran titles).

name class bib_style needs flag
arxiv article 11pt, arXiv-safe IEEEtran —
article-1col / -2col article + geometry IEEEtran —
article-3col article + multicol (all spans column) IEEEtran —
ieee-conference IEEEtran conference (the generated default, explicit) IEEEtran —
acm-sigconf acmart sigconf (no hyperref/lmodern/geometry: class-owned) ACM-Reference-Format abstract first
springer-llncs llncs runningheads splncs04 —
elsevier elsarticle preprint elsarticle-num abstract first
aps revtex4-2 (title+authors ride AfterEndPreamble; no tabularx: REVTeX clashes) apsrev4-2 abstract first

abstract_before_maketitle = true (in [template]) hoists the body's abstract env before \\maketitle for top-matter classes (ACM, Elsevier, APS set the abstract in the title block — a late abstract is silently dropped, proven by probe). template_preset(name) returns each head's bib_style + toml snippet:

from ikat import template_path, template_preset
preset = template_preset("elsevier")
# {'bib_style': 'elsarticle-num', 'toml': '[template]\nabstract_before_maketitle = true\n'}

Every head is compile-proven locally (abstract + TikZ + table through pdflatex, title/abstract text verified in the PDF); examples/headsproof.py re-runs the proof. Publisher classes were installed from TeX Live archives into the local texmf tree (same trick as IEEEtran/pgfplots) — on a full TeX Live they just work. Heads are starting points, not submissions: always verify against the publisher's proof.

Level 3: whole-document skeletons

skeleton = "paper-skel.tex" (in [template], mutually exclusive with preamble_file) replaces the WHOLE document — head and tail. The skeleton is complete .tex with tokens:

token fills from
{{title}} {{author}} {{thanks}} as level 1 (brace them: \title{{{title}}}; empty \thanks{} drops)
{{body}} woven body — required exactly once
{{bibliography}} bib style + name — required exactly once unless bib_name is empty (biblatex skeletons print refs themselves)
{{abstract}} the whole woven abstract env — required exactly once when the manuscript has one (needs abstract_before_maketitle)

Unknown {{word}} tokens and duplicates are build errors; % comments may document tokens freely (counting and rendering skip them). Package validation scans the whole skeleton, and preamble_append splices before \begin{document} as usual. This unlocks multicol wraps, per-journal tails, and biblatex — whatever the generated tail cannot express. skeleton-plain.tex (article + the tokens, placeins/float preloaded) is the starting point, compile-proven to PDF; level-1 heads stay the recommended path.

LaTeX requirements

ikat emits standard LaTeX; it never bundles classes or packages. You need a working TeX installation with pdflatex (and bibtex if you stage a .bib). TeX Live scheme-full covers everything; minimal schemes (TinyTeX included) need at least:

what packages needed when
base document amsmath amssymb tabularx graphicx hyperref lmodern textcomp + your document class (IEEEtran, …) always
inline diagrams pgf (tikz) + TikZ libraries shapes.geometric arrows.meta positioning any woven tikzpicture
data plots pgfplots (compat 1.18) any woven axis environment

Precompiled-PDF figures need nothing beyond the base set — one reason to prefer them for journal submissions.

tlmgr install amsmath amssymb tabularx graphicx hyperref lmodern \
  textcomp pgf pgfplots IEEEtran

Ask ikat what a given body needs instead of guessing:

from ikat import tex_requirements
tex_requirements(has_tikz=True, has_plots=False)
# ['\\usepackage{tikz}',
#  '\\usetikzlibrary{shapes.geometric,arrows.meta,positioning}']

The document builder does this automatically: build_document scans the woven body and injects only the packages it contains.

Never debug a missing .sty by hand again — the texliveonfly-style helper probes any .tex preamble and installs what's absent:

from ikat import check_tex_env, ensure_tex_packages
check_tex_env(open("doc.tex").read())
# {'missing': ['pgfplots.sty'], 'unprobed': [], 'ok': False, ...}
ensure_tex_packages(open("doc.tex").read())  # tlmgr install + re-probe

compile_pdf(workdir, main, ensure_packages=True) runs the same check before compiling and raises with a fix-it hint (manual texmf install or MiKTeX Portable) instead of a cryptic TeX error.

Notes:

  • If tlmgr fails (broken mirror/GPG — seen in the wild), install from a TeX Live archive instead: unpack systems/texlive/tlnet/archive/<pkg>.tar.xz, copy its tex/ tree into your texmf-local tree, run mktexlsr. That is how the dev setup gained IEEEtran and pgfplots. Windows alternative: MiKTeX Portable needs no admin rights and auto-installs missing packages at compile time (its own manager/mirrors); ikat's compile_pdf shells to pdflatex, so it works unchanged.
  • arXiv's TeX Live ships everything above, so an ikat bundle (.tex + .bbl + figure PDFs, no class/style files) compiles there as-is.

License

MIT OR Apache-2.0.

Metadata

Release files for ikat 0.2.1

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

Source distribution (sdist)

Source distribution for ikat 0.2.1
File Size Uploaded Provenance
ikat-0.2.1.tar.gz 527.2 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for ikat 0.2.1
File
ikat-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
ikat-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
ikat-0.2.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
ikat-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
ikat-0.2.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
ikat-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
ikat-0.2.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
ikat-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
ikat-0.2.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
ikat-0.2.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
ikat-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details

Total release size: 22.2 MB

Release files / ikat-0.2.1.tar.gz

Download URL ikat-0.2.1.tar.gz
Size 527.2 kB
Tags Source
SHA-256 checksum
How to use checksums
72c311f61e0bfa5bd25592c7dca3b5def5c56bde3feaa2990c9b4f1c4fab2dbc
BLAKE2b-256 checksum
How to use checksums
14c7968091ed121f9ac79badd20d94a691137ea1c40639aec24497280f3b1c52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
e761042f4e6654d1b352daeb26e794912242120a8554460aa33284566e3ff14f
BLAKE2b-256 checksum
How to use checksums
224c61d901cd81356ea93716248ff47b95baa9f201f85a7e3282e07f4e664e89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cd5e5cd6b26268acbb613419e91e187545bd00aa4cb0a0e4e2b1ca23a78c4784
BLAKE2b-256 checksum
How to use checksums
09874c1e5cc2297f67704305c4d4c4610f3ab59603aa5ec42e8812980390ceb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
444b9a8539b1696911da8bb6c974ab212690ba391a7d0a91c9ed58691a26d0ae
BLAKE2b-256 checksum
How to use checksums
efff4b8253ef862819b30f9b0a89594c7d6c5ba1cd14781410f9faa197a46fe2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
872e5e6f80d3a1b594afb830e430e94cfb11d375680dae5c16672208aa560810
BLAKE2b-256 checksum
How to use checksums
ddf850de39be53e4832110d3ab7d914b9071b5a20b81b0ef4800d4370818b7a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp314-cp314-win_amd64.whl

Download URL ikat-0.2.1-cp314-cp314-win_amd64.whl
Size 1.1 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
adee1b7ddf0ba3318ac4feb2bda5939762ed7d47f05862b56de1ef7839d3f345
BLAKE2b-256 checksum
How to use checksums
6b6d7d129cc053a95b7a4e890f72dfcb17878f553b398ba106df9f624e49d1f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
79af3c593d54590c2bc3c521bdc58ca0e9c12d67a8b766b2a8acdd7b3d73ac15
BLAKE2b-256 checksum
How to use checksums
678bc9a7e2ce5b0722969b43c046bcc6bbff8ff8fae59b18d6def52dd728642b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL ikat-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5f0607767f6212a5d19a2a7f4c566c496e4d0ee4acca644c031a6bd4e63f83b9
BLAKE2b-256 checksum
How to use checksums
a9bfacbb5b8128074b1bd03f8c0829e2b87adf96d3c0ab78a4bebc195f13a6eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp313-cp313-win_amd64.whl

Download URL ikat-0.2.1-cp313-cp313-win_amd64.whl
Size 1.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
091676f95c255c8eac0527cf14689ec4e966f054526c0e2bb71669ae49b7cccf
BLAKE2b-256 checksum
How to use checksums
b3284b6fc6f15bf03cd752948cdbb298dedc8cf211d1045e1e9768e19a471367
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b1f405331aae3cbf77035dcea2d675aa364430d90d85b6ff19ac3a2eed117bf3
BLAKE2b-256 checksum
How to use checksums
5b63d9652d389e13ad156dacde0f00d07d1bce37ebe1a2d206fd8c6fc322c160
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL ikat-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f5c9eaf9792d34dd41e8d6cd79b11756d823d437a7e2fbb78d07c5eb3cd66f54
BLAKE2b-256 checksum
How to use checksums
751ce5e7c7e0b39311fdb70264f8a25c42d9896c80e3f3c647a628d76ddd3048
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp312-cp312-win_amd64.whl

Download URL ikat-0.2.1-cp312-cp312-win_amd64.whl
Size 1.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9c46b24af2342949287056a172b82fe6c39da941ea0a504bb7f1f072994a45b6
BLAKE2b-256 checksum
How to use checksums
1c5144351ec5565de847360cb8944e35c8a7528b5e6ef318a5daaa72d34d0e0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e58ba54832b2c21503b6f38a99709e9d2816cf6bcb79e9fabae866ff0e4d1c75
BLAKE2b-256 checksum
How to use checksums
1a4eba891a4ecd28a8d58f3de716af2846faa5b90b564937c533b5ea92795cc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL ikat-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ff71e5141325e462bd7ce1acf50a10164167eba4d447e2414e5f386e24487e31
BLAKE2b-256 checksum
How to use checksums
f60a731b8da7a788fce45c615184d0951a9d0cc3f5d5cceba17cba68d75af66e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp311-cp311-win_amd64.whl

Download URL ikat-0.2.1-cp311-cp311-win_amd64.whl
Size 1.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5c3bd2f98aa15eff50dc05d6612ede8e87b4a00ce6d91ebe16e69662d47a8cec
BLAKE2b-256 checksum
How to use checksums
e49a1d58b7378804cdf27440057843e400fb3117c13b84f62c2d53c334150ba9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
56a3755e620904ffa96a9b3b4c296f639015f202a70f46e42507212bb3c6d22a
BLAKE2b-256 checksum
How to use checksums
82243d6ab5a8f4c18d7f3564c1390584720476e1dea91dc0de590c1533e3590e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL ikat-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7a4a1817a3b8aab10c910bc1a18b1833f43350e282b0348d6a435ac83272b3b1
BLAKE2b-256 checksum
How to use checksums
b976544a25fe2ceb82897b6b9805afff3b9ca7c353862e7b4d3dd30912316671
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp310-cp310-win_amd64.whl

Download URL ikat-0.2.1-cp310-cp310-win_amd64.whl
Size 1.1 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
39883395ee130f714014aafb472c6988819cd0cc254290e3a623a987f56f5e9b
BLAKE2b-256 checksum
How to use checksums
7866fed4e47ea94ca9ec10186ac4fa6c5ad9977080989cf9d4462bbb4e187bc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / ikat-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ikat-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.3 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4d60c503a5780e04eaccc976db7fc1d9d979c4e1aa3d18a0d6ad1183ee478e9e
BLAKE2b-256 checksum
How to use checksums
2239ee3f1f0b23af2f807277b5d5984a7a6f6d88465ff32e5c31a69b607d7fd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Security for ikat 0.2.1

Provenance

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

Full provenance

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

Select from 19 files

Attestation for ikat-0.2.1.tar.gz

PyPI Publish Attestation

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

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

Transparency log

A note on package security

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

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

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