Skip to main content

Cron-friendly batch LLM processing for Polars.

Project description

llm-batch-py

llm-batch-py is a cron-friendly batch LLM runner for Polars.

Install with pip install llm-batch-py.

It lets you:

  • define structured-output or embedding jobs against a Polars DataFrame or LazyFrame
  • build prompts with Rust-backed row templates, with Python UDFs available as fallback
  • auto-poll prior batches, auto-submit only missing rows, and materialize a fresh Polars result table
  • process large inputs incrementally with Runner.run_stream(...) from a DataFrame, LazyFrame, or host-supplied Iterable[DataFrame]
  • persist manifests and raw artifacts in local or S3-backed parquet storage

Reruns are grouped implicitly by job.name inside one shared result_cache.root_uri. If you run the same job again against the same cache store, llm-batch-py reuses completed results, skips duplicate submission for still-active prior work, and only submits rows whose effective request identity changed or whose retries are still allowed.

llm-batch-py is cron-friendly, but it does not schedule itself. Your scheduler invokes Runner.run(), and each rerun acquires a short-lived job lock, polls prior batches, reuses completed results, keeps matching in-flight rows pending, and submits only new or changed rows. Changing BatchConfig.batch_size affects only future submissions; it does not invalidate result-cache hits for completed rows.

Provider batch submission is sequential. When one run needs multiple small provider batches, llm-batch-py submits them one by one rather than firing all submits concurrently.

If a small batch submit fails transiently before the provider accepts it, llm-batch-py does a short inline retry loop in the same run(). If the submit still fails, the batch stays recoverable in the result cache and later reruns retry that same small batch before submitting any later chunks. BatchConfig.max_retries applies per retryable small-batch submit and per retryable row-level provider failure.

LazyFrame support does not make Runner.run() fully streaming by itself. Runner.run() still materializes the full job input before validation and request building. Use Runner.run_stream(...) when you want chunked execution over a DataFrame, LazyFrame, or host-supplied Iterable[DataFrame].

Quickstart

import polars as pl
from pydantic import BaseModel

from llm_batch_py import (
    BatchConfig,
    LockConfig,
    OpenAIConfig,
    PromptCacheConfig,
    ResultCacheStoreConfig,
    Runner,
    StructuredOutputJob,
    structured_template,
)


class CompanyLabel(BaseModel):
    label: str


build_prompt = structured_template(
    system="Return JSON only.",
    messages="Label this company: {{ row.company_name }}",
    name="build_prompt",
    version="v1",
)


job = StructuredOutputJob(
    name="company_labels",
    key_cols=["id"],
    input_df=pl.DataFrame({"id": [1], "company_name": ["OpenAI"]}),
    prompt_builder=build_prompt,
    output_model=CompanyLabel,
    provider=OpenAIConfig(model="gpt-4o-mini"),
    result_cache=ResultCacheStoreConfig(root_uri="./.llm_batch_py"),
    prompt_cache=PromptCacheConfig(mode="auto"),
    lock=LockConfig(ttl_seconds=3600),
    batch=BatchConfig(batch_size=500),
)

runner = Runner()
result_df = runner.run(job)
print(result_df)
print(runner.last_summary)

slim_df = runner.run(job, metadata_columns=["llm_batch_py_status"])
print(slim_df)

Streaming Large Inputs

import polars as pl

lazy_input = (
    pl.scan_parquet("./companies.parquet")
    .select(["id", "company_name"])
)

runner = Runner()
for chunk_df in runner.run_stream(
    job=job.__class__(**{**job.__dict__, "input_df": lazy_input}),
    input_batch_rows=10_000,
):
    print(chunk_df.select(["id", "llm_batch_py_status"]))

print(runner.last_stream_summary)

run_stream() yields one result DataFrame per input chunk. Each chunk uses the same result-cache, polling, retry, and lock semantics as a normal short-lived run().

If your host already pages from Postgres or another source, you can also push batches directly:

def pg_batches() -> list[pl.DataFrame]:
    return [
        pl.DataFrame({"id": [1], "company_name": ["OpenAI"]}),
        pl.DataFrame({"id": [2], "company_name": ["Anthropic"]}),
    ]


for chunk_df in runner.run_stream(job=job, input_batches=pg_batches()):
    print(chunk_df.select(["id", "llm_batch_py_status"]))

For private S3-backed result caches, pass filesystem options through ResultCacheStoreConfig:

result_cache = ResultCacheStoreConfig(
    root_uri="s3://my-bucket/llm_batch_py-prod",
    storage_options={
        "profile": "my-profile",
        "client_kwargs": {"region_name": "us-west-2"},
    },
)

