Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

 loom-py

import loom

model = loom.Model.from_pretrained("loom-ai-org/gemma-3-270m-it-loom")
print(model.text2text.chat("Who discovered Brazil?"))
# 'The discovery of Brazil was made by **Hernán Cortés**.'   (one sample: this
# checkpoint declares do_sample, so pass temperature=0.0 for the same answer twice)

Two APIs, and which one you want

The high-level API is one door per task, named for the modality pair it maps between. Every model carries all of them; the ones it does not answer to say so when called, naming what it actually is.

model.text2text.infer("The capital of France is")        # -> str, a raw completion
model.text2text.chat("Who discovered Brazil?")           # -> str, asked inside a turn
model.speech2text.infer(waveform, language="en")         # -> Transcription
model.text2speech.infer("hello world")                   # -> Audio

Which door a model answers is read off the file, not guessed from its name:

model.task            # 'automatic-speech-recognition'
model.capabilities    # ('speech2text',)
model.text2speech.infer("hi")
# UnsupportedTask: this model is speech2text (automatic-speech-recognition), not text2speech.

Each door does the whole job, including the parts you cannot do from outside. speech2text windows audio for a model whose graph is built at one clip length, decodes with the early stop armed, splits the output into timestamped segments and seeks to where the model closed its last segment — so an utterance straddling a window edge is re-decoded whole rather than arriving as two fragments:

r = model.speech2text.infer(audio, language="en", timestamps=True)
r.text                        # the joined transcript
r.segments[0].start, .end     # seconds, whole-file
r.timestamped                 # whether those are boundaries the model chose

text2speech returns audio with its rate attached, because a bare list of floats played at the wrong rate does not fail — it plays at the wrong speed:

audio = model.text2speech.infer("hello world", steps=8, seed=1)
audio.sample_rate             # 22050
audio.save("out.wav")

The low-level API is the driver's own entry point, and stays raw. infer passes your arguments straight through, so which ones a model takes is a property of the model rather than of this package:

model.tokenize("The capital of France is")   # [1, 1098, 5706, 803, 4481, 856]
model.detokenize([1, 1098, 5706])            # '<|startoftext|>The capital'
model.infer(tokens=[16, 40, 22, 30], n_steps=4, seed=1234)   # the driver's own inputs
print(model.driver_source)                   # the Lua that will run, and what it accepts

Use it when you want a knob the high-level door does not name — VITS's noise_scale_w, a specific voice vector, a model's own second entry point. That is the boundary between the two: a knob with no canonical role is reachable through infer and nowhere else.

Text to speech, and the one step that is not in the file

Every TTS model here takes text now, but two of them get there differently. Supertonic encodes graphemes itself. The other four consume phoneme ids — and the symbol table that turns phonemes into their ids ships in the GGUF, so model.tokenizer is a real vocabulary for all of them:

model.tokenizer                      # <loom.Tokenizer 'phonemes' size=159>
model.tokenize("h\u0259\u02c8lo\u028a")             # -> ids, with the model's own BOS/blank/EOS assembly

What is not in the file is grapheme-to-phoneme, because that is a property of the language rather than of any checkpoint. It is an optional extra:

pip install "loom-py-rt[phonemes]"

With it, text2speech.infer("hello world") works on all five. Without it, passing phonemes= or tokens= works exactly as before and only the text door is absent, with an error naming the install. loom.phonemizers.register("ipa", fn) substitutes your own.

Choosing a device

A wheel built with a GPU backend uses it by default; one built without has only a CPU to find, so nothing changes.

model = loom.Model.from_file("qwen3.gguf")                  # decide for me (or $LOOM_DEVICE)
model = loom.Model.from_file("qwen3.gguf", device="cpu")    # pin it
model = loom.Model.from_file("qwen3.gguf", device="gpu")    # demand one; raises if there is none
model.device, model.device_description   # ('Vulkan0', 'AMD Radeon Vega 3 Graphics (RADV RAVEN2)')

"gpu" raises rather than falling back, because a caller who spelled it out is asking a question about the machine and a silent CPU run is how a large slowdown goes unnoticed. "auto" — the default — is the one that falls back.

The base wheel is CPU-only, and an accelerator is a separate install rather than a different wheel:

pip install "loom-py-rt[vulkan]"

That adds one small package holding one libggml-vulkan.so, which this package finds at import; device="auto" then uses it and nothing about the base wheel changes. The reason it works this way — rather than a full wheel per accelerator, which is the more familiar shape — is that a Vulkan backend is 46.5 MB and CUDA is larger, so the per-accelerator matrix does not fit PyPI's 100 MB per-file ceiling. See packaging/README.md.

