Skip to main content

Ultra-fast Gaussian Splatting PLY + SPZ I/O library - pure Python with NumPy and Numba. Features 11x faster GPU transfers and automatic format state tracking for seamless conversions.

Project description

gsply

Ultra-Fast Gaussian Splatting PLY + SPZ I/O Library

Python License: MIT Documentation Tests

93M Gaussians/sec read | 57M Gaussians/sec write | Auto-optimized

Quick StartInstallationExamplesAPI ReferencePerformance


Quick Start

from gsply import plyread, GSData, GSTensor

# Read PLY file (auto-detects format, zero-copy)
data = plyread("model.ply")  # Functional API

# Or use object-oriented API
data = GSData.load("model.ply")  # Classmethod

# Access fields
positions = data.means    # (N, 3) xyz coordinates
colors = data.sh0         # (N, 3) RGB colors
scales = data.scales      # (N, 3) scale parameters
rotations = data.quats    # (N, 4) quaternions

# Save PLY file
data.save("output.ply")  # Uncompressed
data.save("output.ply", compressed=True)  # Compressed (71-74% smaller)

# GPU acceleration (optional)
gstensor = GSTensor.load("model.ply", device='cuda')
gstensor.save("output.compressed.ply")  # GPU compression

Performance: 93M Gaussians/sec read, 57M Gaussians/sec write (400K Gaussians in 6-7ms)


Overview

Ultra-fast Gaussian Splatting PLY and SPZ I/O for Python. Zero-copy reads, auto-optimized writes, optional GPU acceleration.

Key Features

  • Ultra-Fast: 93M Gaussians/sec read, 57M Gaussians/sec write
  • Zero-Copy: Reads use memory views for maximum performance
  • Auto-Optimized: Writes are 2.6-2.8x faster automatically
  • Format Support: Uncompressed PLY + PlayCanvas compressed (71-74% smaller) + SOG + Niantic SPZ (v1–v4)
  • GPU Ready: Optional PyTorch integration with GSTensor (11x faster transfers)
  • Python-first: NumPy + Numba core with bundled C++ acceleration on supported wheels
  • Object-Oriented API: data.save(), GSData.load(), gstensor.save(), GSTensor.load()
  • Format Conversion: normalize(), denormalize() with fused kernels (~8-15x faster)
  • Color Conversion: to_rgb(), to_sh() for SH ↔ RGB conversion
  • Comprehensive: 426 passing tests, 22 skipped optional-environment tests, full type hints, extensive documentation

Installation

Basic Installation

pip install gsply

Core dependencies: NumPy and Numba (automatically installed)

Optional Features

GPU Acceleration (PyTorch):

pip install torch

Enables GSTensor, plyread_gpu(), plywrite_gpu(), and GPU-accelerated format conversions.

SOG Format Support:

pip install gsply[sogs]

Enables sogread() for reading SOG (Splat Ordering Grid) format files.

C++ acceleration backend (bundled wheels):

pip install gsply installs the gsply_cpp backend automatically from published platform wheels on supported platforms. No gsply[cpp] extra and no separate gsply-cpp package are needed.

pip install gsply

Source installs and unsupported platforms can remain Python-only by default. To build the extension locally from the repository root, opt in explicitly:

pip install . -Cwheel.cmake=true -Ccmake.define.GSPLY_BUILD_CPP=ON

Then opt in at runtime (the Python backend remains the default):

import gsply
gsply.use_backend("cpp")        # or "auto" (use C++ if importable), or "python"
# equivalently: set the env var GSPLY_BACKEND=cpp before importing gsply
print(gsply.active_backend())   # -> "cpp" when gsply_cpp is installed

data = gsply.read_spz("scene.spz")      # routed through C++ when enabled
gsply.write_spz("out.spz", data, version=4)

When enabled, plyread/plywrite/read_spz/write_spz use gsply_cpp where it applies and fall back to pure Python otherwise (e.g. compressed PLY). Reads are float32-ULP-identical to the Python path; writes may differ by <=1 LSB per quantized value and use a different compressor (decoded data matches; compressed bytes differ).

Full Installation:

pip install "gsply[sogs,spz]" torch  # GPU + SOG + SPZ v4 support

Development:

git clone https://github.com/OpsiClear/gsply.git
cd gsply
pip install -e .[dev]  # Includes pytest, ruff, mypy

