Skip to main content

A fast reader for SLD Jazelle files.

Project description

Jazelle Reader

Publish to PyPI PyPI version PyPI - Python Version PyPI - Downloads GitHub license

A modern, high-performance Python reader for SLD Jazelle files with multi-threaded parallel processing and conversion to modern data formats.

Jazelle reader resurrects legacy particle physics data from the Stanford Linear Collider Detector (SLD) experiment by translating the original java-based Jazelle format reader into a modern, efficient C++20 implementation with seamless Python integration. Built for performance and usability, it enables researchers to work with decades-old experimental data using contemporary analysis tools and workflows.

๐ŸŽฏ Motivation

The Stanford Linear Collider Detector (SLD) at SLAC produced invaluable particle physics data in a custom binary format called "Jazelle" during its operational years. As part of an effort to resurrect old experiments via LLM agents, we need to make this historical data accessible in modern formats like HDF5, Parquet, and Awkward Arrays for contemporary analysis pipelines.

The original Jazelle reader was written in Fortran (later translated to Java, see repository from Tony Johnson), posing challenges for integration with modern Python-based physics analysis ecosystems. This project bridges that gap by:

  • Modernizing the codebase: Complete rewrite in C++20 with modern best practices
  • Maximizing performance: Multi-threaded parallel processing with lock-free queues
  • Enabling interoperability: Native Python bindings via Cython for seamless integration
  • Supporting modern formats: Direct conversion to HDF5, Parquet, Feather, and more
  • Preserving data integrity: Faithful implementation of the original Jazelle format specification
  • Production-ready infrastructure: CI/CD pipeline with automated testing, benchmarking, and multi-platform wheel building

โœจ Key Features

๐Ÿš€ High Performance

  • Modern C++20 core with optimized binary I/O and VAX floating-point conversion
  • Multi-threaded parallel reading with configurable thread pools
  • Efficient batching system achieving high throughput at moderate batch sizes
  • Memory-efficient streaming for processing files larger than available RAM
  • Lock-free queues for thread-safe parallel event processing

๐Ÿ”„ Format Conversion

  • HDF5: Industry-standard hierarchical data format with compression
  • Parquet: Columnar storage for efficient analytics
  • Feather: Fast binary format for data frames
  • JSON: Human-readable interchange format
  • NumPy arrays: Direct memory mapping for analysis
  • Awkward Arrays: Jagged array support for variable-length data

๐Ÿ Pythonic API

  • Clean, intuitive interface following Python best practices
  • Rich display system with HTML rendering in Jupyter notebooks
  • Iterator protocol support for memory-efficient sequential processing
  • Random access with intuitive indexing: file[42]
  • Context managers for automatic resource cleanup
  • Type hints for better IDE support

๐Ÿ› ๏ธ Command-Line Interface

Powerful CLI tool accessible via jazelle command:

  • inspect: View file metadata and statistics
  • read: Examine specific events with wildcard filtering
  • convert: Multi-threaded export to modern formats

๐Ÿ”ง Modern Development Infrastructure

  • CI/CD Pipeline: Automated testing and deployment via GitHub Actions
  • Multi-platform Wheels: Pre-built binaries for Linux, macOS, and Windows
  • Comprehensive Testing: Unit tests for both C++ and Python codebases
  • Performance Benchmarks: Automated benchmarking suite for regression testing
  • Type Safety: Full type hints for Python API
  • Documentation: Inline docstrings and tutorial notebooks

๐Ÿ“Š Advanced Features

  • Comprehensive display system: HTML and ASCII rendering for events and families
  • Event slicing: Extract subsets with start and count parameters
  • Family filtering: Select specific detector banks for analysis
  • Flexible compression: Customizable compression levels for output formats

๐Ÿ“ฆ Installation

Quick Install from PyPI

pip install jazelle

With Optional Dependencies

# For HDF5 support
pip install jazelle h5py

# For Parquet support
pip install jazelle pyarrow

# For Awkward array support
pip install jazelle awkward

# For all format support
pip install jazelle h5py pyarrow awkward

From Source

Note: Building from source requires a C++20 compatible compiler (GCC โ‰ฅ 10, Clang โ‰ฅ 11, MSVC โ‰ฅ 19.29).