loom.devices()   # [{'name': 'Vulkan0', 'description': 'AMD Radeon Vega 3 Graphics (RADV RAVEN2)', ...}]

Worth calling after installing one, because a backend whose driver is too old — or which finds no supported device — loads without error and registers nothing, and the only other symptom is a model running at CPU speed. Note that with this build every backend is loaded at run time, the CPU included, so an empty device list means no backend library was found at all rather than no accelerator.

Which ops fall back to the CPU, and why some always will, is documented in loom.cpp's own build notes.

Why there is so little API

A loom GGUF carries its own graph topologies and its own driver script alongside its weights, so this package contains no per-architecture code at all. Loading a model registers whatever topologies the file declares and attaches a KV cache to the ones that say they need it; running one calls the driver the file shipped with. A model this library has never heard of works the day loom-exporter can produce it.

That is also why infer takes **kwargs: its arguments are the driver's arguments, and which ones a model takes is a property of the model. model.driver_source prints the Lua that will run, whose header comment documents its inputs — that is the authority.

model = loom.Model.from_file("granite_speech_mil.gguf")
model.architecture          # 'granite-speech'
model.topologies            # ['encoder', 'embed', 'decoder', 'lm_head']
model.hparam("samples_per_chunk")   # 192000
print(model.driver_source)  # what infer() will run, and what it accepts

Supported models

Seventeen, published at huggingface.co/loom-ai-org and loadable by id with from_pretrained (needs the [hub] extra). This package has no per-architecture code, so the list is a property of loom-exporter, not of anything here.

Language models

Model Exported from
loom-ai-org/qwen3-0.6b-base-loom Qwen/Qwen3-0.6B-Base
loom-ai-org/lfm2-350m-monolithic-loom LiquidAI/LFM2-350M
loom-ai-org/lfm2-350m-modular-loom LiquidAI/LFM2-350M
loom-ai-org/smollm2-360m-instruct-loom HuggingFaceTB/SmolLM2-360M-Instruct
loom-ai-org/gemma-3-270m-it-loom google/gemma-3-270m-it

These are the models text2text answers to; model.generate(...) is the same call under the name it shipped with.

infer and chat are different questions. infer CONTINUES a prompt, which is what a base model does; chat puts the prompt inside a turn using the checkpoint's own chat template and asks for a reply. An instruction-tuned model handed a raw prompt behaves like a base model and continues in the prompt's own format, which reads exactly like it is repeating you back — so use chat for the instruction-tuned rows above, and infer for the base ones. model.chat_roles says which a file is: empty means it carries no template, and Gemma 3's is ['user', 'assistant'] because its template folds a system message into the first user turn rather than emitting a block for it.

Decoding follows the checkpoint's own generation_config.json — Gemma 3 ships top_k 64, top_p 0.95 and is sampled; everything else here is greedy. Name temperature, top_k, top_p or seed to override it.

Speech recognition

Model Exported from
loom-ai-org/whisper-small-loom openai/whisper-small
loom-ai-org/conformer-ctc-small-loom nvidia/stt_en_conformer_ctc_small
loom-ai-org/parakeet-tdt-0.6b-loom nvidia/parakeet-tdt-0.6b-v3
loom-ai-org/parakeet-rnnt-0.6b-loom nvidia/parakeet-rnnt-0.6b
loom-ai-org/gigaam-v3-rnnt-loom ai-sage/GigaAM-v3
loom-ai-org/qwen3-asr-0.6b-loom Qwen/Qwen3-ASR-0.6B
loom-ai-org/granite-speech-4.0-1b-loom ibm-granite/granite-4.0-1b-speech

model.speech2text.infer(waveform, language="en") — the mel frontend is inside the graph, so a raw waveform is the input, and long audio is windowed and seeked for you.

Speech synthesis

Model Exported from
loom-ai-org/kokoro-82m-loom hexgrad/Kokoro-82M
loom-ai-org/matcha-tts-ljspeech-loom Matcha-TTS (LJSpeech checkpoint)
loom-ai-org/supertonic-2-loom Supertone/supertonic-2
loom-ai-org/vits-piper-en-gb-miro-loom OpenVoiceOS/pipertts_en-GB_miro
loom-ai-org/styletts2-ljspeech-loom yl4579/StyleTTS2-LJSpeech

