Skip to main content

dataloader-rs for Python

A DataLoader for Python with the torch.utils.data.DataLoader interface and a Rust core. Workers are threads, not processes: samples are handed over by reference instead of being pickled, an epoch starts in milliseconds, and against PyTorch it is 4.9–6.6× faster on the loader's own overhead, 3.2–3.9× on network-bound datasets and 2.5–3.5× on array samples with free-threaded Python — with no PyTorch dependency.

  • PyTorch's arguments: batch_size, shuffle, sampler, num_workers, collate_fn, drop_last, plus seed for reproducible shuffling, prefetch_depth, and items_in_parallel to fetch the items of a batch concurrently.
  • Any batch type: lists by default, NumPy arrays or tensors from your collate_fn.
  • Batched fetching: __getitems__(indices) is used when your dataset defines it.
  • Exceptions keep their type: a KeyError in __getitem__ reaches you as a KeyError.
  • Free-threaded Python: on CPython 3.14t and 3.15t, worker threads run Python code in parallel. Wheels for the GIL builds (3.13 to 3.15) too: there, threads help work that releases the GIL (see below).

When PyTorch is faster. The workers are threads in one process, not processes. On regular CPython (the GIL build, such as 3.13), only one thread runs Python code at a time: a __getitem__ that spends its time in pure Python (tokenising text, parsing records, Python loops) gets no faster with more workers, while PyTorch's worker processes each run their own interpreter and are 2.4–2.6× faster on such datasets. Threads win when the work releases the GIL (file and network I/O, NumPy, image decoding), and on free-threaded CPython 3.14t / 3.15t. Even there, threads that all read one shared Python dict or list contend on its reference count, and PyTorch is 2.5–2.9× faster: give each thread its own copy (threading.local, see Workers, threads and the GIL).

Requires Python ≥ 3.13.

Contents

Installation

pip install dataloader-rs
Wheels Platforms
CPython 3.13, 3.14, 3.15 and free-threaded 3.14t, 3.15t Linux x86_64 (x86-64-v3 CPU: AVX2, Intel 2013+ / AMD 2017+) and arm64 (glibc ≥ 2.28), macOS arm64 (11.0+)

Other interpreters and platforms build from the source distribution, which needs a Rust toolchain; from a checkout: pip install maturin && maturin develop --release --features python.

Quick start

import numpy as np
from dataloader_rs import PyDataloader, PyDataset


class Images(PyDataset):
    def __init__(self, paths: list[str]) -> None:
        super().__init__()
        self.paths = paths

    def __len__(self) -> int:
        return len(self.paths)

    def __getitem__(self, index: int) -> np.ndarray:
        return np.load(self.paths[index])


loader = PyDataloader(
    Images(paths),
    batch_size=32,
    shuffle=True,
    seed=0,  # reproducible order, a new permutation every epoch
    num_workers=4,  # 4 worker threads
    prefetch_depth=4,  # load up to 4 batches ahead of the 4 in progress
    collate_fn=np.stack,  # one (32, ...) array per batch
    drop_last=True,
)

for epoch in range(10):
    for batch in loader:  # iterating again starts a new epoch
        ...

Datasets

Subclass PyDataset and implement __len__ and __getitem__(index). Call super().__init__() if you define __init__.

Optionally implement __getitems__(indices) — PyTorch's batched-fetch protocol — to fetch a whole batch in one call: one database query, one NumPy fancy-indexing, one Python call instead of batch_size. It receives a list[int] and must return one sample per index, in order (any iterable); a wrong count raises ValueError. Setting __getitems__ = None in a subclass turns it off, as in PyTorch.

class Rows(PyDataset):
    def __init__(self, table: np.ndarray) -> None:
        super().__init__()
        self.table = table

    def __len__(self) -> int:
        return len(self.table)

    def __getitem__(self, index: int) -> np.ndarray:
        return self.table[index]

    def __getitems__(self, indices: list[int]) -> list[np.ndarray]:
        return list(self.table[indices])  # one vectorised read per batch

With num_workers > 0, __getitem__ / __getitems__ run on several threads at once: keep the dataset read-only, or protect shared state with a lock.

PyDataloader arguments

Argument Default Meaning
dataset — a PyDataset
batch_size 1 samples per batch (> 0)
shuffle False a new random order every epoch; exclusive with sampler
seed None seed for shuffle=True (requires it): same seed, same sequence of epoch orders
sampler None any iterable of int indices, iterated at the start of each epoch
num_workers 0 batches loaded in parallel; 0 loads each batch in the calling thread
prefetch_depth 2 how far ahead workers may load: at most num_workers + prefetch_depth batches in progress or waiting (with num_workers > 0, > 0)
collate_fn None list[sample] -> batch; without it a batch is a list
drop_last False drop a final batch smaller than batch_size
items_in_parallel 1 items of one batch fetched in parallel, one __getitem__ call each (see I/O-bound datasets)