For a private AWS S3 bucket, the cache store can authenticate with any normal s3fs credential path:

  • AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • optional AWS_SESSION_TOKEN
  • AWS_PROFILE
  • an attached IAM role

If you want explicit credentials in code:

result_cache = ResultCacheStoreConfig(
    root_uri="s3://my-bucket/llm_batch_py-prod",
    storage_options={
        "key": "AWS_ACCESS_KEY_ID",
        "secret": "AWS_SECRET_ACCESS_KEY",
        "token": "AWS_SESSION_TOKEN",
        "client_kwargs": {"region_name": "us-west-2"},
    },
)

The cache principal needs list, read, write, and delete access under the configured prefix because llm-batch-py lists manifests, reads and writes artifacts, and creates and removes lock files there.

If you point storage_options at a custom S3-compatible endpoint_url, llm-batch-py now rejects job locking by default because the lock protocol depends on AWS S3 exclusive-create semantics. Only bypass that with LockConfig(allow_unsafe_s3_compatible_locks=True) if you already serialize runners externally and accept possible cache corruption risk.

structured_template(...) and embedding_template(...) are the primary prompt-building APIs. They render {{ row.field }} placeholders through the Rust template engine for lower per-row overhead.

prompt_udf(...) remains supported as a compatibility fallback when templating is not expressive enough. A prompt_udf should return structured Python data such as dicts, lists, Pydantic models, and datetime-like values. llm-batch-py canonically serializes the rendered payload before computing result-cache keys, so dict insertion order does not affect cache hits.

Returned result frames include llm_batch_py_* metadata columns for provider status, token counts, and raw request/response inspection fields such as llm_batch_py_input_raw_json, llm_batch_py_request_raw_json, llm_batch_py_output_raw_json, and llm_batch_py_output_raw_text.

If you do not need the full metadata surface on the returned frame, pass metadata_columns=[...] to Runner.run() or Runner.run_stream() to join back only the requested llm_batch_py_* columns. Pass metadata_columns=[] to suppress metadata columns entirely.

Docs

Customizing provider prompt cache

from llm_batch_py import PromptCacheConfig

PromptCacheConfig(
    mode="auto",
    verbose=False,
)
  • mode: Literal["off", "auto"] = "auto"
  • verbose: bool = False

OpenAIConfig

from llm_batch_py import OpenAIConfig

OpenAIConfig(
    model="gpt-4o-mini",
    api_key=None,
    max_output_tokens=None,
    temperature=None,
    timeout=60.0,
    organization=None,
    base_url=None,
    dimensions=None,
    pricing=None,
)
  • model: str
  • api_key: str | None = None
  • max_output_tokens: int | None = None
  • temperature: float | None = None
  • timeout: float | None = 60.0
  • organization: str | None = None
  • base_url: str | None = None
  • dimensions: int | None = None
  • pricing: ModelPricing | None = None
  • provider_name: Literal["openai"] = "openai"

OpenAIConfig is used for:

  • structured-output jobs
  • embedding jobs

AnthropicConfig

from llm_batch_py import AnthropicConfig

AnthropicConfig(
    model="claude-3-5-haiku-latest",
    api_key=None,
    max_output_tokens=1024,
    temperature=None,
    timeout=60.0,
    pricing=None,
)
  • model: str
  • api_key: str | None = None
  • max_output_tokens: int = 1024
  • temperature: float | None = None
  • timeout: float | None = 60.0
  • pricing: ModelPricing | None = None
  • provider_name: Literal["anthropic"] = "anthropic"

AnthropicConfig is used for structured-output jobs only.

Customizing result cache store config

result_cache=ResultCacheStoreConfig(...) controls the persistent result cache catalog used to reuse prior results. It is separate from the result_df returned by runner.run(job).

Completed results are stored in the result cache catalog and reused on later runs until you delete or replace that catalog. There is no result TTL or automatic result-cache eviction in llm-batch-py today.

from llm_batch_py import ResultCacheStoreConfig

result_cache = ResultCacheStoreConfig(
    root_uri="s3://my-bucket/llm_batch_py-prod",
)
  • root_uri: base location for manifests, raw artifacts, and reusable cached results. This can be a local path like "./.llm_batch_py" or any fsspec URI such as s3://....
  • storage_options: optional fsspec / s3fs filesystem options such as profile, key, secret, token, client_kwargs.region_name, or client_kwargs.endpoint_url.

For private S3-backed cache stores, see the S3 cache storage guide.

Default result cache key

Each request gets a content-addressed cache key for result reuse. llm-batch-py hashes the request payload together with the job/provider context, using SHA-256 over a canonical JSON representation.

