Skip to main content

TurboLoader

Production-Ready ML Data Loading Library

PyPI version Tests Python 3.10+ C++20 License: MIT


Overview

TurboLoader is a high-performance data loading library for machine learning workflows. Built with C++20 and featuring Python bindings, it provides efficient data loading with SIMD-accelerated transforms, custom binary formats, and distributed training support.

Core Features

  • Fused train pipeline - train_aug=True: RandomResizedCrop + flip + normalize inside the C++ pass (torchvision-parity, deterministic per epoch, ~3% over plain loading)
  • Trains end-to-end faster - real ResNet-18/Imagenette: 1.17x vs PyTorch DataLoader (loader ~fully hidden behind the GPU); see benchmarks/E2E_TRAINING_RESULTS.md
  • Checkpointable - state_dict()/load_state_dict(): exact, decode-free mid-epoch resumption
  • Pinned recycled buffers - pin_memory=True yields torch tensors from a reused ring; async H2D with non_blocking=True
  • Decoded Tensor Caching - FastDataLoader(..., cache_decoded=True) keeps decoded arrays in RAM so later epochs skip decoding
  • Multiple Loader Types - FastDataLoader, MemoryEfficientDataLoader, standard DataLoader
  • Distributed Training Support - Multi-node data loading with deterministic sharding
  • SIMD-Accelerated Transforms - 19 vectorized transforms using AVX2/AVX-512/NEON
  • TBL v2 Binary Format - Custom format with LZ4 compression for reduced storage
  • Framework-ready outputs - output_format='pytorch'/'numpy'/'tensorflow' batch layouts, zero-copy torch adoption for the GPU loaders, and a shipped WebDatasetLoader
  • Memory-Mapped I/O - Zero-copy file access for improved throughput
  • Lock-Free Queues - Concurrent data structures for efficient multi-threading
  • GPU image loaders - CudaImageLoader (NVIDIA nvImageCodec — beats DALI on an RTX 3090, see below) and GpuImageLoader (Apple Metal): end-to-end GPU decode + resize + normalize, GPU-resident output. See GPU acceleration
  • Resident (pre-processed) epochs - CudaResidentLoader (~280k img/s, beats FFCV 3.5×) and MetalResidentLoader (433–757k img/s on unified memory) + MetalResidentArrays for any-dtype rows. Decode once, serve every epoch with one fused gather+shuffle+normalize kernel launch per batch
  • Video loaders - MetalVideoLoader (VideoToolbox hardware decode, 3.9× the best industry standard on an M4 Max) and CudaVideoLoader (GPU-resident batches, dual CPU/NVDEC decode backends, novel fused clip-assembly kernel via iter_clips). See video results

Which loader do I use?

One decision table for every entry point — pick by data type and hardware, without reading the internals:

You have Use Notes
A TAR of JPEGs, training on any hardware DataLoader(..., output_format='pytorch', image_size=N) The default fast path — auto-fused C++ decode+resize+normalize. Start here.
The same, need per-sample dicts (inspection, irregular data) DataLoader(...) (default output_format='dict') Several times slower; not for training loops.
Labels derive from meta['indices'] / sample['filename'] Samples carry no label key; align an external label array by index.
A dataset that fits in GPU/unified memory, many epochs CudaResidentLoader (NVIDIA) / MetalResidentLoader (Apple) Decode once, ~280k / 433–757k img/s per epoch. return_indices=True for labels.
A pre-processed dataset larger than VRAM (NVIDIA) CudaStreamLoader Fully-C++ streaming, ~140k img/s.
On-the-fly GPU decode (NVIDIA) CudaImageLoader(decode='nvimgcodec', return_indices=True) Beats DALI; batches complete OUT of order — align labels via the returned indices.
On-the-fly GPU transforms (Apple) MetalImageLoader (alias of GpuImageLoader) Metal decode+transforms.
Video files MetalVideoLoader (Apple) / CudaVideoLoader (NVIDIA) Hardware decode → training batches; iter_clips() for augmented clips.
LLM token streams (memmap) TokenDataLoader CPU memmap is already optimal (measured).
Arrays / embeddings / tabular ArrayDataLoader; MetalResidentArrays for GPU row gathers
WebDataset-style TARs WebDatasetLoader