len(loader) is the number of batches per epoch; len(iterator) the number left in the current one.

Batches and collate_fn

Without collate_fn a batch is the list of its samples. collate_fn receives that list and returns anything: np.stack, torch.stack, a dict of arrays. It runs on the worker thread that loaded the batch (or the calling thread with num_workers=0), so heavy collation is parallel too.

Samplers

  • shuffle=True: a Rust permutation, new every epoch; with seed= two loaders produce the same sequence of orders.
  • sampler=: any finite iterable of indices — a list, a generator-producing object, a weighted sampler. It is read whole at the start of each epoch (iter(loader)), so an endless sampler (itertools.cycle, the infinite samplers of iteration-based training) never starts one: give each epoch a finite sampler instead (Ctrl-C stops one that never ends). len(loader) uses len(sampler), so a sampler without __len__ makes len(loader) raise TypeError, as in PyTorch; iteration still works.
import random


class Weighted:
    def __init__(self, weights: list[float]) -> None:
        self.weights = weights

    def __len__(self) -> int:
        return len(self.weights)

    def __iter__(self):
        population = range(len(self.weights))
        yield from random.choices(population, weights=self.weights, k=len(self.weights))


loader = PyDataloader(dataset, batch_size=8, sampler=Weighted(weights))

Workers, threads and the GIL

num_workers > 0 loads that many batches in parallel on a thread pool of num_workers × items_in_parallel threads, created once and reused by every epoch; they load batches ahead while your loop runs and the loader returns them in order.

  • Regular CPython: the threads share the GIL. Work that releases it — file reads, NumPy, image decoding, hashing, most C extensions — runs in parallel; pure-Python code in __getitem__ does not, and for such datasets PyTorch's worker processes are faster (2.4–2.6× in the benchmarks). Use free-threaded CPython, or keep the per-item work in code that releases the GIL.

  • Free-threaded CPython 3.14t / 3.15t: no GIL, so pure-Python code runs in parallel too.

    uv python install 3.14t
    uv run --python 3.14t python -X gil=0 train.py
    
  • Shared Python objects on free-threaded CPython: an object's reference count is cheap only for the thread that created it; other threads update it atomically. Threads that all read the same dict or list millions of times per second (a vocabulary, a lookup table) contend on it and stop scaling: a pure-Python tokeniser over one shared vocabulary runs slower on 8 threads than on 1 with 3.14t. Give each thread its own copy of hot lookup tables (threading.local), or on 3.15t key them with interned strings (sys.intern), which no longer carry this cost. Processes (PyTorch's workers) never share objects, so they do not see this.

  • Array samples on Linux: tune the allocator NumPy uses. With default settings, the memory of every batch goes back to the system and is faulted back in, which serialises worker threads. The settings are process-wide, so they are yours to make, at start-up:

    # CPython 3.13 and 3.14t: NumPy allocates with glibc's malloc
    GLIBC_TUNABLES=glibc.malloc.trim_threshold=67108864:glibc.malloc.mmap_threshold=33554432 python train.py
    # CPython 3.15t: NumPy's buffers come from CPython's mimalloc
    MIMALLOC_PURGE_DELAY=-1 python train.py
    

    On 3.14t this is worth up to 2× for array samples with 4 workers, and the process keeps some free memory for reuse (80–100 MB in the benchmarks). With glibc, raise both thresholds: either one alone turns off glibc's adjustment of the other and is slower than the defaults. Batches of 16 MiB and more hit a mimalloc path no setting avoids on 3.15t: smaller batches are faster there.

  • Breaking out of a loop returns immediately; batches already being loaded finish in the background and are discarded.

  • Ctrl-C interrupts next() within 100 ms while it waits for workers, and the iterator stays usable. A batch fetched on your own thread (items_in_parallel > 1 without workers) runs to the end first.

  • Any thread can create, iterate and drop a loader, one thread at a time per object: a second thread calling next() on an iterator that another is advancing gets RuntimeError.

  • Worker threads have an 8 MiB stack, a main thread's usual size, so a __getitem__ recurses as deep as it would on your thread.

  • multiprocessing with fork: a child process can use a loader its parent already iterated; the loader rebuilds its threads there.

I/O-bound datasets