By default the cache key includes:

  • the rendered request payload from your prompt_builder or text_builder
  • job.name
  • prompt_builder.version or text_builder.version
  • provider name and model
  • endpoint kind (structured or embeddings)
  • structured-output schema, when applicable
  • provider options that affect outputs: temperature, max_output_tokens, dimensions, base_url, and organization
  • shared prompt-cache config, when set on a structured-output job

Notably, row IDs and key_cols are not part of the result cache key. If two rows in the same job render the same payload under the same config, they will hit the same cached result.

Cache key customization

There is no explicit cache_key_fn or cache-key override API today.

The supported ways to change cache identity are:

  • change job.name to create a separate cache namespace
  • bump the prompt builder version when prompt semantics change
  • change the rendered payload or provider/model settings
  • point root_uri at a different result cache store if you want fully isolated cached results

Customizing lock config

lock=LockConfig(...) controls how llm-batch-py recovers from abandoned job locks.

from llm_batch_py import LockConfig

lock = LockConfig(ttl_seconds=6 * 60 * 60)
  • ttl_seconds: if a previous run left a lock behind and it is older than this TTL, a new run can reclaim it. Default: 3600.
  • allow_unsafe_s3_compatible_locks: bypasses the safeguard that rejects custom S3-compatible endpoint_url lock backends. Default: False.

allow_unsafe_s3_compatible_locks=True does not make S3-compatible locking safe. It only suppresses the fail-fast guard for users who already serialize runners externally.

If you mean provider prompt caching rather than the llm-batch-py result cache store, configure that on the job:

from llm_batch_py import PromptCacheConfig

job = StructuredOutputJob(
    ...,
    prompt_cache=PromptCacheConfig(mode="auto"),
)

PromptCacheConfig(...) controls shared provider-side prompt caching behavior.

  • mode="off" disables provider prompt caching.
  • mode="auto" uses provider-managed prompt caching.
  • verbose=True logs one INFO estimated-analysis diagnostic per distinct prompt shape showing the likely cacheable prefix candidate and likely trailing dynamic content candidate.
  • llm-batch-py does not expose provider-specific prompt-cache options; it only enables shared automatic caching behavior.

Customizing batch config

batch=BatchConfig(...) controls how pending rows are grouped into provider batch submissions.

from llm_batch_py import BatchConfig

batch = BatchConfig(
    batch_size=500,
    max_retries=3,
)
  • batch_size: hard cap on requests per submitted batch. If unset, llm-batch-py uses the provider's built-in batch request limit.
  • max_retries: maximum retries for retryable failed rows before they are held as failed. Default: 2.

Provider payload byte caps and batch completion windows are derived internally from the selected provider adapter rather than configured in BatchConfig.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_batch_py-0.1.3.tar.gz (193.6 kB view details)

Uploaded Source

Built Distributions

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

llm_batch_py-0.1.3-cp313-cp313-win_amd64.whl (226.1 kB view details)

Uploaded CPython 3.13Windows x86-64

