Skip to main content
Ondine

Batch-process your DataFrames with LLMs, without the boilerplate.

Agents reason row-by-row. Ondine computes columns — 100,000 rows for $0.48 (projected), crash-safe, on any of 100+ providers.

PyPI version Downloads License: MIT Python 3.10+ GitHub stars Tests

ondine.dev · Docs · PyPI

Ondine Demo

The pain

Running an LLM over 10,000 rows should be one call. In practice it becomes a script: loop over rows, parse JSON by hand, retry on 429, recompute what already ran after a crash, and add up the bill in a spreadsheet. Every team writes that script, and rewrites it again for the next dataset.

Ondine replaces that script with one function. You describe the column you want in natural language; Ondine computes it across the whole table — with schema validation, budget caps, crash-safe checkpoints, and cost tracking turned on by default.

from ondine import enrich

df = enrich(
    "reviews.csv",
    "Classify the tone of: {review}",
    output_columns=["sentiment"],
    model="gpt-4o-mini",
    budget=5.0,
)

That's the whole interface. The LLM stops being a service you call in a loop. It becomes a column function inside your DataFrame.

Install

pip install ondine

Python 3.10+. Works with any LLM through LiteLLM: OpenAI, Anthropic, Groq, Mistral, Cerebras, Ollama, MLX, vLLM, SGLang, 100+ others.

Quickstart

Two ways in. enrich() for the common case (one prompt, one table, get a table back). PipelineBuilder when you need to chain options.

Open In Colab · run the notebook below in a free Colab instance with a free Groq key — first output in under 30 seconds.

from ondine import enrich, PipelineBuilder

# 1. enrich() — the one-liner front door
df = enrich(
    "reviews.csv",
    "Classify sentiment and extract the topic from: {review}",
    output_columns=["sentiment", "topic"],
    model="gpt-4o-mini",
    budget=5.00,
)

# 2. PipelineBuilder — same engine, explicit control
result = (
    PipelineBuilder.create()
    .from_csv("reviews.csv",
              input_columns=["review"],
              output_columns=["sentiment", "topic"])
    .with_prompt("Classify sentiment and extract the key topic from: {review}")
    .with_llm(provider="openai", model="gpt-4o-mini")
    .with_batch_size(50)
    .with_max_budget(5.00)
    .build()
    .execute()
)
print(f"Processed {result.metrics.processed_rows} rows · ${result.costs.total_cost:.2f}")

One builder chain: input columns, prompt, model, budget cap. Multi-column outputs get a JSON parser; schema enforcement, checkpointing, and cost tracking are on by default.

When to use Ondine vs an agent

Ondine is not an agent framework. Agents and Ondine sit at different layers and compose rather than compete.

If your task is... Use
Turn one table into a richer table (classify, extract, score, translate N rows) Ondine
Run the same prompt over a whole column with a budget cap and crash recovery Ondine
Produce eval labels / synthetic data / bulk structured fields at scale Ondine
Reason, branch, call tools, and decide the next action per request An agent framework
Hand off the deterministic batch layer your agent's outputs feed into Ondine (the batch layer of an agentic stack)

Rule of thumb: if you know the prompt ahead of time and the data is a table, that's Ondine. If the prompt depends on what the model just decided, that's an agent — and Ondine is the substrate it pushes bulk work onto.

Use cases

Same engine every time. The use case lives in the prompt.

1. Bulk enrichment

Add a column the LLM computes from existing ones. Sentiment, category, PII redaction, language detection — any per-row transform.

from ondine import enrich

df = enrich(
    "support_tickets.csv",
    "Detect the language of: {message}",
    output_columns=["language"],
    model="gpt-4o-mini",
)

2. Structured extraction

Pull typed fields out of free text and validate them against a Pydantic schema. Malformed JSON auto-retries.

from ondine import enrich
from pydantic import BaseModel

class Invoice(BaseModel):
    vendor: str
    total: float
    currency: str
    due_date: str

df = enrich(
    "invoices.csv",
    "Extract the vendor, total, currency, and due date from: {raw_text}",
    output_columns=["vendor", "total", "currency", "due_date"],
    model="gpt-4o-mini",
    schema=Invoice,
    budget=25.00,
)

3. Agent evaluation