Two lifetime rules to know: (1) loaders yielding zero-copy views (pin_memory=True ring, Metal/CUDA resident + video loaders) reuse their buffers — consume or copy a batch before advancing past the documented window; (2) GPU loaders yield __cuda_array_interface__ objects — adopt with torch.as_tensor(x, device='cuda').

Installation

From PyPI (Recommended)

pip install turboloader

From Source

git clone https://github.com/ALJainProjects/TurboLoader.git
cd TurboLoader
pip install -e .

System Requirements

  • Python: 3.10 or higher
  • Compiler: C++20 capable (GCC 10+, Clang 12+, MSVC 19.29+)
  • OS: Linux (x86_64/aarch64 wheels), macOS (arm64 wheel). Windows: not officially supported yet — use WSL2

Optional Dependencies

Install for enhanced performance:

# macOS
brew install jpeg-turbo libpng libwebp lz4

# Ubuntu/Debian
sudo apt-get install libjpeg-turbo8-dev libpng-dev libwebp-dev liblz4-dev

Quick Start

Training input (the fast path — start here)

import turboloader

loader = turboloader.DataLoader(
    'imagenet.tar',                 # TAR archive of JPEGs
    batch_size=128,
    image_size=224,                 # fixed size => one contiguous tensor per batch
    output_format='pytorch',        # (N, 3, H, W) float32, normalized
    transform=turboloader.ImageNetNormalize(),
    shuffle=True,
    train_aug=True,                 # fused RandomResizedCrop + flip in C++
)
for images, meta in loader:
    # images: numpy (N,3,224,224); torch.from_numpy(images) is zero-copy.
    # meta['indices'] aligns external labels to this batch.
    ...

This is the path all the benchmark numbers refer to. The dict API below is the flexible per-sample path — several times slower; use it for inspection, not epochs.

Basic Usage (per-sample dicts)

import turboloader

# Create DataLoader
loader = turboloader.DataLoader(
    'imagenet.tar',
    batch_size=128,
    num_workers=8
)

# Iterate over batches. Each sample is a dict:
#   {'image': np.ndarray (H, W, C), 'filename': str, 'index': int,
#    'width': int, 'height': int, 'channels': int}
for batch in loader:
    for sample in batch:
        image = sample['image']      # NumPy array (H, W, C)
        name = sample['filename']    # source path within the archive
        # Train your model...

Need (image, label) tuples like torch.utils.data.DataLoader? Use PyTorchCompatibleLoader, which derives labels from the folder structure (ImageFolder-style). The base DataLoader does not attach labels.

With Transforms

import turboloader

# Create transforms
resize = turboloader.Resize(224, 224)
normalize = turboloader.ImageNetNormalize()
flip = turboloader.RandomHorizontalFlip(p=0.5)

# Apply transforms
loader = turboloader.DataLoader('data.tar', batch_size=64, num_workers=8)

for batch in loader:
    for sample in batch:
        img = sample['image']
        img = resize.apply(img)
        img = flip.apply(img)
        img = normalize.apply(img)
        # Ready for training

PyTorch Integration

import turboloader
import torch

loader = turboloader.DataLoader('imagenet.tar', batch_size=64, num_workers=8)

# Convert to PyTorch tensors
to_tensor = turboloader.ToTensor(
    format=turboloader.TensorFormat.PYTORCH_CHW
)

for batch in loader:
    images = []
    for sample in batch:
        img = to_tensor.apply(sample['image'])
        images.append(torch.from_numpy(img))

    batch_tensor = torch.stack(images)
    # Train model...

Distributed Training

import turboloader
import torch.distributed as dist

# Initialize distributed training
dist.init_process_group(backend='nccl')

# Create loader with distributed support
loader = turboloader.DataLoader(
    data_path="/data/imagenet.tar",
    batch_size=64,
    num_workers=4,
    shuffle=True,
    enable_distributed=True,
    world_rank=dist.get_rank(),
    world_size=dist.get_world_size(),
    drop_last=True
)

# Each rank automatically gets its shard
for batch in loader:
    # Your training code
    pass

Transform Library

TurboLoader includes 24 transforms (19 per-image SIMD transforms + 5 batch augmentations). The authoritative list is turboloader.list_transforms().

Core Transforms

  • Resize - Bilinear/Bicubic/Lanczos interpolation
  • Normalize - Mean/std normalization with SIMD
  • CenterCrop - Center region extraction
  • RandomCrop - Random crop with padding