llm_batch_py-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (369.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

llm_batch_py-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (327.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

llm_batch_py-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl (337.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

llm_batch_py-0.1.3-cp312-cp312-win_amd64.whl (226.5 kB view details)

Uploaded CPython 3.12Windows x86-64

llm_batch_py-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (370.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

llm_batch_py-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (328.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

llm_batch_py-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl (338.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

llm_batch_py-0.1.3-cp311-cp311-win_amd64.whl (226.5 kB view details)

Uploaded CPython 3.11Windows x86-64

llm_batch_py-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (370.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

llm_batch_py-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (332.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

llm_batch_py-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl (341.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

llm_batch_py-0.1.3-cp310-cp310-win_amd64.whl (226.2 kB view details)

Uploaded CPython 3.10Windows x86-64

llm_batch_py-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (370.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

llm_batch_py-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (332.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

llm_batch_py-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl (341.0 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file llm_batch_py-0.1.3.tar.gz.

File metadata

  • Download URL: llm_batch_py-0.1.3.tar.gz
  • Upload date:
  • Size: 193.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for llm_batch_py-0.1.3.tar.gz
Algorithm Hash digest
SHA256 62ca3eafd157b3617172a4142b8285729fa355f5bdcb603861e1576720d6c960
MD5 3961f2a26296f10af3f2811196c61329
BLAKE2b-256 8188d91473e543a3c6dbf1b9e9a4dc9c4d42d2425e5c0fa83c5d6c53c3d0983b

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3.tar.gz:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5e36891f88a271ef396895ab2c1911a36ecec86ce50d018cad634004b774a6e8
MD5 d508e974a11649cccdf6ea1429db3759
BLAKE2b-256 65554e6c813701270bdbeb1df4794b93d9eef10310c6665c724754d33ca14d7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d7d827358cf760d5101ecfa47a7b79f1e5051a79a7b888d97e09cb6fd20e5aa
MD5 5185836292eba009fecb892714291086
BLAKE2b-256 34002332c7ffcfe17530b545aad1167bdf0971e7a579270c1c683efab329c088

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e243dae6ef9a0fe8bdc7292d5c04364356eace722101cf9865459ed163f6518
MD5 8d9c8b679b5324112f1fe07e13091d85
BLAKE2b-256 ce8b807827b13e0a9012ad8f8bc170c15449f059ff17b4c3866a0a410730078e

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0f959fb16f35a9b0cb2ff02d8ed3ffd987f526421355924740840d4cf8e28f88
MD5 226a0e70c72528c5a081700e74b97def
BLAKE2b-256 e34d67587542fa840da3a178037075fc654f32b94327046ffd394705bce3a3a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b9432866a4f3b3f34d768318318e6a77bc1b961113633567490ad1501cd526a6
MD5 eca7cb94996407d06ff9d3972a1b75d5
BLAKE2b-256 2167ed16d25253be82931fade9cffd96efd8a846f94e1bfc7d2e755f37673d41

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e4c83fd8b3df826968e1bac1fafc3c81773bb272831309d2a988b5112ef9b92
MD5 1cca9948f6f15f55f5ef89ae39a1dcf6
BLAKE2b-256 9d254222eacd041f7c667db6c1a6b227bb17d688ccb7ef2fe84d94b7c3549444

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0df815a3d7512d5bae6d46805d70f2b71cf1cad08f0681e842a289cf6d64c9f4
MD5 aa2f5ba98beee056c59427aa876d0c3a
BLAKE2b-256 239c10f855fb8873a8d3beed03c7a9882a94ee8bfd4ba4449aa4b803da87df1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3ca00bb1e5f60687bba800bc4398eb304ead3c9af3248f4afdbc2033f13b6f0b
MD5 a3ea4d9d7e0e8e0c45b4d506367e5017
BLAKE2b-256 60533b5c7a668c5a5b2c04ce56e5d3cdcf705e0b4694371745f6e119246f3ad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9bf243627d2db0b7e2eb8620569748050866ab0fb7c70ead9a13031a7fc496a9
MD5 c4cb25c662bfc4281216a7aee6586760
BLAKE2b-256 aad44efa5d341d1626adbcec4e074630ed29dc8e0e9ef39650bbae3c49599b37

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3ba5bdbd21389c8eba8cb81603d399091421a5986acf5e77843b4a1e34653c3
MD5 e68dd663023aceb4ce4700e89bd6c7b3
BLAKE2b-256 977597141bbf1457dacef73d96beff795c56b46538ece6f6af444a084f931c4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef00940f7aa08f100cb731b46b724068534fcc49f2fe5877f847a643eb8a6898
MD5 3a7713da4ca375ac9215b8eb6da81c76
BLAKE2b-256 46ca71be795982776064014e0e758b88217d16a34b7985a9775ef8e0ec4d141b

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 174fc28b62ff26521b17164f66c27e0910fcf4b771eeb6d620a1d1672b827eaf
MD5 499b46daef1faf12a8c9168742a42b51
BLAKE2b-256 a90e98c9f8584771cc2b1273957a056836b0acfa3e3624071b5e737e1c12be1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 de89be17a34e1df339830e603e79d0be04abc75a43eb1b510041b9fe66246c49
MD5 ded32436c19bd9a71b27d0ac36c2ae1a
BLAKE2b-256 661f304b6b65e704a722a0d37f2c30c9e59aef677b826747b057c02cbfea3a97

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e45ebede9b83660f5618344ab79bcacd09d7a0ea56e0c2e1bace5826cb6effb8
MD5 dccbe0b41acccfeb53abad5f22ca4d59
BLAKE2b-256 eba7754a467220b3bf247ffe67f26deaa98ea9a745b6bc7c8c7650948b9ff2f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21c4b96e158cae412d639307cbeb5c3adcd842a573c1c37e0c5e8b354c080cbb
MD5 c8549287eef08d7b776829c077e3ba33
BLAKE2b-256 dfe945151e7c0c3bbab05c647b8cf8ef5b209701e5b91c764a750632d1ad3741

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file llm_batch_py-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for llm_batch_py-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f01fb68121a9fc30a0932e76a064f4ab350dea2e5633ff94f79e10bef2c2d12
MD5 f47ce86cb710d6c6b2d1ef6d38070357
BLAKE2b-256 380f3154194d059e949cd81ad2ad58faf20432881e9e5a9737fef5f6d38a54bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for llm_batch_py-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on zhjch05/llm-batch-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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