Examples

Basic I/O

from gsply import plyread, plywrite, GSData

# Read PLY file
data = plyread("model.ply")
print(f"Loaded {len(data)} Gaussians")

# Object-oriented API
data = GSData.load("model.ply")  # Auto-detects format
data.save("output.ply")  # Uncompressed
data.save("output.ply", compressed=True)  # Compressed

# Unpack to individual arrays
means, scales, quats, opacities, sh0, shN = data.unpack()

# Write with individual arrays
plywrite("output.ply", means, scales, quats, opacities, sh0, shN)

Format Conversion

from gsply import GSData
import numpy as np

# Load PLY file (log-scales, logit-opacities)
data = GSData.load("scene.ply")

# Convert to linear format for easier manipulation
data.denormalize()  # Uses fused kernel (~8-15x faster)

# Modify in linear space
data.opacities = np.clip(data.opacities * 1.2, 0, 1)
data.scales *= 1.1

# Convert back to PLY format before saving
data.normalize()  # Uses fused kernel (~8-15x faster)
data.save("modified.ply")

GPU Acceleration

from gsply import GSTensor, plyread_gpu, plywrite_gpu

# Direct GPU I/O (4-5x faster than CPU decompress + GPU transfer)
gstensor = plyread_gpu("model.compressed.ply", device='cuda')

# Or convert from CPU
data = GSData.load("model.ply")
gstensor = GSTensor.from_gsdata(data, device='cuda')

# Access GPU tensors
positions_gpu = gstensor.means  # torch.Tensor on GPU
colors_gpu = gstensor.sh0        # torch.Tensor on GPU

# Filter on GPU
high_opacity = gstensor[gstensor.opacities > 0.5]

# GPU format conversion
gstensor.denormalize()  # GPU-accelerated

# Write back (GPU compression)
gstensor.save("output.compressed.ply")  # GPU compression by default

Creating from External Data

from gsply import GSData, GSTensor
import numpy as np
import torch

# Create GSData from arrays with format preset
data = GSData.from_arrays(
    means=np.random.randn(1000, 3),
    scales=np.random.rand(1000, 3),
    quats=np.random.randn(1000, 4),
    opacities=np.random.rand(1000),
    sh0=np.random.randn(1000, 3),
    format="linear"  # or "auto", "ply", "rasterizer"
)

# Create GSTensor from tensors
gstensor = GSTensor.from_arrays(
    means=torch.randn(1000, 3),
    scales=torch.rand(1000, 3),
    quats=torch.randn(1000, 4),
    opacities=torch.rand(1000),
    sh0=torch.randn(1000, 3),
    format="linear",
    device="cuda"
)

Data Manipulation

from gsply import GSData

# Slicing and indexing
subset = data[100:200]                    # Slice
first = data[0]                          # Single Gaussian
filtered = data[data.opacities > 0.5]    # Boolean mask

# Concatenation
combined = data1 + data2                 # Pairwise (1.9x faster)
merged = GSData.concatenate([data1, data2, data3])  # Bulk (6.15x faster)

# Optimize for faster operations
data = data.make_contiguous()            # 2-45x speedup for operations

# Copy and modify
bright = data.copy()
bright.sh0 *= 1.5  # Make brighter

In-Memory Compression

from gsply import compress_to_bytes, decompress_from_bytes

# Compress for network transfer or storage
compressed_bytes = compress_to_bytes(data)

# Decompress from bytes
data_restored = decompress_from_bytes(compressed_bytes)

SPZ Format (Niantic)

from gsply import read_spz, write_spz

# Read any SPZ — the container is auto-detected (legacy gzip v1/v2/v3 or NGSP v4
# zstd). Returns a GSData in PLY format, same API as plyread().
data = read_spz("scene.spz")

# Write v3 (gzip, smallest-three quats) — the default
write_spz("out.spz", data)

# Write v4 (NGSP container, per-attribute zstd) — Niantic's modern format, ~3% smaller
write_spz("out_v4.spz", data, version=4)               # zstd_level=12 (default)
write_spz("fast.spz",   data, version=4, zstd_level=9) # ~2.3x faster write, +0.8% size

v4 needs the zstd extra (pip install gsply[spz]); v1–v3 work without it (stdlib gzip, accelerated by isal when present).

SOG Format (Optional)

from gsply import sogread