git clone https://github.com/AlkaidCheng/jazelle_reader.git
cd jazelle_reader
pip install -e .

Requirements

  • Python: โ‰ฅ 3.8
  • NumPy: โ‰ฅ 1.20
  • Optional: h5py (HDF5), pyarrow (Parquet), awkward (analysis)

For source builds only:

  • C++ Compiler: C++20 compatible (GCC โ‰ฅ 10, Clang โ‰ฅ 11, MSVC โ‰ฅ 19.29)

๐Ÿš€ Quick Start

Basic Reading

import jazelle

# Open a Jazelle file
with jazelle.open(filepath) as f:
    # Get file information
    print(f"Total events: {len(f)}")
    
    # Read first event
    event = f.read()
    print(f"Run: {event.ieventh.run}, Event: {event.ieventh.event}")
    
    # Access physics summary
    if event.phpsum.size > 0:
        print(f"  Particle charge: {event.phpsum[0].charge}")
        print(f"  Particle x-position: {event.phpsum[0].x:.3f}")
        print(f"  Particle momentum: {event.phpsum[0].getPTot()}")

Parallel Processing

# Read all events with multi-threading
with jazelle.open('data.jazelle') as f:
    events = f.read_batch(num_threads=8)
    print(f"Read {len(events)} events")

# Process in batches (memory efficient for large files)
with jazelle.open('data.jazelle') as f:
    for batch in f.iterate(batch_size=1000, num_threads=8):
        # Analyze batch
        total_charged = sum(len(evt.phchrg) for evt in batch)
        total_clusters = sum(len(evt.phklus) for evt in batch)
        print(f"Batch: {total_charged} charged tracks, {total_clusters} clusters")

Convert to Modern Formats

# Convert to HDF5
with jazelle.open('input.jazelle') as f:
    f.to_hdf5('output.h5', num_threads=8, compression='gzip', compression_opts=4)

# Convert to Parquet (fastest for analytics)
with jazelle.open('input.jazelle') as f:
    f.to_parquet('output.parquet', num_threads=8)

# Convert to Feather (fast binary format)
with jazelle.open('input.jazelle') as f:
    f.to_feather('output.feather', num_threads=8)

# Convert specific event range
with jazelle.open('input.jazelle') as f:
    f.to_hdf5('output.h5', start=0, count=1000, num_threads=16)

NumPy and Awkward Arrays

# Get data as flat NumPy arrays
with jazelle.open('data.jazelle') as f:
    data = f.to_dict()
    
    # Access PHCHRG (particle tracks) data as structured arrays
    charges = data['PHCHRG']['charge']  # 1D array
    charged_particles = data['PHCHRG']['hlxpar']       # 2D array (N, 6)
    pT  = 1 / data['PHCHRG']['hlxpar'][:, 1]
    nhits = data['PHCHRG']['nhit']      # Number of hits per track
    
    print(f"Total charged particles: {len(charges)}")
    print(f"Mean momentum magnitude: {pT.mean():.2f} GeV")
    pT_split_events = np.split(pT, data['PHCHRG']['_offsets'][1:-1])
    pT_mean_event = np.mean([np.sum(pT_event) for pT_event in pT_split_events])
    print(f"Mean of total momentum per event: {pT_mean_event:.2f} GeV")

# Get data as Awkward Arrays (for jagged data)
with jazelle.open('data.jazelle') as f:
    arrays = f.to_arrays()
    
    # Awkward arrays handle variable-length data naturally
    n_charged = ak.num(arrays['PHCHRG']['charge'])
    print(f"Events with >10 charged tracks: {ak.sum(n_charged > 10)}")

Random Access and Slicing

with jazelle.open('data.jazelle') as f:
    # Access specific event
    event = f[42]
    
    # Slice notation
    first_100 = f.read_parallel(start=0, count=100)
    
    # Last 50 events
    last_50 = f.read_parallel(start=len(f)-50, count=50)

๐Ÿ–ฅ๏ธ Command-Line Interface

Inspect File Metadata

# Show file summary with first 10 events
jazelle inspect data.jazelle

# Show first 20 events
jazelle inspect data.jazelle --lines 20