Generate labels, rubric scores, or pass/fail verdicts for eval harnesses — the batch workload that agent frameworks don't ship.

from ondine import PipelineBuilder

result = (
    PipelineBuilder.create()
    .from_csv("agent_traces.csv",
              input_columns=["trace", "criteria"],
              output_columns=["score", "reasoning"])
    .with_prompt("Score this agent trace against the rubric (1-10). "
                 "Return the score and a one-line justification.\n\n"
                 "Trace:\n{trace}\n\nRubric:\n{criteria}")
    .with_llm(provider="openai", model="gpt-4o-mini")
    .with_max_budget(10.00)
    .with_checkpoint_interval(100)
    .build()
    .execute()
)

4. Synthetic data

Generate test fixtures, paraphrases, or contrastive examples at scale, then checkpoint so a crash mid-run doesn't lose the work.

from ondine import enrich

df = enrich(
    "seed_prompts.csv",
    "Write a paraphrase of this prompt in a different tone: {prompt}",
    output_columns=["paraphrase"],
    model="gpt-4o-mini",
    batch_size=50,
    budget=5.00,
)

One abstraction. Any transform.

What you get for free

The plumbing that df.apply() and a hand-rolled loop don't give you — on by default, no config required.

  • Hard budget caps — pre-run cost estimate, live tracking, halts at your USD limit.
  • Checkpointing to Parquet + a durable SQLite response cache, so a crash resumes from the last batch instead of restarting.
  • Adaptive concurrency (Netflix Gradient2): shrinks on 429, grows on saturation, with Retry-After parsing across provider header shapes.
  • Multi-row batching: pack N rows per call. 200 calls instead of 10,000 at batch_size=50, with prefix caching for the shared system prompt.
  • Structured output: Pydantic schema enforcement with auto-retry on malformed JSON.
  • Cost tracking in Decimal precision — no floating-point surprises on the invoice.
  • Any backend — 100+ providers via LiteLLM, plus local inference (Ollama, MLX, vLLM, SGLang). Swap with a string.

Advanced surfaces — Knowledge Base / RAG, OCR, grounding verification (Rust + SQLite + FTS5), the latency Router, distributed Redis rate limiting, Azure Managed Identity, and observability sinks (Langfuse, OpenTelemetry, Prometheus) — are documented at docs.ondine.dev.

Benchmark: Ondine vs naive loop vs agent-per-row

Three ways to classify the sentiment of 100K product reviews with an LLM. Measured on a real API (DeepSeek deepseek-chat) over a 30-row sample per arm, then extrapolated to 100K from the measured per-row rate. Full methodology, raw numbers, and reproducibility commands in benchmarks/RESULTS.md.

Approach API calls (100K) Wall-time (projected) Cost (projected) Rows lost on crash at 60%
Ondine (batched) 6,666 3.8h $0.48 0
Naive loop (1 call/row) 100,000 21.0h $0.74 60,000
Agent-per-row (plan→classify→reflect) 300,000 3.0d $2.46 60,000
  • 15× fewer API calls than the naive loop; 45× fewer than agent-per-row.
  • Crash-safety is binary: a kill -9 at 60% progress loses 100% of the naive/agent arms' completed work (60,000 rows of API spend gone, restart from row 0). Ondine's per-batch SQLite response cache recovered all 100,000 rows on resume with zero re-invocations.
  • On the measured sample, the agent arm was also less accurate (93.3% vs 100%) — three reasoning calls per review added cost without helping a single-label task.

The projection multiplies the measured per-row rate by 100,000. Ondine's real 100K wall-time is likely lower than shown (concurrency scales with batch count); the naive/agent projections are sequential and therefore tight. These are real measurements, not invented claims — rerun them yourself with python benchmarks/repositioning.py.

Local inference

No API keys. No telemetry. Fully offline.

from ondine import QuickPipeline

# Ollama
pipeline = QuickPipeline.create(
    data="reviews.csv",
    prompt="Classify sentiment: {review}",
    output_columns=["sentiment"],
    model="ollama/qwen3.5",
)

# MLX (Apple Silicon, native; no server process)
pipeline = QuickPipeline.create(
    data="reviews.csv",
    prompt="Classify sentiment: {review}",
    output_columns=["sentiment"],
    model="mlx/mlx-community/Llama-4-Scout-Instruct-4bit",
)