Augmentation Transforms

  • RandomHorizontalFlip - SIMD horizontal flip
  • RandomVerticalFlip - SIMD vertical flip
  • ColorJitter - Brightness/contrast/saturation/hue
  • RandomRotation - Arbitrary angle rotation
  • GaussianBlur - Separable convolution
  • RandomErasing - Cutout augmentation
  • Pad - Border padding (CONSTANT/EDGE/REFLECT)

Advanced Transforms

  • RandomPosterize - Bit-depth reduction
  • RandomSolarize - Threshold inversion
  • RandomPerspective - Perspective warp
  • AutoAugment - Learned policies (ImageNet/CIFAR10/SVHN)

Batch Augmentations

  • MixUp, CutMix, Mosaic, RandAugment, GridMask

Tensor Conversion

  • ToTensor - PyTorch CHW or TensorFlow HWC format

TBL v2 Binary Format

TurboLoader includes a custom binary format optimized for ML workloads:

Features

  • LZ4 compression for reduced storage
  • Memory-mapped access for fast loading
  • O(1) random access via indexed structure
  • Data integrity validation with CRC checksums
  • Cached image dimensions for filtered loading

Convert TAR to TBL

import tarfile
import turboloader

writer = turboloader.TblWriterV2("/data/imagenet.tbl", enable_compression=True)

# The TAR archive is read with Python's stdlib (TurboLoader does not expose a
# standalone Python TarReader; the DataLoader reads TAR directly for training).
with tarfile.open("/data/imagenet.tar") as tar:
    for member in tar.getmembers():
        if not member.name.lower().endswith((".jpg", ".jpeg")):
            continue
        data = tar.extractfile(member).read()
        writer.add_sample(data=data, format=turboloader.SampleFormat.JPEG)

writer.finalize()

For bulk conversion there is also a C++ CLI tool, tools/tar_to_tbl_v2.cpp.


Documentation

Getting Started

API Documentation

Framework Integration

Examples


Benchmarks

Measured on Apple Silicon over Imagenette-160 (9,469 real ImageNet JPEGs → resize 160×160 → ImageNet-normalize → batched CHW float32, batch 64). To control for thermal throttling, every loader is built once, warmed up one epoch, then timed over 5 interleaved rounds (each loader runs once per round); the table reports the median. Output is verified correct against torchvision (mean abs diff ≈ 0.04, bilinear antialiasing only).

Image — on-the-fly decode (re-decode every epoch; for datasets too large to cache or with per-epoch random augmentation):

Loader img/s (median) vs tf.data
TurboLoader DataLoader (output_format='pytorch', nw=6) ~55,000 2.0×
TensorFlow tf.data (AUTOTUNE) ~27,300 1.00×
PyTorch DataLoader (PIL, 8 persistent workers) ~20,500 0.75×

Image — cached (decoded tensors held in RAM; both sides consume identically via np.sum, i.e. delivered as numpy/torch-ready batches — the PyTorch use case):

Loader img/s (median) vs tf.data.cache
TurboLoader (cache_decoded=True, prefetch) ~67,000 1.9×
TensorFlow tf.data.cache() (+ .numpy() materialize) ~35,100 1.00×