# Show last 5 events
jazelle inspect data.jazelle --lines 5 --tail

# Show specific bank counts in table
jazelle inspect data.jazelle --banks PHPSUM PHCHRG PHKLUS

# Use wildcard patterns for banks
jazelle inspect data.jazelle --banks "PH*"

Read and Display Events

# Read first event (index 0)
jazelle read data.jazelle

# Read specific event by index
jazelle read data.jazelle --index 42

# Read last event (negative indexing)
jazelle read data.jazelle --index -1

# Show specific bank families
jazelle read data.jazelle --index 0 --banks PHPSUM PHCHRG

# Use wildcard patterns
jazelle read data.jazelle --index 0 --banks "PH*"

# Limit output lines
jazelle read data.jazelle --index 0 --limit 100 --banks "*"

# Customize display
jazelle read data.jazelle --index 0  --banks "*" --display-options "max_rows=20,float_precision=2"

Convert Formats

# Convert to HDF5 (format inferred from extension)
jazelle convert -i data.jazelle -o output.h5 --threads 8

# Convert to Parquet
jazelle convert -i data.jazelle -o output.parquet --threads 8

# Convert to JSON
jazelle convert -i data.jazelle -o output.json

# Convert specific event range
jazelle convert -i data.jazelle -o output.h5 --start 100 --count 1000

# Optimize batch size for memory usage
jazelle convert -i data.jazelle -o output.h5 --batch-size 2000 --threads 16

# Convert all events (default)
jazelle convert -i data.jazelle -o output.parquet --threads 8

๐Ÿ“Š Performance Benchmarks

Benchmarks performed on a 16-core workstation with a 9,994-event Jazelle file (~130 MB).

Batch Size Impact (8 threads)

Batch Size Throughput (kHz) Speedup vs. Single
1 0.49 1.0ร—
100 31.26 63.3ร—
500 48.06 97.4ร—
1000 49.13 99.6ร—
5000 40.02 81.1ร—
9994 (all) 52.59 106.6ร—

Optimal batch size: 1000 events provides the best balance of throughput and memory usage.

Threading Scalability (batch size 1000)

Threads Throughput (kHz) Speedup vs. Single Thread
1 26.92 1.0ร—
2 42.14 1.57ร—
4 57.76 2.15ร—
8 67.43 2.50ร—
16 45.79 1.70ร—
32+ ~40-45 ~1.5-1.7ร—

Optimal thread count: 8 threads on this system. Performance degrades beyond this due to overhead and resource contention.

Format Conversion Performance

Format Throughput (kHz) Mean Time (s) Use Case
Iteration (Batched) 74.98 0.133 Internal processing
Iteration (Sequential) 63.75 0.157 Simple loops
Awkward Array 38.84 0.257 Jagged data analysis
To Dict (NumPy) 29.29 0.341 Array-based analysis
Feather 29.57 0.338 Fast binary I/O
Parquet 10.02 0.998 Columnar analytics
HDF5 3.65 2.736 Hierarchical data
JSON 0.28 35.24 Human-readable export

Key Insight: Parquet provides the best balance of performance and analytics capability, while JSON should only be used for small datasets or human inspection.

๐Ÿ—๏ธ Architecture

Design Philosophy

Jazelle_reader follows a layered architecture that separates concerns and maximizes performance:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Python User API                        โ”‚
โ”‚  (JazelleFile, events, families, display, streaming)        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                      Cython Bindings                        โ”‚
โ”‚  (Type conversion, memory management, GIL handling)         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  C++20 Core Engine                          โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  JazelleFile: File management & parallel reading    โ”‚   โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค   โ”‚
โ”‚  โ”‚  JazelleEvent: Event container & bank access        โ”‚   โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค   โ”‚
โ”‚  โ”‚  Family<T>: Type-safe bank management               โ”‚   โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค   โ”‚
โ”‚  โ”‚  Banks: IEVENTH, MCPART, PHCHRG, ...               โ”‚   โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค   โ”‚
โ”‚  โ”‚  JazelleStream: Binary I/O & VAX conversion         โ”‚   โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค   โ”‚
โ”‚  โ”‚  Threading: Lock-free queues, thread pools          โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Components