Compared to alternatives

Tool What it does Why pick Ondine
Instructor f(prompt) → Pydantic (one call) Ondine applies that pattern to N rows, with budget caps, checkpoints, and adaptive concurrency
Pandas-AI df.chat("question") Different job (query vs. compute)
LangChain batch chain.batch([...]) No budget cap, no grounding, no crash-safe resume, no observability defaults
OpenAI/Anthropic Batch API Provider-specific batch No multi-provider, no grounding, 24-hour turnaround
Airflow/Prefect/Dagster Workflow orchestrators Heavy setup, no LLM-specific features. Ondine ships integrations for them.
Agent frameworks Decide-the-next-action loop Different layer. Ondine is the batch substrate agents push bulk work onto.

Documentation

  • ondine.dev — landing page + examples
  • docs.ondine.dev — full reference: enrich() / Builder API, Context Store internals, grounding, Airflow/Prefect integrations, observability
  • examples/ — runnable scripts covering every major use case
  • CHANGELOG.md — release notes

Contributing

PRs welcome. See CONTRIBUTING.md. Code style: Black + Ruff. Tests required for new features.

License

MIT. See LICENSE.

Acknowledgments

  • LiteLLM — provider routing layer
  • Instructor — the single-call pattern Ondine applies at DataFrame scale
  • The Pydantic team — validation backbone

Who's behind this

Ondine is built and maintained by ptimizeroracle. It's the batch layer of an agentic stack — designed so the LLM work that doesn't need to branch can run as a column function instead of a script.

Metadata

Release files for ondine 2.1.0

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

Source distribution (sdist)

Source distribution for ondine 2.1.0
File Size Uploaded Provenance Actions
ondine-2.1.0.tar.gz 320.9 kB Without provenance Details for ondine-2.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ondine 2.1.0
File Actions
ondine-2.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for ondine-2.1.0-cp313-cp313-win_amd64.whl
ondine-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for ondine-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ondine-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for ondine-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ondine-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.13 CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64, macOS 10.12+ x86-64 Details for ondine-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
ondine-2.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for ondine-2.1.0-cp312-cp312-win_amd64.whl
ondine-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for ondine-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ondine-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for ondine-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ondine-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details for ondine-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
ondine-2.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for ondine-2.1.0-cp311-cp311-win_amd64.whl
ondine-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for ondine-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ondine-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for ondine-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ondine-2.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 Details for ondine-2.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
ondine-2.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for ondine-2.1.0-cp310-cp310-win_amd64.whl
ondine-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for ondine-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ondine-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details for ondine-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ondine-2.1.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details for ondine-2.1.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Total release size: 33.9 MB

Release files / ondine-2.1.0.tar.gz

Download URL ondine-2.1.0.tar.gz
Size 320.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e55a5a102d51004103057401a578225b2b9de5c935bb92daa563a9ff74757e7c
BLAKE2b-256 checksum
How to use checksums
edc829a69217a0a43e9ebc228ef29c9c2f677aac7e2bf81cfea49d2c1f384ecf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp313-cp313-win_amd64.whl

Download URL ondine-2.1.0-cp313-cp313-win_amd64.whl
Size 1.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4f8191abd9986912cac862af9205bd9930335589fc6edbdaee5bf59b5f22e1f9
BLAKE2b-256 checksum
How to use checksums
ee0c6f3e2c0fa93c4cfb38420090bba9e9e0a7688fef0c1f1597de9c34eba566
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ondine-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dc898fff5414cb21353f2eb727caa2c34cbc6889af2e35a423ba79aa7971666b
BLAKE2b-256 checksum
How to use checksums
b51d00cd248ae36328c088c1d26e703b37c4ed6c1631b85bd0bcd1e9856be7bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ondine-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.8 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
bd9f16221a373bfe90f25dd812d18fde444a4ba6fc8eaf34a5329977dcbed1b7
BLAKE2b-256 checksum
How to use checksums
1871f337eece3a3d337c876fb313532f404ea645d0255b45d758b0dda45997b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL ondine-2.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 3.1 MB
Tags CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f199cabedf203e0f1df92257210d14079327ba82a5d132d5e62a123533530b73
BLAKE2b-256 checksum
How to use checksums
268692489aa94506645e0dd3c8390ce7f200a044f1096b3d7f53fa603bede853
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp312-cp312-win_amd64.whl