All five take text through model.text2speech.infer(...); the four phoneme-input ones need the [phonemes] extra for the G2P step (see above), and every one of them accepts phonemes= or tokens= without it. Kokoro and Supertonic ship a default voice, so a published file speaks on its own. model.driver_source is the authority on what each driver accepts.

The three repos

loom.cpp the engine, vendored here as a submodule
loom-exporter produces the GGUFs this runs
loom-py this one

Installing

pip install loom-py-rt           # once published -- `loom-py` on PyPI clashes with `loompy`,
                                  # and `loom-engine` normalizes to the already-taken `loomengine`
pip install loom-py-rt[hub]      # + from_pretrained()

Supported platforms

CPython 3.10–3.13, on:

Platform Wheel tag Covers
Linux x86-64, glibc ≥ 2.28 manylinux_2_28_x86_64 anything not already EOL
Linux aarch64, glibc ≥ 2.28 manylinux_2_28_aarch64 Raspberry Pi 4 and 5 on 64-bit Raspberry Pi OS, Jetson/Grace, Graviton, Ampere
macOS on Apple Silicon, ≥ 14.0 macosx_14_0_arm64 M1 through M4, verified on an M1 Pro
macOS on Apple Intel, ≥ 14.0 macosx_14_0_x86_64 built and imported in CI — see below

There is no per-CPU choice to make. The wheel ships every libggml-cpu-*.so variant ggml builds for the architecture and picks one at import by scoring each against the CPU's own feature flags, so the same file serves the oldest and newest machine on its architecture. loom.devices() is how you check it worked.

Why macOS 14 and not 11. It is not an arbitrary floor and it is not the newest thing that happened to build. ggml's BLAS backend is compiled against Accelerate's new BLAS interface, whose symbols arrive in macOS 13.3 — and that backend is worth 1.80x on whisper-small, so dropping it was the worse trade. An 11.0-tagged wheel would install on macOS 11 or 12 and then quietly have no BLAS, because a backend that fails to dlopen is skipped silently. The floor is the honest version of what the binaries already require — 14 rather than 13.3 only because a wheel tag carries no minor version above macOS 11, so 13.3 is not a thing a wheel can say.

Apple Silicon and Apple Intel are not equally supported, and the table means two different things by "covers". The arm64 wheel is built, installed and exercised on a real M1 Pro — the apple_m1 rung, which is the lowest of ggml's three Apple rungs and so the one every arm64 wheel has to serve. Apple Intel is CI-only: it is built and imported by a runner and nobody here owns the hardware, so treat it as best-effort rather than as parity.

Metal is a separate package, not part of the macOS wheelpip install "loom-py-rt[metal]". It is only 0.87 MB, so that split is not about size: a GPU outranks the CPU when you let the library choose a device, and on unified memory that is 2.69x faster for some models and several times slower for others. Asking for it is how you opt into that trade. loom.devices() shows what you got.

Raspberry Pi. A 64-bit OS is the requirement, and the only one: uname -m must say aarch64. On 32-bit Raspberry Pi OS pip reports armv7l, matches no wheel, and falls back to building the sdist, which does not work — the build enables GGML_CPU_ALL_VARIANTS, whose Linux-ARM variant list is AArch64-only. 32-bit is not a slower configuration here, it is an unsupported one.

Which variant a board loads, verified under QEMU on every release by raspberry-pi-check in .github/workflows/wheels.yml:

Board Core Loads Because
Pi 4 / 400 / CM4 Cortex-A72, ARMv8.0-A armv8.0_1 no dotprod, no FP16 arithmetic, no SVE — the other seven variants score 0
Pi 5 / CM5 Cortex-A76, ARMv8.2-A armv8.2_2 dotprod + FP16, no SVE

Nothing extra is installed on a Pi: the CPU is the backend. [vulkan] does resolve on aarch64 and a Pi 5's V3D exposes Vulkan through Mesa, but no measurement here says that is worth doing — the CPU path is the supported one.

Windows has no wheels, and a source install does not currently work there. macOS does: both Apple architectures build from a checkout as well as from a wheel — see Supported platforms above. (Epic-08)

From a checkout — note --recursive, since the engine is a submodule:

git clone --recursive https://github.com/loom-ai-org/loom-py
cd loom-py && pip install -e .

No runtime dependencies. Arrays cross the boundary as plain sequences of floats, so numpy is something you may use rather than something this package makes you install — list, array.array, numpy arrays and torch tensors all work.

Testing