# Read SOG file - returns GSData (same API as plyread)
data = sogread("model.sog")
positions = data.means
colors = data.sh0

# Read from bytes (in-memory, no disk I/O)
with open("model.sog", "rb") as f:
    sog_bytes = f.read()
data = sogread(sog_bytes)  # Fully in-memory extraction

Performance

Benchmark Summary

Uncompressed Format (400K Gaussians, SH0):

  • Read: 5.7ms (70M Gaussians/sec)
  • Write: 19.3ms (21M Gaussians/sec)

Compressed Format (400K Gaussians, SH0):

  • Read: 8.5ms (47M Gaussians/sec)
  • Write: 15.0ms (27M Gaussians/sec)
  • Size reduction: 71-74%

Peak Performance:

  • Read: 78M Gaussians/sec (1M Gaussians, SH0, uncompressed)
  • Write: 29M Gaussians/sec (100K Gaussians, SH0, compressed)

GPU Transfer (400K Gaussians, RTX 3090 Ti):

  • With _base optimization: 1.99ms (11x faster, single tensor transfer)
  • Without _base: 22.78ms (CPU copy + transfer)

Format Conversion (Fused Kernels):

  • normalize() / denormalize(): ~8-15x faster with parallel Numba kernels
  • Single-pass processing reduces memory overhead

See detailed performance benchmarks for more information.


Format Support

Uncompressed PLY

Standard binary little-endian PLY format:

SH Degree Properties Description
0 14 xyz, f_dc(3), opacity, scales(3), quats(4)
1 23 + 9 f_rest coefficients
2 38 + 24 f_rest coefficients
3 59 + 45 f_rest coefficients

Compressed PLY (PlayCanvas)

Chunk-based quantized format:

  • Automatically saves as .compressed.ply when compressed=True
  • Compression ratio: 71-74% size reduction
  • Compatible with PlayCanvas, SuperSplat, other WebGL viewers
  • Parallel compression/decompression with Numba JIT

SOG Format (Splat Ordering Grid) - Optional

WebP-based texture format for web deployment:

  • Requires gsply[sogs] installation
  • Uses WebP images for efficient storage
  • Codebook-based compression for scales and colors
  • Compatible with PlayCanvas splat-transform
  • Supports both .sog ZIP bundles and folder formats
  • Returns GSData container (same API as plyread())
  • In-memory ZIP extraction: Can read directly from bytes

SPZ (Niantic) - Optional

Niantic SPZ, read + write, both containers:

  • Legacy gzip (v1/v2/v3): one gzip stream; v3 uses smallest-three quaternions
  • NGSP v4: per-attribute zstd streams behind a 32-byte header + table of contents — Niantic's current format, ~3% smaller than gzip
  • Container is auto-detected on read; write_spz(..., version=3) (default, gzip) or version=4 (NGSP/zstd, zstd_level tunable). read_spz/write_spz use the PLY-format GSData API, round-trip with the Niantic reference both directions.
  • Requires gsply[spz] for v4 (zstd); v1–v3 fall back to stdlib gzip

API Reference

Complete API documentation: docs/API_REFERENCE.md

Core I/O

  • plyread(file_path) - Read PLY files (auto-detects format)
  • plywrite(file_path, ...) - Write PLY files
  • read_spz(file_path) - Read Niantic SPZ (gzip v1/v2/v3 or NGSP v4 zstd)
  • write_spz(file_path, data, *, version=3, ...) - Write SPZ (v3 gzip / v4 zstd)
  • detect_format(file_path) - Detect format and SH degree
  • sogread(file_path | bytes) - Read SOG files (optional)

GSData Container

  • GSData.load(file_path) - Load from PLY (classmethod)
  • data.save(file_path, compressed=False) - Save to PLY
  • GSData.from_arrays(...) - Create from arrays with format preset
  • GSData.from_dict(...) - Create from dictionary with format preset
  • data.normalize() / data.denormalize() - Format conversion (fused kernels, ~8-15x faster)
  • data.to_rgb() / data.to_sh() - Color conversion
  • Format query: is_scales_ply, is_scales_linear, is_opacities_ply, is_opacities_linear, is_sh0_sh, is_sh0_rgb, is_sh_order_0/1/2/3
  • data[index] - Indexing and slicing
  • data.unpack() - Unpack to tuple
  • data.copy() - Deep copy