Download URL ondine-2.1.0-cp312-cp312-win_amd64.whl
Size 1.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9082e55f0a7b4f642e670175f9f27bbae6383f33736875220555da17d4fcd6ac
BLAKE2b-256 checksum
How to use checksums
38aebd1d26ed532a65d254468499c3f668b878a20b99c38aa614de336076763f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ondine-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
44276ffa9825d99c20491bf93e0bfcb9ec0457473de456b3b5e645ee9f79c648
BLAKE2b-256 checksum
How to use checksums
2c8de6536f21549882c55fd07c3e3c00b0f91afa2aae943b6cc5b5914f87f379
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ondine-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.8 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
b737c9cf3bd0bbe79bce6e608cd2191d237f480812bf1257bd05bab52a4c0769
BLAKE2b-256 checksum
How to use checksums
339c72ebfc7a50c75673c49bcc433ed7e8205db75b7884502062b1f7637a3bdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL ondine-2.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 3.1 MB
Tags CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
65444cd89d5d34a98e87e6b00eda53ae8d47e2a830742907eaa218da5bdfc5f1
BLAKE2b-256 checksum
How to use checksums
af7421b1820e7a7412a02d6ad5d1022539a43c3cae92bd2758e33e38e8cdcb1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp311-cp311-win_amd64.whl

Download URL ondine-2.1.0-cp311-cp311-win_amd64.whl
Size 1.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8513d758f5086b31ddcf7692adee1c425c792e2b4caf4e045a512844468ba88d
BLAKE2b-256 checksum
How to use checksums
22eba2b403c3b57cf64998a5cc914c677e30559a7b9b3b8de2ff5ae981062e5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ondine-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7a683a6c636d23a013ba1836a8616eb272412595d0d4b1c6622ef590c231da86
BLAKE2b-256 checksum
How to use checksums
03cfd42a8317adf898d6dbcd266d87fbd9a6968a2afba706d518ba42883cb478
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ondine-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.8 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3cd211dccc87cd40c25318cf30e0d080073faa9816943fd9f0a954efb7776206
BLAKE2b-256 checksum
How to use checksums
c36ed06ba88d25dfe1842a817e90e46b2e32f1118210676e7510a302c536943d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL ondine-2.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 3.1 MB
Tags CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cc1d7fcec53adadc8de8930abc4410e98d063964b107497b7627ecda49fc02ee
BLAKE2b-256 checksum
How to use checksums
0f23cad267657821cbfdddd7d5354b07ad96b725511a3ed2a8cfedae76c87106
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp310-cp310-win_amd64.whl

Download URL ondine-2.1.0-cp310-cp310-win_amd64.whl
Size 1.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
2f357ea29c492062385cc68f16c7401c5a3c3b831d0910f9301b41dd122d15be
BLAKE2b-256 checksum
How to use checksums
d98bd7e96e7ae9f0953f83f30ebe60177e07a89bf08e3c1b7f5d5304860f5e79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ondine-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
702d394c3b88cff0074b0e6ab61203a882093ea22c02bcde4b6a0b5b3530404a
BLAKE2b-256 checksum
How to use checksums
24dc5ba911e11513c2b9e560f9347af2095e3fa5ef8c7f27d81a0d741e145791
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ondine-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.8 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
bb390eb1a357b4201e3f094c7daee21a778c29d55789f49645bc4a1a3e75c4d7
BLAKE2b-256 checksum
How to use checksums
c7c408baa6b1a6658195e4c4a6c3b80af70caf13c29b6b32c8c59309a321ba6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ondine-2.1.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL ondine-2.1.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 3.1 MB
Tags CPython 3.10 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
087c85cf23f7446c833e974a512962f8aac0237ede36a6861e8a4ef709e49985
BLAKE2b-256 checksum
How to use checksums
a141684189b1a430e1b4021b95db946639fcad5c7fad83cbc686e5208f6414fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for ondine 2.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

Release history Release notifications | RSS feed

This release

2.1.0 This release

17 release files No provenance

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