pytest tests/ci      # the Python layer: coercion and error paths. No model. What CI runs.
pytest tests/gate    # a real exported GGUF, end to end.
export LOOM_TEST_MODEL=~/loom-fixtures/matcha_mil.gguf
export LOOM_TEST_MODEL_INPUTS='{"tokens":[16,40,22,30,12,3],"n_steps":4,"seed":1234}'
pytest tests/gate -q

The gate suite is written against no particular architecture on purpose: it asserts the shape of what a loom model is, which is the whole of what this package knows. A test that expected one model's inputs would be this package learning about a model, which is the thing the design exists to avoid.

Roadmap

Shared with loom.cpp, because three of the four are the engine's and this package inherits them by having no per-architecture code of its own.

1. GPUs and NPUs — the packaging is built; the backends beyond Vulkan are what remain. The engine schedules a graph across a device backend and a CPU fallback, this package exposes the choice as device= (above), and the wheel shape that lets an accelerator ship at all now exists.

The shape that is NOT wanted is a wheel per accelerator per architecture — PyPI's wheel tags have no accelerator dimension, so that is torch's cu121 arrangement, and it multiplies every future backend by every existing platform. GGML_BACKEND_DL makes the better shape possible and this package is now built that way: one arch-tagged base wheel, plus small backend packages that drop a .so where ggml looks for it, so pip install "loom-py-rt[cuda]" means "also fetch that backend", device="auto" finds it, and a Raspberry Pi installs nothing extra. packaging/rt-vulkan/ is the worked example; a CUDA package is that directory with two strings changed, waiting only on a machine with an NVIDIA GPU to build and test against. Tracked in Epic-04, along with which backends are reachable at all (CUDA, OpenVINO and Qualcomm's are already in the pinned ggml; CoreML and RKNPU2 are not).

2. Wheels for more platforms. Linux x86-64 and aarch64 and both Apple architectures today — see Supported platforms above, which is what pip install loom-py-rt resolves to. Windows is what remains, and it is behind the same kind of work macOS needed: not a missing CI row, but a symbol-visibility rule, a linker-path spelling and a build-system assumption that each differ (Epic-08, Retro-024).

3. More models — Epic-03, ordered by coverage per unit of effort: BERT token classifiers (the smallest possible template, and the first non-audio task) → codec decoders → CNN+CTC and SANM encoders → the remaining TTS families → text encoder-decoders → small classifiers → music. Each lands here for free: a model this package has never heard of works the day the exporter can produce it.

4. The follow-ups the docs already namedocs/backlog/active-index.md is the ledger for all three repos and the authority. The ones that would show up in this API: a permissively-licensed phonemiser, which is what would give the four phoneme-input TTS models a tokenize; and the KvCache memory redesign and quantized KV cache, which decide how large a model this can run on a given machine.

Licence

MIT — see LICENSE.

Download files

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

Source Distribution

loom_py_rt-1.0.0rc7.tar.gz (2.3 MB view details)

Uploaded Source

Built Distributions

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

loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.13macOS 14.0+ x86-64

loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.12macOS 14.0+ x86-64

loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.11macOS 14.0+ x86-64

loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_x86_64.whl (8.6 MB view details)

Uploaded CPython 3.10macOS 14.0+ x86-64

loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file loom_py_rt-1.0.0rc7.tar.gz.

File metadata

  • Download URL: loom_py_rt-1.0.0rc7.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for loom_py_rt-1.0.0rc7.tar.gz
Algorithm Hash digest
SHA256 967c73d272579c102a2cd08a9d3b62a0387e5ca0c01a6b7c303a977a376ed1ed
MD5 ec6a2053feff3a7cf63308c163e26aeb
BLAKE2b-256 cc8d77b3bbc8a665a8835e512755062bd8f1a25e2d4641bc821c891123e22d99

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7.tar.gz:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4af17b93cd2fd44de82f0b3bc83f604925caaf52009d5feef034384ad715c92c
MD5 d9a562611425e74e5f05d4291110cbfa
BLAKE2b-256 6fe2d0f3f36664d8131deb0a0d6a9e6daa98dce6a4374ec63c41bcb9d7929f54

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9da5b75f032a43c0f79052a5c8f40ad3ee05861225ef54a16ca8e4df83b6b273
MD5 48595348485830f837307f18e97e07bf
BLAKE2b-256 a8a988576dd90ccaf5789ecc7d0eb935c44645ba0f0c8337fbbc775d69de900f

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 ef39020dc98d642135bcfe9dcb023c65e6328dc2819d29626d9807185c88a851
MD5 2612a0f4301c2ac790975cb75030d757
BLAKE2b-256 9831bd779883093fd29cb32b93a94eb9356bc1b2640ad1dff719129ae5ae8cd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a3cc732346cf3820a0ff3602d1eef3e87a4d027837034b44b659860abc3f64e7
MD5 c053d64227b2154bf58b2dfecb748917
BLAKE2b-256 3a35eb388d6cadd2eccdf6eadd4cef85e2ba9279132c64c80048b087a8cb12fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e217028ff1840ecfc66be67ae70d25a7b775f18bef27f5088dbb530b7c68fb64
MD5 24fa6c63256c83d4d6bcdad2238a8bda
BLAKE2b-256 2ad4b74123046c3a96032ca9e1ebf1064d531b9679f5711ea82c17ff4003e96f

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2357465fa13345542a50fab9a52f4bb9632d36260034f3813956121156f50047
MD5 09657a2c0816e5e3e30f01af9f25eb05
BLAKE2b-256 02d14d575ab76e430122a717fe7a03534e6304af2e82283570505ff7d9d715b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 9c6b2cd71146b08082e6182c0c436e17c06c95c49354a9e7208435b2fef723d3
MD5 708fd2c52ee2a8b20c24664c5dbbab1c
BLAKE2b-256 2c1c38b57e57e6d87c5fee5ed8c66e7f3a56678c6894391e004f2ac2dbfbd7a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7904a4c882725b1243f80ee28fc62e85c915068aa1a61935ba0473acd3bea546
MD5 4a3cc73154f7be695e565b3b548d7c6c
BLAKE2b-256 65978093730fe2f48f00404be3ffe8053bf48ffa9de9bdef15a73a0c835b53be

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a2106b535fbbf5676e417ef4ce1a3132b93b01ec8ec3e8f33b7c83d909997ca
MD5 1cadb2aedba75baab828c392e086b336
BLAKE2b-256 9ea8b458095a6030b82fd77ec342725095d07482b71517d822501f253c6f5132

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0a23dcc2ab248aa68ce1271b7a037452edcf765db8107a71cbb28199c84e5949
MD5 d224e1f012034239b86d46b1cae0be60
BLAKE2b-256 a195aea14dddeed45de2b7d2e99ea588ce6572f7ab5ea68478ee65d7befe8ccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 a73f5aee4ee4da4130464c31df6da71454750b495d10fd02633b2aefb69861b6
MD5 2ecf7e62559b4864cd50d9388d149a7a
BLAKE2b-256 da769a26352258a51c17c89466cf602c816551ad8daf98a654a9964014f196d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5e05f47ce4f11a119d81c31921a4dab36efb3a65fa84fa29980239f564ca6d96
MD5 47017cf127af295c1a33f80f2d6d9008
BLAKE2b-256 95b08d9c9efde975c60bd51629c28859a06b7f5e78e3fe85994be7f0344d7b68

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09d205a09fb380d2f1aee23810dee5688ac32f03467a4b2f4d0cf3fd6052573e
MD5 891ec1e48b0665b66e9dc7fe6e87dac0
BLAKE2b-256 b127d905595507c2d51ae4706edab76ef853cb645752ef973adc541766b30e95

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a756a61be885a0aced1bb1e36dde58bfdadfcf5b0486507c32e262e3a1f95f94
MD5 f623015d95a30c812ddaf0ed2c914b33
BLAKE2b-256 1b67add41f7d468b1a6259aae3a8904e8fb95b5949578df29a1a8cca46af2e04

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 c8dee2c7324e35256f67a253e2e21237837328c683a44051975b4a04d9befce3
MD5 e35458c9eac333d0513785c51765661c
BLAKE2b-256 edb85f5b30cf5a943f30ee01bdfbf8d4fce77819ad4306e0e51312cb44e14fc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_x86_64.whl:

Publisher: wheels.yml on loom-ai-org/loom-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 loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a2c182b5d460a4deee135a7fb183c5f45ac8d0987331fcb9c829ddb8156c0dde
MD5 053227436ab4a1e078e1477fbfefa0ac
BLAKE2b-256 2d5cbf8c5e6de98896dfcd9543c9cc31cc318dde513bbbb66a2408f21ef0e5e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for loom_py_rt-1.0.0rc7-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: wheels.yml on loom-ai-org/loom-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.
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