Compression APIs

  • compress_to_bytes(data) - Compress to bytes
  • compress_to_arrays(data) - Compress to arrays
  • decompress_from_bytes(bytes) - Decompress from bytes

Utility Functions

  • sh2rgb(sh) / rgb2sh(rgb) - Color conversion
  • logit(x) / sigmoid(x) - Optimized CPU functions
  • apply_pre_activations(data, ...) - Fused activation kernel (~8-15x faster)
  • apply_pre_deactivations(data, ...) - Fused deactivation kernel (~8-15x faster)
  • SH_C0 - Normalization constant

GPU Support (PyTorch)

  • GSTensor.load(file_path, device='cuda') - Load from PLY (classmethod)
  • gstensor.save(file_path, compressed=True) - Save with GPU compression
  • GSTensor.from_arrays(...) - Create from tensors with format preset
  • GSTensor.from_gsdata(data, device='cuda') - Convert to GPU
  • gstensor.to_gsdata() - Convert to CPU
  • gstensor.normalize() / gstensor.denormalize() - GPU format conversion
  • gstensor.to_rgb() / gstensor.to_sh() - GPU color conversion
  • Format query: is_scales_ply, is_scales_linear, is_opacities_ply, is_opacities_linear, is_sh0_sh, is_sh0_rgb, is_sh_order_0/1/2/3
  • Device management: .to(), .cpu(), .cuda()
  • Precision: .half(), .float(), .double()

What's New

v0.2.11 - GPU Compression Optimization

  • torch.compile() Auto-Optimization: GPU compression now uses torch.compile() when available
    • ~25% faster GPU compression (5.0ms → 4.0ms for 365K Gaussians)
    • Automatic fallback to eager mode if compilation fails
    • Zero configuration required - works transparently
  • GPU Rounding Fix: Fixed quaternion quantization to match CPU behavior exactly
  • Platform Support: Triton backend on Linux (standard), Windows (requires triton-windows package)

v0.2.9 - Protocol Interfaces & Performance Optimization

  • Protocol Interfaces: Type-safe interfaces for format management
    • FormatAware - Protocol for objects that track format state
    • Normalizable - Protocol for objects that support format conversion
    • GaussianContainer - Protocol for objects containing Gaussian splat data
    • Enables structural typing across GSData and GSTensor
  • Format Management API: Advanced format control methods
    • format_state property - Returns current format as immutable dictionary
    • copy_format_from(other) - Copy format state from another object
    • with_format(**kwargs) - Create shallow copy with modified format
  • Performance Optimizations: Improved efficiency for common operations
    • Removed auto-consolidate overhead in plywrite() - users can call make_contiguous() manually when needed
    • In-place format conversion now default (inplace=True) - reduces memory allocations
    • Better performance for already-contiguous data

v0.2.8 - Format Query Properties

  • Format Query Properties: Convenient boolean properties to check current data format
    • is_scales_ply, is_scales_linear - Check scale format
    • is_opacities_ply, is_opacities_linear - Check opacity format
    • is_sh0_sh, is_sh0_rgb - Check color format
    • is_sh_order_0/1/2/3 - Check SH degree
    • Available on both GSData and GSTensor

v0.2.7 - Fused Activation Kernels & Performance Optimization

  • Fused Activation Kernels: Ultra-fast format conversion with parallel Numba kernels
    • apply_pre_activations() - Fused kernel for activating scales, opacities, and quaternions (~8-15x faster)
    • apply_pre_deactivations() - Fused kernel for deactivating scales and opacities (~8-15x faster)
    • normalize() and denormalize() now use optimized fused kernels internally
    • Single-pass processing reduces memory overhead and improves cache locality

v0.2.6 - Format Safety & Auto-detection

  • Convenience Factory Methods: GSData.from_arrays(), GSData.from_dict(), GSTensor.from_arrays(), GSTensor.from_dict()
  • Auto-Format Detection: Smart heuristics automatically detect PLY vs Linear format
  • Format Safety: Strict validation prevents mixing incompatible formats
  • Format Helpers: create_ply_format(), create_rasterizer_format()