1. C++ Core Engine

  • JazelleFile: Main interface for file operations, handles multi-threading
  • JazelleEvent: Event container with lazy bank loading
  • JazelleStream: Low-level binary I/O with VAX floating-point support
  • Family: Template-based bank manager for type safety
  • Bank Classes: Concrete implementations (IEVENTH, MCPART, PHCHRG, etc.)

2. Python Bindings

  • Cython wrapper: Zero-copy data transfer where possible
  • Memory management: Automatic cleanup with context managers
  • NumPy integration: Direct buffer access for efficiency
  • Display system: Rich HTML and ASCII rendering

3. Format Streamers

  • Modular design: Each format has dedicated read/write streamer
  • Interoperability: Seamless conversion between formats
  • Optimization: Format-specific optimizations (e.g., columnar for Parquet)

Data Flow

Jazelle Binary File
       โ”‚
       โ”œโ”€โ†’ [C++ JazelleStream] โ”€โ†’ Binary parsing
       โ”‚                           VAX float conversion
       โ”‚
       โ”œโ”€โ†’ [C++ JazelleEvent] โ”€โ†’ Event construction
       โ”‚                          Bank instantiation
       โ”‚
       โ”œโ”€โ†’ [Cython Bindings] โ”€โ†’ Python object wrapping
       โ”‚                         Memory views
       โ”‚
       โ””โ”€โ†’ [Python API] โ”€โ†’ NumPy arrays
                          Awkward arrays
                          Pandas DataFrames
                          HDF5/Parquet/Feather

๐Ÿ“š Data Structure

Jazelle Format Overview

Jazelle files store event data in a binary format with logical and physical records:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Jazelle File                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Physical Record 1: [Header] [Logical Records...]       โ”‚
โ”‚  Physical Record 2: [Header] [Logical Records...]       โ”‚
โ”‚  ...                                                     โ”‚
โ”‚  Physical Record N: [Header] [Logical Records...]       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Each Event contains multiple Banks organized by Family:

Event
โ”œโ”€โ”€ IEVENTH (Event Header)
โ”‚   โ”œโ”€โ”€ run number
โ”‚   โ”œโ”€โ”€ event number
โ”‚   โ”œโ”€โ”€ timestamp
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ PHPSUM (Physics Summary)
โ”‚   โ”œโ”€โ”€ ncharged (# charged tracks)
โ”‚   โ”œโ”€โ”€ nneutral (# neutral particles)
โ”‚   โ”œโ”€โ”€ thrust (event shape)
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ MCPART (Monte Carlo Particles - may be empty)
โ”‚   โ”œโ”€โ”€ Particle 1: {ptype, e, p[3], ...}
โ”‚   โ”œโ”€โ”€ Particle 2: {ptype, e, p[3], ...}
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ PHCHRG (Charged Tracks)
โ”‚   โ”œโ”€โ”€ Track 1: {charge, nhit, p[3], ...}
โ”‚   โ”œโ”€โ”€ Track 2: {charge, nhit, p[3], ...}
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ PHKLUS (Calorimeter Clusters)
โ”‚   โ”œโ”€โ”€ Cluster 1: {energy, position[3], ...}
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ””โ”€โ”€ ... (other detector banks)

Available Bank Families

Family Description Key Fields
IEVENTH Event header run, event, evttime
PHPSUM Particle summary ncharged, nneutral, thrust, evis
MCHEAD Monte Carlo header weight, sqrts, ...
MCPART MC particles ptype, e, p[3], origin[3]
PHCHRG Charged tracks charge, nhit, hlxpar[6], dhlxpar[15]
PHKLUS Calorimeter clusters eraw, cth, elayer[8]
PHWIC Warm iron calorimeter nhit, t1, t2, t3
PHKTRK NOT USED --
PHCRID Cherenkov ring imaging norm, rc, geom
PHKELID Calorimeter/Electron ID prob, phi, theta

Rich Display System

# Display in Jupyter notebooks
with JazelleFile('data.jazelle') as f:
    # Show file summary (HTML in Jupyter)
    f.info()
    
    # Show first 5 events in table
    f.display(start=0, count=5)
    
    # Show last 3 events
    total = len(f)
    f.display(start=total-3, count=3)
    
    # Display single event (HTML rendering)
    event = f[0]
    display(event)  # Rich HTML table (Inside Jupyter notebook)
    
    # Display specific family
    display(event.phchrg)
    
    # ASCII display for terminals
    print(event)
    
    # Customize display options globally
    import jazelle
    jazelle.set_display_options(max_rows=20, float_precision=3)

๐Ÿงช Testing

The package includes comprehensive test suites:

C++ Tests

  • Binary I/O operations
  • VAX floating-point conversion
  • Event parsing
  • Bank instantiation

Python Tests

  • Basic file reading
  • Parallel processing
  • Format conversion (HDF5, Parquet, Feather, JSON)
  • Display system
  • CLI commands

Run tests with:

# Python tests
pytest tests/python/test_core.py
pytest tests/python/test_streamers.py
pytest tests/python/test_display.py
pytest tests/python/test_cli.py

# C++ tests (if built from source)
mkdir build && cd build
cmake -DBUILD_TESTS=ON ..
cmake --build .
ctest --output-on-failure

๐Ÿ“– Documentation

  • Tutorial Notebook: examples/T01_quickstart_jazelle.ipynb - Comprehensive beginner's guide
  • API Reference: Full API documentation available in docstrings
  • Benchmark Scripts: benchmarks/ - Performance testing code
  • Example Scripts: examples/ - Usage examples

๐Ÿค Contributing

Contributions are welcome! This project is part of a larger effort to preserve and modernize legacy experimental physics data.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite (pytest tests/)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

Code Style

  • C++: Follow modern C++20 practices, use clang-format
  • Python: Follow PEP 8
  • Documentation: Add docstrings for all public APIs

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Tony Johnson: Original Java implementation of the Jazelle reader
  • SLD Collaboration: For the Jazelle format specification and experimental data
  • SLAC National Accelerator Laboratory: For the SLD experiment and continued support of data preservation efforts

๐Ÿ“ž Support

๐Ÿ“š Citation

If you use this package in your research, please cite:

@software{jazelle_reader,
  author = {Cheng, Alkaid},
  title = {jazelle\_reader: A Modern Python Reader for SLD Jazelle Files},
  year = {2025},
  url = {https://github.com/AlkaidCheng/jazelle_reader},
  note = {High-performance C++20 implementation with Python bindings for
          legacy particle physics data analysis}
}

Built with โค๏ธ for the particle physics community

Preserving the past, empowering the future

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

jazelle-0.2.0-cp312-cp312-win_amd64.whl (353.9 kB view details)

Uploaded CPython 3.12Windows x86-64

jazelle-0.2.0-cp312-cp312-win32.whl (300.0 kB view details)

Uploaded CPython 3.12Windows x86

jazelle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (520.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

jazelle-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (524.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

jazelle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (349.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

jazelle-0.2.0-cp311-cp311-win_amd64.whl (381.5 kB view details)

Uploaded CPython 3.11Windows x86-64

jazelle-0.2.0-cp311-cp311-win32.whl (325.2 kB view details)

Uploaded CPython 3.11Windows x86

jazelle-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (548.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

jazelle-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (548.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

jazelle-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (358.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

jazelle-0.2.0-cp310-cp310-win_amd64.whl (382.0 kB view details)

Uploaded CPython 3.10Windows x86-64

jazelle-0.2.0-cp310-cp310-win32.whl (326.6 kB view details)

Uploaded CPython 3.10Windows x86

jazelle-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (555.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

jazelle-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (561.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

jazelle-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (362.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

jazelle-0.2.0-cp39-cp39-win_amd64.whl (383.3 kB view details)

Uploaded CPython 3.9Windows x86-64

jazelle-0.2.0-cp39-cp39-win32.whl (327.0 kB view details)

Uploaded CPython 3.9Windows x86

jazelle-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (555.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

jazelle-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (561.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

jazelle-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (363.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

jazelle-0.2.0-cp38-cp38-win_amd64.whl (388.0 kB view details)

Uploaded CPython 3.8Windows x86-64

jazelle-0.2.0-cp38-cp38-win32.whl (336.1 kB view details)

Uploaded CPython 3.8Windows x86

jazelle-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (560.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

jazelle-0.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (563.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

jazelle-0.2.0-cp38-cp38-macosx_11_0_arm64.whl (372.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file jazelle-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 353.9 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 jazelle-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d97c1a86bc1ae56b95c546534203ac58233c182417335de6e499ce1968e1f60e
MD5 e22c3e3695b29b80c8ebdaef52a1fe7f
BLAKE2b-256 793658e4a09b2f715fba54753303f27e691cf1f1f8176097bf37cfb33ed7781b

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 300.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 152e246433e229fe8847ccc8641757e92490fa35393ea611662cf417c34658e2
MD5 e7b4350dbf51e4a6c370c463aeeb806f
BLAKE2b-256 5e1179bf6779a109199c53c1d81b1c2e6502dcf7dd2c912528526fe9b0693865

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp312-cp312-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16e966783a97d9137a3295bae12acec5c6b4dd901c1f8776663ea1d6d14fc3c5
MD5 9ff962447b1f7cbd6876adb9b0f520ef
BLAKE2b-256 3b245745980276c29ad3cfe24646909663c3f797f8663de872df72fe7376ffa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 39de227ec5b1e6627a84bfc91b123b3e13c66b20c415826196e4a9879042637f
MD5 79ed1e9c02c1bea07a3aadc94b1c88e7
BLAKE2b-256 8392608eaccb8f05a2233f2131a1a2cc14dba9a0b6c1c54b22b2f95f7699cc8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0da6ae7a8b1c8be53de628e2a28888dfe9870caf24f27a116109ded92be54694
MD5 43e5b908b4a3cd0e290581d7271fc8fa
BLAKE2b-256 a2b51a7cf61bfbdb07970b59255919d20b9ad01c0cc527efc901a44325a4e3de

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 381.5 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 jazelle-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a8a9d5e620261e1a49faf0cf9a4f1fb8f7a365f1ba20fa495a0c190412799288
MD5 0412dd4e53c2b17a38c35a3f558fa036
BLAKE2b-256 86b7ea402b38167ac9868501c802c26cdb04e74bcdb9d05c68fb15dd8099dd77

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 325.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 9470f13867fde13588984713d22fdd104c28f5b69bf86bfff5e3eed94a59f56e
MD5 694e5e625344e3aa0896ac09fa27a034
BLAKE2b-256 449155e932bde105e7cbe19609f25835bffbae57a0d615744257db132d7e62dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp311-cp311-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b410c2532cdd5f31e63a021a48658acf39a3f5188ce69767297bd914015e9b7f
MD5 f934c0f8726bc6f935289f7e0143fd38
BLAKE2b-256 43a599db8980529ea749d924f55f7a43e6c211cc48cb45569195fea8e48feb8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0089279b0167d34bf10f484b835ea7a77d200ac69625a842c55f9f91c26c9905
MD5 4a98304d433f1ef393f17fdf08e018c1
BLAKE2b-256 fac4301e57f4df89488ad010fabdfdc204e514018107205b02e21ee291d05754

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e080e936e70efc384dfd457c715783012022163af15cd7cac5c0baabdf52f216
MD5 7ffe358f38de9315e3e32814d2fe10b5
BLAKE2b-256 7f3a12a72f272a952c075b3eebb93ce242cab71d924ed976be55b737853424e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 382.0 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 jazelle-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9f5eddd270979c7787f49ed2e2ca52bbfeb5993ce3b764e78aa429cb2fc8a2ff
MD5 e4429088203ac87d478ca37b72d42fdf
BLAKE2b-256 52ce9bde126a202be5ffbc15f8ebf29a0300caa97c9158e55a04a6a3dd6adc01

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 326.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 9e46a9bea304f05db1e07424b3c1c3563c611cb25aefe312b745a3b41cf5cb10
MD5 05715a32ab9724f9a16c4dc5a87ef3d3
BLAKE2b-256 3c8e57f8c72ddf7df4ffd72fb054ae542a176d6587a45e71148e9ed6b0a142c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp310-cp310-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 636d413da8ac86f74ae8b37eb1ffeb888afe8d61a0fdb55ed821c372168c5af7
MD5 fdef0490e5bf794edf7d586bb5f3de7e
BLAKE2b-256 e26d99b9537faa52c56329a02b30454106f8034f18de9d7ba7274f3ff70c455c

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 00a06b78996ab812d28b8d1b9926bc14b3e0e556f05e3238f71893706f00e101
MD5 14a58503ff27048c1f18feb9bc1ea446
BLAKE2b-256 7f4478b17a5f17485d053085ffbaa5206a7b242adaf7e660c5acc74e874bb786

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be3b676ecb8486f6f197f22773be84b1e9bdc047b24d26d0607122d4ccb244ef
MD5 9dec40d2fa83009b5ede89cf47728258
BLAKE2b-256 98e567cdabf4feb8ccf9cc80adbd7a8467202597c83241e3e597ba739a45a979

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 383.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a8ca5a29250af3fd010f372720d1ac79331fcabfe0af0a8f6c7e839917134462
MD5 8c3bf974eb0196d0765b8da818175f66
BLAKE2b-256 abd61002a56b14ee35a1e3345860995f54981c004e0391facaab08bd9e6327c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp39-cp39-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 327.0 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 42e1d7e5dc130664b0c01aae7381bb984bb9573b1deed2a62e2cfb297a98a43d
MD5 4828283e69805d971e71c68590627a02
BLAKE2b-256 42ccc933bd2f97576f05c80ba7d165391a9f9e3f7de62579d1118b84a6ced56e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp39-cp39-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be53b076ee723ac70b5bf602ad0c531b809118d9b409360c5e642eee68e7b7bb
MD5 c4f2d59c4bc113a8cf5eaf3b2f03145f
BLAKE2b-256 f60c06cbab7cf92a50660cf3583545ef0d5ec396ba397c7968b6ad4ebe044db8

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e59a26900d82fae8ce4a700195ec61babfc6f593eece32c41b54d4a662cdec2
MD5 4c9b116da7269799b5b6f7ddcece3b2a
BLAKE2b-256 d624098827d945c169a48810b1165acf658189333ad1b29e779d528812046aba

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf2b6289d78cb5fbedc88fcaeecbe91cdbe62d90a1349af15b18a3dc17636e59
MD5 5a1e31ad26c50fbbc0860ae35aa8bbe9
BLAKE2b-256 bdc587195303cd8da9589662991450d9d6742f6d01127e3bce46361273d7343e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 388.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c1db2689cb79ad1ed7f169dc5a46a5bc2cb11d10dfea5bc1ada1d1c158a92e74
MD5 2ecd80dce281c9002725a2ebfdca2351
BLAKE2b-256 2c18e05883c7039bec9102adfebef7b0db814cd85d3ac6cfb32395689b025130

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp38-cp38-win_amd64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: jazelle-0.2.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 336.1 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for jazelle-0.2.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 dac6408114339418ef60f7d11041303e269684d2d9c8849c33fb0dd6bbea00cb
MD5 efea0473db13522e0e29f81bd1b5af23
BLAKE2b-256 13c1223494c522bbe538c3355291a07e579f5afb059be22cce1b1306e43f887e

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp38-cp38-win32.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89e11f47c5208430037eb93cb3a0dace338ef11f0dd7d96df245ced586c9799a
MD5 0a95759c8776c01c7779b8cdff89b2ad
BLAKE2b-256 60403006d7c5f2d4ef9700bc1d2cc2b4bb52007860efed8d8209e57745c866d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d5600019c423ede49be8b3cd4b3fd2483d98ace14f583e2427a50b1fd77728ec
MD5 94a9d8a34c66dc0344eb02157ca38f13
BLAKE2b-256 fdc195150af450c53816831c19e7ed28c25f0a83326ffa00dd99d510a5b87758

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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

File details

Details for the file jazelle-0.2.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jazelle-0.2.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa55d7441a6e93ce24536b9236a31a11ef9721815b0b38f21ce1f006c9c09874
MD5 7b3846e31678f0eab17a30f31c28077f
BLAKE2b-256 412db444f8af0046f3eb83e9fa6cc5fac68e357edf9218c56946caf11907f6ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for jazelle-0.2.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: build_and_publish.yml on AlkaidCheng/jazelle_reader

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