(For TF-native consumption that stays in tf tensors, tf.data.cache() is faster — TurboLoader's cache win is for delivering numpy/torch batches.)

LLM tokens (real text, 55M-token memory-mapped corpus, seq_len=1024, next-token):

Loader sequences/s (median)
TurboLoader TokenDataLoader ~467,000
numpy memmap idiom (nanoGPT get_batch) ~251,000

Transforms (per-image throughput vs torchvision): Resize 2.7×, ImageNetNormalize 3.3×, HFlip ~1.0×. For CenterCrop, torchvision returns a lazy strided view (moves zero bytes); compared against TurboLoader's real contiguous crop that looks like 0.45×, but when torchvision actually materializes the crop (.contiguous(), required before batching/most ops) it drops to ~23k img/s and TurboLoader's contiguous crop is ~6.8× faster (155k vs 23k). Like the cache, this is a lazy-vs-eager comparison; for the realistic crop→batch path TurboLoader wins.

Earlier drafts quoted single-run figures (~42k, "1.4×") and a "cached epoch" in the tens-of-millions img/s. Those were artifacts (thermal noise; a no-op loop over aliased cached arrays) and were replaced with the interleaved, identical-consumption medians above. Numbers are hardware-dependent — run benchmarks/ yourself.

The fast path runs decode + resize + normalize + batch assembly in C++ across a thread pool with zero Python per-sample work. Use it like this:

loader = turboloader.DataLoader(
    'imagenet.tar', batch_size=64, num_workers=6,
    output_format='pytorch',          # (N, C, H, W) float32 array per batch
    image_size=160,                   # exact resize, done in C++
    transform=turboloader.ImageNetNormalize())
for epoch in range(epochs):           # re-iterable
    for images, meta in loader:       # images.shape == (64, 3, 160, 160)
        train_step(images)

Honest caveats:

  • Run it yourself (benchmarks/) — results depend heavily on hardware, image size, and pipeline; Linux fork-based PyTorch workers shift the PyTorch numbers a lot.
  • Decode backend differs: TurboLoader uses libjpeg-turbo; the PyTorch baseline uses PIL.
  • The output_format='dict' path returns per-sample dicts and stacks in Python (GIL-bound), so it is much slower — use it only when you need per-sample metadata.

For large source images, the default path also wins: on 768×768 JPEGs resized to 160 it runs ~15,000 img/s — faster than even an expertly-tuned tf.data pipeline using manual decode_jpeg(ratio=...) (~14,400) — because it picks the libjpeg-turbo DCT scaled-decode factor automatically (you don't have to know to set ratio).

GPU loaders (NVIDIA & Apple)

On NVIDIA, CudaImageLoader(decode="nvimgcodec") runs the whole decode + resize + normalize

  • batch in GIL-released C++ via nvImageCodec (the codec DALI uses), with K independent decode slots overlapping batches (multi-batch-in-flight). Among on-the-fly loaders (read a JPEG folder, decode+resize every epoch) on an RTX 3090 (Imagenette-160, batch 64, real consumption, interleaved rounds to control for ~40% host drift):
On-the-fly loader vs TurboLoader
TurboLoader decode="nvimgcodec", nvimgcodec_slots=3 1.0× (fastest)
NVIDIA DALI (num_threads=8, best-tuned) ~0.9× (TurboLoader +12% cleanest run)
PyTorch DataLoader (PIL, CPU) ~0.25×

TurboLoader beats DALI (median above DALI's max in the cleanest run), output bijectively verified correct. For on-the-fly loading FFCV is faster (~2.6–5.9×) — but it requires an offline conversion to its .beton format.

Pre-processed loaders (decode+resize once, like FFCV's .beton) — here TurboLoader turns the tables:

Pre-processed loader img/s
TurboLoader MetalResidentLoader (Apple M4 Max, unified memory: no H2D exists) ~757,000 produced / ~433,000 consumed ships in the pip wheel
TurboLoader CudaResidentLoader (fits-in-VRAM: upload uint8 once, GPU-resident) ~280,000 beats FFCV ~3.5×
TurboLoader CudaStreamLoader (streaming, dataset > VRAM; fully-C++ loop) ~140,000 beats FFCV ~1.6×
FFCV, raw .beton (streams mmap→H2D each epoch, worker processes) ~85,000

On Apple Silicon the resident trick is even better than on NVIDIA: memory is unified, so "upload" is one memcpy and every GPU-written batch is a zero-copy numpy view. MetalResidentLoader serves each epoch as one fused gather+shuffle+normalize kernel launch per batch; MetalResidentArrays does the same for any-dtype rows (embedding tables: ~5× numpy fancy-indexing). Honest null result included: MetalTokenGather ties the CPU memmap path (0.87–1.08×) — keep using TokenDataLoader for tokens.

Video: MetalVideoLoader (macOS arm64, in the pip wheel — no FFmpeg needed) drives VideoToolbox hardware H.264/HEVC decode into a fused NV12→RGB+resize+normalize Metal kernel: real 1080p → 224px training batches at ~2,550 frames/s on an M4 Max — 3.9× the best industry standard (OpenCV 657, PyAV 535, torchcodec 173) and 97–99% of the media engine's hardware decode ceiling. On NVIDIA, CudaVideoLoader (CUDA build) lands GPU-resident batches via a dual decode backend (threaded CPU decode by default; NVDEC opt-in — measured virtualization-throttled under WSL2) plus a novel fused clip-assembly kernel (iter_clips: consistent RandomResizedCrop+flip across a whole clip + YUV→RGB + resize + normalize in ONE launch). Honest scorecard incl. where decord still wins on weak-CPU hosts: benchmarks/VIDEO_RESULTS.md.

CudaResidentLoader uses a custom single-launch normalize kernel + fused gather (shuffles at ~257k) and beats FFCV ~3.5× when the pre-processed uint8 dataset fits in VRAM (very common: fine-tuning, per-GPU shards, small/medium sets). For datasets larger than VRAM, CudaStreamLoader runs the whole iteration GIL-free in C++ (CudaStreamCore: worker pool + async H2D on non-blocking streams + prefetch) and beats FFCV's streaming ~1.6× (~140k vs ~85k, near the PCIe transfer ceiling). So TurboLoader beats DALI on-the-fly and FFCV on pre-processed data — both fits-in-VRAM and streaming. On Apple Silicon, GpuImageLoader offloads resize+normalize (and a hybrid GPU JPEG decode) to Metal — where neither DALI nor FFCV runs at all. CUDA is a build-from-source path (not in the PyPI wheels); see GPU acceleration for flags, usage, and the full write-up (experiments/cuda/RESULTS.md).

Implementation notes

  • Direct-batch path (src/pipeline/direct_batch_loader.hpp): the default fast path is FFCV/tf.data-style — a persistent thread pool reads JPEG bytes by index and decodes → resizes → normalizes directly into the output batch buffer in one parallel pass (no worker queue, no per-sample heap copy, no serial collection). Verified memory-safe and race-free (disjoint slot writes, const mmap reads, atomic cursor, per-thread decoders).
  • Automatic DCT scaled decode: large JPEGs are decoded at the nearest libjpeg-turbo scale ≥ target, then finely resized — much faster than full-decode + resize.
  • Resize convention: half-pixel centers (align_corners=False), matching PIL/OpenCV/PyTorch/TF (agrees with torchvision plain bilinear to ~0.4/255; the only remaining difference vs torchvision's default is its antialiasing low-pass filter).
  • SIMD transforms (AVX2/AVX-512/NEON), libjpeg-turbo decode, lock-free SPSC queues (legacy/dict + remote path), persistent std::thread pool (src/core/parallel_for.hpp).
  • The GIL is released during C++ processing.
  • OpenMP is opt-in (TURBOLOADER_ENABLE_OPENMP=1); off by default because linking a second OpenMP runtime crashes alongside PyTorch on macOS — the thread pool replaces it.

Beyond Images: Tokens & Arrays

TurboLoader also ships loaders for non-image modalities with the same ergonomics (re-iterable, shuffle, set_epoch, batched arrays):

# LLM pretraining: memory-mapped token stream -> (B, seq_len) next-token batches
loader = turboloader.TokenDataLoader('train.bin', seq_len=1024, batch_size=8,
                                     dtype='uint16', shuffle=True)
for x, y in loader:          # x, y: (8, 1024) int64; y is x shifted by one
    loss = model(x, y)

# Generic arrays/memmaps (embeddings, tabular features, labels, pre-tokenized data)
loader = turboloader.ArrayDataLoader(features, labels, batch_size=256, shuffle=True)
for xb, yb in loader:
    ...

TokenDataLoader uses a vectorized fancy-index gather over a np.memmap (so multi-GB corpora stream without loading into RAM) and benchmarks ~1.9× the standard nanoGPT get_batch idiom. The image pipeline (decode/transform/TBL) remains C++; these modality loaders are NumPy-based and modality-agnostic.

All three modalities are also reachable from the single DataLoader entry point:

turboloader.DataLoader('train.bin', modality='tokens', seq_len=1024, batch_size=8)
turboloader.DataLoader(arrays=[feats, labels], data_path=None, modality='array', batch_size=256)
turboloader.DataLoader('data.tar', image_size=160, output_format='pytorch')   # modality='image' (default)

Wrap any Python dataset (MapDataLoader)

When your data doesn't fit the native paths, MapDataLoader batches any map-style dataset — anything with __len__ and __getitem__(i), i.e. exactly the torch.utils.data.Dataset protocol — so your loading/decoding/business logic can be arbitrary Python:

class MyDataset:
    def __len__(self): return len(self.records)
    def __getitem__(self, i):
        x = decode_however_you_like(self.records[i])   # any Python logic
        return x, self.labels[i]                       # (features, label)

# directly, or via the unified entry point with dataset=...
for xb, yb in turboloader.MapDataLoader(MyDataset(), batch_size=64, shuffle=True, num_workers=8):
    train_step(xb, yb)

It parallelizes __getitem__ on a bounded thread pool with read-ahead and collates (tuples/dicts/arrays, or a custom collate_fn). Honest tradeoff: because the per-sample work runs in Python, this path is roughly PyTorch-DataLoader speed (and GIL-bound for pure-Python CPU work — threads help most when __getitem__ releases the GIL, e.g. NumPy/PIL/file/network I/O). It's about flexibility, not the C++ fast path — use the image/token/array loaders above when you want maximum throughput.


Architecture

TurboLoader uses a multi-threaded pipeline architecture:

┌─────────────────────────────────────────────┐
│           Memory-Mapped Reader              │
│     (TAR/TBL v2 with zero-copy access)      │
└──────────────┬──────────────────────────────┘
               │
        ┌──────▼──────┐
        │Worker Pool  │
        │  (N threads)│
        ├─────────────┤
        │ Decode      │
        │ Transform   │
        │ Convert     │
        └──────┬──────┘
               │
        ┌──────▼──────────────┐
        │ Lock-Free Queue     │
        └──────┬──────────────┘
               │
        ┌──────▼──────┐
        │Python API   │
        └─────────────┘

Key Components

  • Memory-Mapped I/O - Zero-copy file access
  • Worker Thread Pool - Parallel processing with per-thread decoders
  • SIMD Transforms - Vectorized operations (AVX2/AVX-512/NEON)
  • Lock-Free Queues - High-performance concurrent data structures

License

TurboLoader is released under the MIT License.


Citation

If you use TurboLoader in your research:

@software{turboloader,
  author = {Jain, Arnav},
  title = {TurboLoader: High-Performance ML Data Loading},
  year = {2026},
  version = {2.25.0},
  url = {https://github.com/ALJainProjects/TurboLoader}
}

Support


TurboLoader - High-performance ML data loading with a C++20 core and SIMD transforms.

Download files

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

Source Distribution

turboloader-2.35.0.tar.gz (678.2 kB view details)

Uploaded Source

Built Distributions

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

turboloader-2.35.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (10.0 MB view details)

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

turboloader-2.35.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (9.7 MB view details)

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

turboloader-2.35.0-cp314-cp314-macosx_11_0_arm64.whl (852.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

turboloader-2.35.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (10.0 MB view details)

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

turboloader-2.35.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (9.7 MB view details)

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

turboloader-2.35.0-cp313-cp313-macosx_11_0_arm64.whl (851.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

turboloader-2.35.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (10.0 MB view details)

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

turboloader-2.35.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (9.7 MB view details)

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

turboloader-2.35.0-cp312-cp312-macosx_11_0_arm64.whl (851.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

turboloader-2.35.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (9.9 MB view details)

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

turboloader-2.35.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (9.6 MB view details)

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

turboloader-2.35.0-cp311-cp311-macosx_11_0_arm64.whl (845.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

turboloader-2.35.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (9.9 MB view details)

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

turboloader-2.35.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (9.6 MB view details)

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

turboloader-2.35.0-cp310-cp310-macosx_11_0_arm64.whl (844.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file turboloader-2.35.0.tar.gz.

File metadata

  • Download URL: turboloader-2.35.0.tar.gz
  • Upload date:
  • Size: 678.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for turboloader-2.35.0.tar.gz
Algorithm Hash digest
SHA256 9d61f08836ba65d66097a2a11dd0a4c2c4f8aa20e416c4041649ae5b33f4ab40
MD5 a480ee6a7a7ed74b81f78ad8169445fd
BLAKE2b-256 d668415c90f10c391af090463b8032879fb76dbdece6bb1e658834c3a1dd663e

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0.tar.gz:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 54dfcaaa52657f004c04be8f6fa0acbc97adfae8f049a5507fe2b34d8f01537c
MD5 e56c07c7a11c53a7abd7838f85ac7b94
BLAKE2b-256 f0462ffe5e7d57e6bd16aad2a1e84dca1e5fe96b9ae93081444373d56b941662

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6060876efc2ce1bfcddbb5391e725ecc15c29fd752330d2f614c7f6e81b7ed00
MD5 6227abba1416701230e3c9f400547dcf
BLAKE2b-256 9fb7f5debbf836a3d4de32f6b4982ee33cc49a73f8bc26b1732ec1c926a1b84b

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 430b3ed3499a41204eab91818164030bd4d9d7182a29fba207973a05710a007b
MD5 e315eb4dc70ca0aebde47d06e8eeff6e
BLAKE2b-256 88674dc230f0cec5a4a0f89e9e91944f99482deb299f4f5ab56f107f589ebc11

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c425258e989029a7956ae938341a9a4becf2f2e06423efddc39dd310511effd9
MD5 400afa9fe91be533053569d770058e92
BLAKE2b-256 85c7f9a519d5e32096f45b89d41ef8527fb651057f6cdf908514ff47387a07e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a30ccc7e65f468238a85a944cc8a80c59c26be544b579434d40ca6d5585d8fad
MD5 225ed27943a55131508821fb77eac228
BLAKE2b-256 e4f77e86823ddff3bcee3bad66c9e58ab6f10a43994de846ad4fb6b82ae53b96

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27328bd8212ac68f92a333a42940e7431478f1307cf2aa2bca10b0ce34e3833b
MD5 2ac6621d8f7425aaa300b924f147b0b1
BLAKE2b-256 4d36c7c5f39f2664da7d76c9fc09490bae7525fc62aa638535c04ab540df2553

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64354c77f58068298729fe37e9bd19eb5a725e0af5ee6a8bc494382905b5d58d
MD5 e73423d6e03cb6180219289f0b0097e7
BLAKE2b-256 7c3ff30a5f8282d83493e2e99c6a009f9e5a6b4e84635701cb6d2c695ad6f8ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6d979097c44bb79f40fea1d91bee7cf409f18cf644aeb4a93a6236598db622f
MD5 950cc580dbf2a3f65094eda7573ee397
BLAKE2b-256 b88f5d1544d03783eb5ce99b1532e9fd70a5e8a4d76062fba2e76d57eadce2e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ead0e28d405001b1f963febce007bda749658f405d6d35a7d90e016fa5fe5bd0
MD5 c0d69b3f2eee2a650941dd6a96ee37cf
BLAKE2b-256 d66332d0a976e631ca973d5112d1ce72ee43b1497ab24d9bcc784be11c5861fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 966e700feb7cfee7441181f1670870e8daafadfb1293ca94ff76314bbf54cb1b
MD5 ebafbbe88b7e16f7fa2d6321d0f781c3
BLAKE2b-256 9050b7278814f3d5ddd7b190d9252629c7db2d31df883ae1f37871bca7ffd306

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78ab6a8c868d5141ee9c0407b680f586cd28024636eb05e7766d70fa69a7f22d
MD5 3c30e6a38775998639f73f0c0a8a3769
BLAKE2b-256 2be03e21e42a116c665f44075fbfef95d261c54eb286aaa589479d4d0ccf6ee5

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c43e1c3b1ae3eb66d5bf9f11ae4cfd63a6ab17a4b9e18ffefe6e50800fe5e10c
MD5 161c410811c8ac6609390bbc6e899e0b
BLAKE2b-256 e5da757ec028eaabde5c65a89175d1d6e2d4dd29629202935342059739aa4fd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef975d7f32ebb21b821d8cf59dd66d75e20f8892df90f5031910476b21544ed5
MD5 4e275084a957dba387b1fc31a2eeca25
BLAKE2b-256 83b481761878d46d944e11d445d5f4543f9bb08469b2d2da39eef3a95af6ae4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 94cae0b69a27ac0197d1cac47f6ee9a340f53aba98f90e9c7649c904527141a1
MD5 298d6ef6e6959711c3175ab485aef804
BLAKE2b-256 51ccfe1f4b7f391ed951d544d87c47129347a630ad97c1f2c4524d829aa55389

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

File details

Details for the file turboloader-2.35.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turboloader-2.35.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 377d5923d083b06c84b333d4094775d72f84867d59676b743090a2d4eed9ee27
MD5 ad8c8f919f8f1426216a6a81b63f8d43
BLAKE2b-256 79a1dfbf0cff5140f8059bab6e57467c039d89862071b52bec4bb1dd3e9e14cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboloader-2.35.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on ALJainProjects/TurboLoader

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

Release history Release notifications | RSS feed

Supported by

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