By default a worker fetches the items of its batch one after another, so a dataset that waits on the network (an object store, an HTTP API, a database) keeps only num_workers requests in flight. With items_in_parallel=k, up to k items of each batch are fetched concurrently, one __getitem__ call each, so num_workers × items_in_parallel requests are in flight:

loader = PyDataloader(
    S3Images(keys),
    batch_size=32,
    num_workers=4,  # 4 batches in parallel
    items_in_parallel=16,  # 16 items of each batch at once: 64 requests in flight
)

Waiting on I/O releases the GIL, so this works on regular CPython too. __getitems__ is not used when items_in_parallel > 1: each item is its own call.

Errors

  • An exception raised by __getitem__, __getitems__ or collate_fn reaches you with its own type and message, and the next next() continues with the following batch, with or without workers, as in PyTorch.
  • A __len__ or a sampler that raises, or a sampler that yields something other than a non-negative int, makes iter(loader) raise — an epoch never silently comes out empty or short.
  • Invalid arguments raise ValueError (batch_size=0, shuffle with sampler, seed without shuffle) or TypeError (a non-iterable sampler).

Coming from torch.utils.data.DataLoader

PyTorch dataloader-rs
torch.utils.data.Dataset subclass PyDataset (same __len__ / __getitem__ / __getitems__)
batch_size, shuffle, sampler, num_workers, collate_fn, drop_last same
generator= for a reproducible shuffle seed=
prefetch_factor (per worker) prefetch_depth (total, beyond the num_workers batches in progress)
worker processes, persistent_workers, worker_init_fn, multiprocessing_context threads: nothing to start, copy or initialise per worker
pin_memory, timeout, batch_sampler, IterableDataset not supported
default collation into tensors a list; pass collate_fn (e.g. np.stack, torch.stack)

Performance

Against torch.utils.data.DataLoader with the same dataset code, on 4 cores of an Intel Core i9-13900H, with the allocator settings of Workers, threads and the GIL for both: 4.9–6.6× faster on the loader's own overhead, 3.2–3.9× on network-bound datasets (items_in_parallel), first batches in milliseconds against 11–334 ms for torch's fresh worker processes, and 2.5–3.5× on array samples (file reads, NumPy augmentation) with free-threaded 3.14t / 3.15t, 1.0–1.5× on 3.13. Pure-Python CPU work with per-thread tables is about 1.2× faster on 3.14t and 3.15t; on shared objects or under the GIL, torch's processes are 2.4–2.9× faster. Every number, the method and the caveats: BENCH.md.

Source, issues and the Rust crate: github.com/AzHicham/dataloader-rs.

Metadata

Release files for dataloader-rs 0.2.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 dataloader-rs 0.2.0
File Size Uploaded Provenance Actions
dataloader_rs-0.2.0.tar.gz 157.2 kB With provenance Details for dataloader_rs-0.2.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for dataloader-rs 0.2.0
File Actions
dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ x86-64 Details for dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_x86_64.whl
dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ ARM64 Details for dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_aarch64.whl
dataloader_rs-0.2.0-cp315-cp315t-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 Details for dataloader_rs-0.2.0-cp315-cp315t-macosx_11_0_arm64.whl
dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64 Details for dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_x86_64.whl
dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ ARM64 Details for dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_aarch64.whl
dataloader_rs-0.2.0-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details for dataloader_rs-0.2.0-cp315-cp315-macosx_11_0_arm64.whl
dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details for dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl
dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details for dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl
dataloader_rs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details for dataloader_rs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl
dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl
dataloader_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for dataloader_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl
dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl
dataloader_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for dataloader_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl

Total release size: 5.1 MB

Release files / dataloader_rs-0.2.0.tar.gz

