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, plusseedfor reproducible shuffling,prefetch_depth, anditems_in_parallelto 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
KeyErrorin__getitem__reaches you as aKeyError. - 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
- Quick start
- Datasets
- PyDataloader arguments
- Batches and
collate_fn - Samplers
- Workers, threads and the GIL
- I/O-bound datasets
- Errors
- Coming from
torch.utils.data.DataLoader - Performance
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; withseed=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)useslen(sampler), so a sampler without__len__makeslen(loader)raiseTypeError, 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 > 1without 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 getsRuntimeError. -
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. -
multiprocessingwithfork: 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__orcollate_fnreaches you with its own type and message, and the nextnext()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-negativeint, makesiter(loader)raise — an epoch never silently comes out empty or short. - Invalid arguments raise
ValueError(batch_size=0,shufflewithsampler,seedwithoutshuffle) orTypeError(a non-iterablesampler).
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)
| 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.