v0.2.5 - SOG Format Support & API Improvements

  • SOG Format Support: sogread() - Read SOG (Splat Ordering Grid) format files
  • Object-Oriented I/O API: data.save(), GSData.load(), gstensor.save(), GSTensor.load()
  • Format Conversion API: normalize(), denormalize() for linear ↔ PLY format conversion
  • Color Conversion API: to_rgb(), to_sh() for SH ↔ RGB conversion

Full ChangelogAPI Reference


Development

Setup

# Clone repository
git clone https://github.com/OpsiClear/gsply.git
cd gsply

# Install in development mode
pip install -e .[dev]

# Run tests
pytest tests/ -v

# Run with coverage
pytest tests/ -v --cov=gsply --cov-report=html

Project Structure

gsply/
├── src/gsply/          # Source code
│   ├── __init__.py     # Public API exports and lazy optional imports
│   ├── _backend.py     # Optional gsply_cpp backend selection
│   ├── gsdata.py       # GSData dataclass
│   ├── reader.py       # PLY reading
│   ├── writer.py       # PLY writing
│   ├── spz.py          # Niantic SPZ reading/writing
│   ├── sog_reader.py   # SOG reading
│   ├── formats.py      # Format detection
│   ├── utils.py        # Utility functions (fused kernels)
│   └── torch/          # PyTorch integration
│       ├── gstensor.py # GSTensor GPU dataclass
│       ├── compression.py
│       └── io.py       # GPU I/O
├── cpp/                # Bundled C++ acceleration backend source
├── tests/              # Unit tests (448 collected)
├── benchmarks/         # Performance benchmarks
├── docs/               # Documentation
└── pyproject.toml      # Package configuration

Testing

gsply has comprehensive test coverage with 426 passed, 22 skipped, 448 collected in the latest local verification:

# Run all tests
pytest tests/ -v

# Run PyTorch tests (requires torch)
pytest tests/ -v -k "torch or gstensor"

# Run with coverage
pytest tests/ -v --cov=gsply --cov-report=html

Benchmarking

# Install benchmark dependencies
pip install -e .[benchmark]

# Run benchmark
python benchmarks/benchmark.py

Documentation


Contributing

Contributions are welcome! Please see docs/CONTRIBUTING.md for guidelines.

Quick start:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Run tests: pytest tests/ -v
  5. Submit a pull request

License

MIT License - see LICENSE file for details.


Citation

If you use gsply in your research, please cite:

@software{gsply2024,
  author = {OpsiClear},
  title = {gsply: Ultra-Fast Gaussian Splatting PLY I/O},
  year = {2024},
  url = {https://github.com/OpsiClear/gsply}
}

Related Projects

  • gsplat: CUDA-accelerated Gaussian Splatting rasterizer
  • nerfstudio: NeRF training framework with Gaussian Splatting support
  • PlayCanvas SuperSplat: Web-based Gaussian Splatting viewer
  • 3D Gaussian Splatting: Original paper and implementation

Made with Python and numpy

Report BugRequest FeatureDocumentation

Project details


Download files

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

Source Distribution

gsply-0.4.2.tar.gz (312.1 kB view details)

Uploaded Source

Built Distributions

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

gsply-0.4.2-cp313-cp313-win_amd64.whl (404.1 kB view details)

Uploaded CPython 3.13Windows x86-64

gsply-0.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (733.0 kB view details)

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

gsply-0.4.2-cp313-cp313-macosx_11_0_arm64.whl (419.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gsply-0.4.2-cp312-cp312-win_amd64.whl (404.1 kB view details)

Uploaded CPython 3.12Windows x86-64

gsply-0.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (733.0 kB view details)

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

gsply-0.4.2-cp312-cp312-macosx_11_0_arm64.whl (419.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gsply-0.4.2-cp311-cp311-win_amd64.whl (404.1 kB view details)

Uploaded CPython 3.11Windows x86-64

gsply-0.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (733.4 kB view details)

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

gsply-0.4.2-cp311-cp311-macosx_11_0_arm64.whl (419.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gsply-0.4.2-cp310-cp310-win_amd64.whl (404.2 kB view details)

Uploaded CPython 3.10Windows x86-64

gsply-0.4.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (733.4 kB view details)

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

gsply-0.4.2-cp310-cp310-macosx_11_0_arm64.whl (419.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file gsply-0.4.2.tar.gz.

File metadata

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

File hashes

Hashes for gsply-0.4.2.tar.gz
Algorithm Hash digest
SHA256 774277fc4e2802f52efb7d54165f85c53d07a529c99dfd8364b59653cbc9cce5
MD5 c464d82cc13e0209c1301329b1913163
BLAKE2b-256 7ebec26f74b3bda82bc98b5aa5d4efc87a362ba6ac52a9582fcd7a2c66a919f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2.tar.gz:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: gsply-0.4.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 404.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gsply-0.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ddb36499db17b0774c8286580461793549c2aeb1e744824aac898fa06624d7c0
MD5 7f3734755a21f5c0bbd198274261212d
BLAKE2b-256 eb72ba9c13d41b63ed5b7b7f973d2a6493afe29fe97b8e3041d84f3bb62c6d27

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c0bbcb90acd57bed8b97a3b9046bbcf9f3748acd033f34b418ffc5ff7e75dcb
MD5 a2bfa9b442d80182e9097f0cc10bb89e
BLAKE2b-256 ab98750e7ab627cd2a10972f76a228f391ff11976a07d051961ddb9c75a7e698

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84b871189b82d62ca46e806c47fab5fd377654e2bb1cd8d34aa191f9e474bfbd
MD5 9b20fecf37c60e4b4ca6fbfe4d501a4f
BLAKE2b-256 2ea3dce2e9525430e48fd7bb6f7a04de5cc516121d68f21ac5fb13b8c23cc5d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: gsply-0.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 404.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gsply-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f619583ebf8b8388e976a9266c300c78e6da3c3aad07996a43e205c917d03a0f
MD5 8c748c39d232cf2539250312e289fc25
BLAKE2b-256 30bee6b1f9833ca833d04369f825c63e975600deda83a90333f93a393d6a5b3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab885ee7e4a92311bc234caa9622b914037ca4f04c0a9e6ca9ee3e10ef2ab7fa
MD5 8d5f10bb45f7d9576f7cfd41139b335e
BLAKE2b-256 7deddb3310de15ac349e64194f275742f9d9e4344925d34e820a4b6ee3eaa056

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c056894c300ea5392ec75a38f9a58b1070dfc962e1b74489c2226c7f04509bed
MD5 79ee95d844755b239b2cdd6a01a46a39
BLAKE2b-256 5939221c44f2fc9d9bc2799c4762999bf3a344cac86728bc2a69de77553543ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: gsply-0.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 404.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gsply-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f1af0ee7ff6327525177df136e5efd2ccdbec61ff42069ae37501d9e47a9eb1c
MD5 52fc3c92f9ac1e81d284cf8b24298b79
BLAKE2b-256 eb46141ad6141e03167560c6189161ddb36d4d41d5f92b7bee4887f506150b80

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0daa332a58c953b9358cd1f565bc2c51b2313da5eeb0045cfff85028f38b0c60
MD5 0dfcc0cee24e192911e0d82ab1663a8c
BLAKE2b-256 0624e65e6eda304ee8ae418c249b7ced148d4d23a1c38299db709ce904940ce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d76932aadd3a6e97afb87baed8f73bdc7a46556a118adfeb7dee98787d448b6
MD5 97de11ae4a05b3f0b671f96364e5b0d5
BLAKE2b-256 6cba7ee09c55111e9b2e987206b61c0b25f2ed771c289232b63e625557f712bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: gsply-0.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 404.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gsply-0.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 69ed4b2757274df938928bc2ac544292c23519e4ad04cb5c4e086705abc61e27
MD5 435f08a28b3b273308f1aa8e63011b50
BLAKE2b-256 c0560785506dc9c8b080a6ebc28f746aee1671c9304acb3f5a71ccc0d14b1c8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d186edc5fc7b57de7c591cdfbe0541aab513e7e5be8818b62f19a1e8b66fb849
MD5 cfaed4d663778843d300b310b97925e0
BLAKE2b-256 171461d7fd0133fa734a66dc1cd69c94d1212f92ede3be4b400ec1c9a4d40a83

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

File details

Details for the file gsply-0.4.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gsply-0.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 609140fe1107de4225278c7500a835245b2b3aa0dbeeb602788fe8f3f26681b7
MD5 d803fb79a29689fd6c4e7928f46c8509
BLAKE2b-256 d1d4543075357d6a3cc51c17ac4b2700d05e30b504b34ab213a1d6a71d650f5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsply-0.4.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on OpsiClear/gsply

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

Supported by

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