Download URL dataloader_rs-0.2.0.tar.gz
Size 157.2 kB
Tags Source
SHA-256 checksum
How to use checksums
09bcb632204354306c1d3ea3a6725ae7ffd7f16337236516311128ccbd085bc0
BLAKE2b-256 checksum
How to use checksums
6a4b30dc6cb84aa16403c54c3590159bda217f50248786678a7b2409f5cf7517
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_x86_64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_x86_64.whl
Size 346.2 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bf1542d21128baf099bab53b07def56fe63f3914e0a30a8da0a975bf507968fa
BLAKE2b-256 checksum
How to use checksums
6a68aaef1229ffd40c8ce9f942734c28e8d047114a8d3632eded7489856abd1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_aarch64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315t-manylinux_2_28_aarch64.whl
Size 342.2 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d6470b07f659fed15986bb2863e5ac2640bd53593411a4749d18a7f1547ef6b4
BLAKE2b-256 checksum
How to use checksums
c68785c35cbbc82f46ba62c2d3bd6e4c5261cbf15e73f5824f47e05c7fd24e78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315t-macosx_11_0_arm64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315t-macosx_11_0_arm64.whl
Size 302.0 kB
Tags CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6b0a87b2fd3d30758bf8e40393ea8614138423d3934f4bea88e46402470b9668
BLAKE2b-256 checksum
How to use checksums
49842a17437d2148c67acd631a74db839fa35b4aae4aaad8ca2ef91b283982f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_x86_64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_x86_64.whl
Size 347.0 kB
Tags CPython 3.15 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3155169d493a9c9d1c9614d22eb5f53de8cade2b74b152d8675db36850ac3ace
BLAKE2b-256 checksum
How to use checksums
2d9c2e4cc2e715e7720c9f89d7e4e9f1aa3f61467c339e047960d77ebd0c013c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_aarch64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315-manylinux_2_28_aarch64.whl
Size 344.7 kB
Tags CPython 3.15 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
26a9d093296e4833c14076ebbcef8563e5245f81c9ee6f45dd107462f87bc7c2
BLAKE2b-256 checksum
How to use checksums
cba7f42bb923251d3df00ea62de34e72a44d79fa898217bdf4b07990fce14576
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp315-cp315-macosx_11_0_arm64.whl

Download URL dataloader_rs-0.2.0-cp315-cp315-macosx_11_0_arm64.whl
Size 303.1 kB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f2a96e4d479c3813d1a23f04dd765d6f3ac86b74f85373a479b12495104972c6
BLAKE2b-256 checksum
How to use checksums
10327a7d61f732d2caaf9aaa86268e5783b59c8a218bafe6babb1837df276251
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 346.2 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
335d1f7a7e6dcf698a757b18ca97ecf188b4a9a093a703067f8185ef502ac7af
BLAKE2b-256 checksum
How to use checksums
5fc2c9324f284c6574da68e898c61d07a3f0f6f7d84157b632e4c9d0a045edf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 342.4 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a6c404596b8b16a078b6f13cbbfeb795c7c2d74dc8d17ddc8926b7fd9be8d60a
BLAKE2b-256 checksum
How to use checksums
21dcf24eaea8e4c8ed2daee64826ad47787ada4dfccb765689d1ea36dd175794
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 302.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
757f672cf16b32c227e6e7b8ed584e755dd85aa65982070da09d05753eb338e0
BLAKE2b-256 checksum
How to use checksums
0becfb678adcdd166f141fa71acd4accf623b1163ecc2ca596c7a6f476072d17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl
Size 346.9 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7865dce23557e0847e5ada189490eab3b6e6a5aac97fbea5e4b8990d62f37e4c
BLAKE2b-256 checksum
How to use checksums
17830469de70ad2b948e1f62f44b67c9aa7c61bf9f7f6a6d54bb89aa416d9afe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl
Size 344.4 kB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0896a6f36595e81be56b456f30ec79deffc71798bd89fcd4f7fdd5d4c2747190
BLAKE2b-256 checksum
How to use checksums
03bbeec5cecbbef84424ad5923c96ad691a89c61f67296a208ba30f4f963734e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL dataloader_rs-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Size 303.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
897781d6339eceaeee2fd4a5835d75906f42c362358a6a6e7d41f476e650f60a
BLAKE2b-256 checksum
How to use checksums
00e568003aed0d63bd4816dcaaff679c9125e629943a17f779d452d9c9ec0226
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 346.6 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
397ea52030babf45f1eb1ecda5a49346b7b5853a4fa28c2c7748102b7208572d
BLAKE2b-256 checksum
How to use checksums
c52c2916fc83a7ea7145644fd559b2c667a3670f92187b1f03092a9f893f48b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL dataloader_rs-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 343.9 kB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3e5dfbf3e4c8f4fac0d7c354d120bd95b92a670f414645cbd758f6cc0e2ccc4c
BLAKE2b-256 checksum
How to use checksums
efc051a68281fd24d44c92c1b9eebf4c17dd38d2761ffddd69af1685f939d2ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Release files / dataloader_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL dataloader_rs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Size 303.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
47047ae2ee0e552680a6dafeaf0bfed6b8c062c83379f70e7010f3c778e15d15
BLAKE2b-256 checksum
How to use checksums
74167c247140d5fd7fa83c24ed1dbc29a15c48c7958918d393dbf33a52918ebe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Security for dataloader-rs 0.2.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.

Full provenance

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

Select from 16 files

Attestation for dataloader_rs-0.2.0.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 26, 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