Skip to main content

Fast and opinionated activity data parsing. Forged in Rust. Fired up in Python.

Project description

Pyroparse

Fast and opinionated activity data parsing. Forged in Rust. Fired up in Python.

Pyroparse reads FIT files and gives you a typed PyArrow table with structured metadata. This Rust-backed parser loads a typical activity in 15 ms (see benchmark), which is roughly 20x faster than pure-Python FIT parsers. It standardizes the mess of manufacturer-specific field names into a clean, consistent schema. It round-trips to Parquet with metadata preserved. And it hands you Arrow memory that Polars, DuckDB, and pandas can consume with zero-copy.

Parse. Standardize. Serialize. Analyze. One library, no glue code.

[!WARNING] Pyroparse is experimental and not ready for production use. APIs may change without notice.


Quick start

import pyroparse as pp

# One line to a DataFrame
df = pp.read_fit("ride.fit").to_pandas()

# Or zero-copy into Polars
import polars as pl
df = pl.from_arrow(pp.read_fit("ride.fit"))

With metadata

import pyroparse as pp

activity = pp.Activity.load_fit("ride.fit")

activity.metadata.sport         # "cycling.road"
activity.metadata.start_time    # datetime(2024, 3, 19, 5, 30, tzinfo=UTC)
activity.metadata.duration      # 3842.7 (seconds)
activity.metadata.distance      # 45230.5 (meters)
activity.metadata.metrics       # {"heart_rate", "power", "speed", "cadence", "gps"}
activity.metadata.devices       # [Device(garmin edge_540 (creator), columns=[heart_rate,power])]

activity.data                   # pyarrow.Table — 21,666 rows × 11 typed columns

Lazy loading

open_fit() and open_parquet() read metadata immediately but defer data loading until you access .data. Useful when you need to inspect metadata before deciding whether to load the full timeseries.

activity = pp.Activity.open_fit("ride.fit")
activity.metadata.sport     # "cycling.road" — available immediately
activity.metadata.duration  # 3842.7         — no data parsed yet

activity.data               # pyarrow.Table — parsed on first access

FIT to Parquet

activity = pp.Activity.load_fit("ride.fit")
activity.to_parquet("ride.parquet")  # ZSTD compressed, metadata preserved

Load it back with data and metadata intact:

loaded = pp.Activity.load_parquet("ride.parquet")
loaded.metadata.sport      # "cycling.road"
loaded.metadata.distance   # 45230.5
loaded.data.num_rows       # 21,666

Batch conversion

Convert an entire directory tree of FIT files to Parquet, preserving the folder structure:

import pyroparse as pp

# In-place — parquet files appear next to fit files
pp.convert_fit_tree("~/garmin/activities")

# Mirror to a separate directory
pp.convert_fit_tree("~/garmin/activities", "~/parquet/activities")

# Use all CPU cores
result = pp.convert_fit_tree("~/garmin", "~/parquet", workers=-1, progress=True)
result.converted  # [Path("~/parquet/2024/ride.parquet"), ...]
result.errors     # [(Path("~/garmin/corrupt.fit"), FitParseError(...))]

Re-runs are idempotent — only new files are converted. Pass overwrite=True to force re-conversion.

CLI

Install the CLI tool:

curl -LsSf uvx.sh/pyroparse/install.sh | sh
# Single file
pyroparse convert morning_ride.fit
pyroparse convert morning_ride.fit -o /tmp/ride.parquet

# Directory tree, all cores, with progress bar
pyroparse convert ~/garmin/activities/ -o ~/parquet/ -w -1

# Dump raw FIT messages as JSON
pyroparse dump ride.fit
pyroparse dump ride.fit --kind event,hr_zone
pyroparse dump ride.fit --exclude record -o debug.json

Run pyroparse convert --help or pyroparse dump --help for all options.


Standardized schema

FIT files are a mess. enhanced_speed vs speed, semicircle-encoded GPS, manufacturer-specific field names. Pyroparse normalizes all of it into a single, opinionated schema with purpose-chosen Arrow types:

Column Arrow Type Notes
timestamp Timestamp(us, UTC) Microsecond, timezone-aware, always present
heart_rate Int16 BPM
power Int16 Watts
cadence Int16 RPM (cycling) or SPM (running)
speed Float32 m/s, normalized from enhanced_speed variants
latitude Float64 Degrees, converted from semicircles
longitude Float64 Degrees, converted from semicircles
altitude Float32 Meters, normalized from enhanced_altitude
temperature Int8 Celsius
distance Float64 Cumulative meters
lap Int16 0-based lap index, from FIT Lap messages

These 11 columns are the default output. Use columns="all" to get additional columns like core_temperature, smo2, form_power, and stance_time from CIQ apps and running dynamics.

These types are native across the ecosystem, no casting, no surprises:

# DuckDB: direct Arrow scan
import duckdb
duckdb.from_arrow(activity.data).filter("power > 300").fetchdf()

Laps

Pyroparse parses FIT Lap messages and assigns a lap index to every record row. The lap column is included by default — use it for per-lap analysis with any tool:

import polars as pl
import pyroparse as pp

activity = pp.Activity.load_fit("intervals.fit")
df = pl.from_arrow(activity.data)
df.group_by("lap").agg(pl.col("power").mean(), pl.col("heart_rate").mean())

The lap_trigger column tells you what ended each lap — useful for distinguishing manual presses from auto-laps:

activity = pp.Activity.load_fit("ride.fit", extra_columns=["lap_trigger"])
df = pl.from_arrow(activity.data)

# Find laps the user deliberately marked (ignoring auto-lap noise)
manual_laps = df.filter(pl.col("lap_trigger") == "manual")["lap"].unique()

Trigger values come directly from the FIT SDK: "manual", "distance", "time", "session_end", "fitness_equipment", "position_start", "position_lap", "position_waypoint", "position_marked". The trigger describes what ended the lap — so a lap closed by pressing the lap button has lap_trigger="manual".

Files without Lap messages get lap=0 for all rows. lap_trigger is omitted entirely when no laps are present.


Structured metadata

Metadata is extracted from FIT Session and DeviceInfo messages, the same source Garmin Connect and Strava use. Sport, timestamps, duration, distance, device info, available metrics: all parsed into a typed dataclass, not left as raw dicts for you to dig through.

@dataclass
class ActivityMetadata:
    sport: str | None               # "cycling.road", "running.trail"
    name: str | None                # user-given activity name
    start_time: datetime | None     # UTC
    start_time_local: datetime | None  # naive, local wall-clock time
    duration: float | None          # seconds
    distance: float | None          # meters
    metrics: set[str]               # {"heart_rate", "power", "speed", "cadence", "gps"}
    devices: list[Device]           # head unit + connected sensors
    extra: dict                     # sub_sport, anything format-specific

Manual overrides merge on top of file-native values:

activity = pp.Activity.load_fit("ride.fit", metadata={"sport": "gravel"})
activity.metadata.sport       # "gravel" (overridden)
activity.metadata.duration    # 3842.7  (preserved from FIT)

Parquet with metadata

to_parquet() writes ZSTD-compressed Parquet with metadata embedded in the Arrow schema under the b"pyroparse" key. This means you can scan metadata across thousands of files without reading row data:

-- DuckDB: find all cycling activities
SELECT filename, json_extract_string(value, '$.sport') AS sport
FROM parquet_kv_metadata('activities/*.parquet')
WHERE key = 'pyroparse'
  AND json_extract_string(value, '$.sport') = 'cycling';

Batch operations

Scan a directory of .fit or .parquet files, filter by metadata, load only what you need:

import pyroparse as pp

# Scan: metadata only, no timeseries parsing (fast)
catalog = pp.scan_fit("~/data/activities/")
# file_path | sport | start_time | duration | distance | metrics | ...

# Same API for Parquet (reads schema footers only)
catalog = pp.scan_parquet("~/data/parquet/")

# Filter with PyArrow compute
import pyarrow.compute as pc
cycling = catalog.filter(pc.field("sport") == "cycling.road")

# Load only the files and columns you need
paths = cycling.column("file_path").to_pylist()
data = pp.load_fit_batch(paths, columns=["timestamp", "power", "heart_rate"])
# file_path | timestamp | power | heart_rate

Column selection

All loaders accept a columns parameter to keep only the data you need. For Parquet files, this pushes down to the reader and skips column chunks entirely. For FIT and CSV, it drops unwanted columns after parse.

# Single file: only timestamp and power
table = pp.read_fit("ride.fit", columns=["timestamp", "power"])

# Parquet: true column pushdown, skips unused data on disk
activity = pp.Activity.load_parquet("ride.parquet", columns=["timestamp", "speed"])

Polars

import polars as pl
import pyroparse.polars as ppl

ppl.scan_fit("~/data/")
  .filter(pl.col("sport") == "cycling.road")
  .fit.load_data(columns=["timestamp", "power"])
  .select("file_path", "timestamp", "power")

DuckDB

import pyroparse.duckdb as ppdb

catalog = ppdb.scan_fit("~/data/")
catalog.filter("sport = 'cycling.road'").fetchdf()

paths = catalog.filter("sport = 'cycling.road'").fetchnumpy()["file_path"].tolist()
data = ppdb.load_fit(paths, columns=["timestamp", "power"])
data.filter("power > 300").fetchdf()

Note: polars and duckdb are optional dependencies, install them separately.


Multi-activity FIT files

Triathlon and multisport files split cleanly by session:

session = pp.Session.load_fit("triathlon.fit")
session.activities[0].metadata.sport  # "swimming"
session.activities[1].metadata.sport  # "cycling"
session.activities[2].metadata.sport  # "running"

Activity.load_fit() raises MultipleActivitiesError for multi-activity files, no silent data loss.


Course files

Course FIT files (planned routes from Garmin Connect, Strava, race organizers) are a different file type from activities. Parse them with Course:

course = pp.Course.load_fit("stage3.fit")

course.track                          # PyArrow Table: latitude, longitude, altitude, distance
course.metadata.name                  # "Volta Ciclista a Catalunya 2026 - Stage 3"
course.metadata.distance              # 162110.4 (meters)
course.metadata.ascent                # 2358.0 (meters)
course.metadata.waypoints             # list[Waypoint] — turns, climbs, sprints, etc.
course.metadata.waypoints[0].name     # "km 0"
course.metadata.waypoints[0].type     # "generic"

course.to_parquet("stage3.parquet")   # single file, waypoints in schema metadata

Passing a course file to Activity.load_fit() raises FileTypeMismatchError with guidance to use Course instead.


Raw FIT messages

all_messages() is the escape hatch — every message in the FIT file, no pyroparse opinions applied. Field names, values, and units come straight from the FIT profile as decoded by fitparser. Use it for HR zones, workout steps, events, or anything the opinionated interface doesn't cover.

import pyroparse as pp

msgs = pp.all_messages("ride.fit")

# Each message has a kind and a list of fields
msgs[0]
# {"kind": "file_id", "fields": [{"name": "type", "number": 0, ...}, ...]}

# Get HR zones
zones = [m["fields"] for m in msgs if m["kind"] == "hr_zone"]

# Get all events in order
events = [m["fields"] for m in msgs if m["kind"] == "event"]

# Get workout interval definitions
steps = [m["fields"] for m in msgs if m["kind"] == "workout_step"]

# Access session fields that pyroparse doesn't model
sessions = [m for m in msgs if m["kind"] == "session"]
fields = {f["name"]: f["value"] for f in sessions[0]["fields"]}
fields["avg_stance_time"]  # not in ActivityMetadata, but here

Or from the command line:

pyroparse dump ride.fit --kind event,session --compact | jq '.'

CSV

activity = pp.Activity.load_csv("export.csv", metadata={"sport": "cycling"})
activity.to_parquet("ride.parquet")  # inferred + manual metadata preserved

Timestamps, duration, and available metrics are inferred automatically. Constant-value string columns (like sport=cycling in every row) are promoted to metadata.


Installation

uv add pyroparse

Or with pip:

pip install pyroparse

From source

Requires a Rust toolchain and maturin:

git clone <repo>
cd pyroparse
maturin develop --release

Releasing

Releases are automated via GitHub Actions. On tag push:

  1. CI runs the full test suite
  2. Wheels are built for Linux (x86_64, aarch64), macOS (x86_64, arm64), and Windows (x86_64)
  3. All artifacts are published to PyPI via trusted publisher (OIDC)
# 1. Bump version in pyproject.toml and Cargo.toml
# 2. Commit and tag
git commit -am "Release v0.4.0"
git tag v0.4.0
git push && git push --tags

To build wheels locally for testing (requires Docker for Linux targets):

make wheels          # all targets
./build.sh macos     # macOS only
./build.sh linux     # Linux only (Docker)

Docker

A minimal HTTP server for FIT to Parquet/CSV conversion:

docker build -t pyroparse .
docker run -p 8000:8000 pyroparse
# Upload at http://localhost:8000

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

pyroparse-0.3.6.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

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

pyroparse-0.3.6-cp313-cp313-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.13Windows x86-64

pyroparse-0.3.6-cp313-cp313-musllinux_1_2_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyroparse-0.3.6-cp313-cp313-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pyroparse-0.3.6-cp313-cp313-manylinux_2_28_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyroparse-0.3.6-cp313-cp313-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

pyroparse-0.3.6-cp313-cp313-macosx_11_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

pyroparse-0.3.6-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyroparse-0.3.6-cp312-cp312-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.12Windows x86-64

pyroparse-0.3.6-cp312-cp312-musllinux_1_2_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyroparse-0.3.6-cp312-cp312-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pyroparse-0.3.6-cp312-cp312-manylinux_2_28_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyroparse-0.3.6-cp312-cp312-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pyroparse-0.3.6-cp312-cp312-macosx_11_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

pyroparse-0.3.6-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyroparse-0.3.6-cp311-cp311-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.11Windows x86-64

pyroparse-0.3.6-cp311-cp311-musllinux_1_2_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyroparse-0.3.6-cp311-cp311-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pyroparse-0.3.6-cp311-cp311-manylinux_2_28_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyroparse-0.3.6-cp311-cp311-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pyroparse-0.3.6-cp311-cp311-macosx_11_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

pyroparse-0.3.6-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyroparse-0.3.6-cp310-cp310-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.10Windows x86-64

pyroparse-0.3.6-cp310-cp310-musllinux_1_2_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyroparse-0.3.6-cp310-cp310-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pyroparse-0.3.6-cp310-cp310-manylinux_2_28_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyroparse-0.3.6-cp310-cp310-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

pyroparse-0.3.6-cp310-cp310-macosx_11_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

pyroparse-0.3.6-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyroparse-0.3.6.tar.gz.

File metadata

  • Download URL: pyroparse-0.3.6.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyroparse-0.3.6.tar.gz
Algorithm Hash digest
SHA256 40dae5949518ea48bedabe5adcbfc28358b3bcf69aaa150f5e8db7eb98bccfb8
MD5 8187f3eac4f5489bb16d37386001fdbb
BLAKE2b-256 e82dad0007a4bde1f7966d86dda62c6cf869950da16459d350d4f7060466ed38

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6.tar.gz:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.3.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f69061a1f7674616978ca36a7e2af17ad3911d8a4257e7db08ab5917ddfa46e1
MD5 66f535358484cea48447ddd0fd712fc9
BLAKE2b-256 f1223bda9e478a4d18f1b7f41535bd2707c8b8376d33432375eb36baf59423e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-win_amd64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6a18dc5da5d5c218b842e7f507f7035355d8b765d5542c53c408a44ad8f22410
MD5 f5ce2c87aa3b6f55c8b64fa5f4f31945
BLAKE2b-256 6e9e4ae374b3b0accf9ba66bea45921740782f474c7e2e38fbc37176e8fa3730

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c3998d1295a4bb8e7729a94e0ed67b010e6718fc101e3f42eabe98ffaf802410
MD5 afd917b5eacb17bf4bd8e8de114e0def
BLAKE2b-256 f16ea6485728401cc639f7ee3d3099af6b8b0be1d887e559cab3cb54c5bb4b23

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a895c72595d86bc3eba9daffa512e2de383f1e145e8dd2dd4365b53ac3e94056
MD5 1c1f92e24f5c3a7759ae970096712ce8
BLAKE2b-256 4e4b519ca503731bebe51d6a5e755aab5174b0957d863dfadc7109073d1e24c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0479a9a2c59dc8a782e1ddf0be1be3a7b677a72ff51d518f29a48e271c3c6652
MD5 e2b6fea26e8f8282e4021259e142103e
BLAKE2b-256 50c5be0441ba6502b79db4155982e2426a5b924f635f11f57921bdf8e6d056cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 02a1591363e7618733212ceb24610a229b8d4343511e3ba3524946829524f563
MD5 d60a50f10705da379f6ae039fb3f8708
BLAKE2b-256 7e0a2c10f871bf7c1806549d76768f7cfc30ff01116e7cdfff5f326e6efea8f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-macosx_11_0_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f410f1a5e3d92f024c9d0f90efb5d42e3d24597a0f3a9a7f6b02f1fbe2ca8b46
MD5 840445251b38cb3ba9b982fb46d87550
BLAKE2b-256 e9f78e979d278819586303ba35e80199e269948c9949028330deddbd0d807539

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.3.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cf9706af34c111c229149179cc163ac7315b902da970ab10494026ca9720ffe7
MD5 36f889f61e6bd2bd0b419985f2478d27
BLAKE2b-256 960d48817d4e4c021c0f00832851ddefa26e374c7b9c959b474334635c0671f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-win_amd64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 44f8b29330b95cf454c02be4880cd6f094d21ebdcda9e6d7f0af7069fa3459ba
MD5 2855b598ba738666abde68bb6ed1fd49
BLAKE2b-256 1b216d6b0e4ba875983ac4a34f97f363a9cdd1ea546453d5d1541c0d5cc6d109

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 33f8c69ad9e176f304416335436d400104257333fc12841f4f7e5aee51ab8369
MD5 273b016f6432bf577afcf7b9aae76638
BLAKE2b-256 0eebea9a1416d98aa300b082f89681504f1e8b97f47b96df4a8f6931691fcdcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50b4f3d0a8843ae46954e9b9fa2bb6e75e0a48b636b809a87e8b35b7ec490266
MD5 b500fe4bd932f70cf4104f9fb9cacd52
BLAKE2b-256 ce151d5a043baaf4eafdf2e747d36667668bb493fd8ec422cbee59ce58ac5342

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5981c46c70598511ca449bc5a483e4765e340d44f9e04ee77bed096c85fb879
MD5 09dd359c173b703d4bc5ace9b81deba6
BLAKE2b-256 0da70df44c3b0d4fb2a747dee7a8458a6fdb18312fba4e67c803727962e0652e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 07959932ce5ddd7cdc7b58010528cac44643af22cc5305b95088aa70446b4d27
MD5 303651f66cb0448cde44d25db2b8f34e
BLAKE2b-256 0fabf9f530b7935000893db16c5ceef609d2cb9a834a8bdb8e5ad843670fc135

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f30d47c64b28832873f076a7ba372d1e32643ad313074750b0eb95f8e65b8cf
MD5 a3e07115f3721a76998b21bf29332b4c
BLAKE2b-256 beab87f89a3ed5d8426d679236db5368fd6aca31fbb8a9b11d7abca13cfb1481

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.3.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e8e6f3b254433dbcd0b2a796daa3f3bcc72d3c565b9de50392bd4f1c8794892b
MD5 9c9f64f136b62318143b74e4b6260579
BLAKE2b-256 d16d5e479d7b9187146b6157cac37af865ae84d2aec24c5660b8ab736f0380ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-win_amd64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 85376d24206d9a81f0f1bef5a71ab149b5b93a7010c0afb06b8101537ad2c488
MD5 c97cec0733c8d5a794728735e3340bcd
BLAKE2b-256 b73d6ebc3afe677f1bbaccce10acde4dbb0907d09b43a4c9e6bfdeaa95e1fa8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5bbff4f5c16cf25ec31f43de15ec72a37f365589cb3b0240cdf76a18b8921fcd
MD5 1b84aa0b60f2a45f209fa0a8927b7f40
BLAKE2b-256 6c07701992b5e0a2f4e460d448b9f8d5965a94cf0917aca62aa067acad9ac6fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0b76bb22866ace6ef0c83f3941c575eed178eeb59df66a7919642ff376bf879
MD5 9e2f5367fd1134d86948862198893bee
BLAKE2b-256 aa1048e6b91517b34df4ba28a513ab7ab0edee4e0e8bf202c264f5201e551973

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 918a269e53fcfc8f6efb7ab8548f6c18bcf9e4cb5c3659acfc9c26200e841f01
MD5 d276511de0b913cecd78783576d81d54
BLAKE2b-256 a00e81e29694efd9cb87dda4afd7ad5762e7698fc8e44e7d212deecba2e84ccc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0de4a95060ff06facc9966da5b3512e5c930b3e5d800f62cf37d97a884ba33d6
MD5 a17c3d72afa86dbb898297d3e3f1d031
BLAKE2b-256 18386e64cb2d84713911289069c8995ffbee0357816cb6937d2caaff7124c0c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-macosx_11_0_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3a965c92e97ce1aeb8a50fb79525a345fbe542e0552d6044cbe8e64ca53137e
MD5 5ee803a97ae4b4f109cfa1764c2b09ca
BLAKE2b-256 b75095da8952075a65ce6d0861f963744c07c692dd2734ea48e908c4edb53a98

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.3.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4ac153316668036f84f36d2eafd73bf554ca5c22016189dbb48ef4594e3b1c1d
MD5 01b8ec0a9756144c5306ec60566c008c
BLAKE2b-256 dfa19df2b659733ac5f41d4f6a87a1e492f0290d83454c922df082f51c8bfc26

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-win_amd64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd19f07411562f10e283dc4d3c0a726a2974f2f21abe280809cad33659701ce8
MD5 3b3ec4f80185b5dfce80289bbdbc5f14
BLAKE2b-256 ba6f4017d16b8bbd147bcf934292e2fd3617c2c37102c82936638c0a58eeecd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7f444dc29ff1c6593fd22ba7045eae8e644b253392adf5ce502da34d0cb28a61
MD5 24b697b434805e5ec6f75126e7b35099
BLAKE2b-256 55aa2e624dd18e6181f93fb2ee566aaadc4e462a354887e9bbc375ba00221dc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ca99bb727d3f198899c38afa88b6f47b4af4a0e799949766d74c427f9a091622
MD5 fc5bee43e21d7ffb4af47be7d8661793
BLAKE2b-256 125e85e4c17574aa966bf9f3b0c3863cbcebc3656ddc1033b73fb879d30f715e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 10b72f7b4e776f367c08a39d50a58b620d11625ed946f2898c0b835ad96a8fd6
MD5 17b7476b1921b5ca02c0b57461f302e3
BLAKE2b-256 058354be169aeae7fd902828d2f8938a5611bc2052d31a2c0abfab057e04b4cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 f715ddb56dfb87d819fd4596a0d68c873af2772e062dc7d1de3083e0dc9df253
MD5 a4dea95f9ddaa37dd176e2cbd583c335
BLAKE2b-256 dd8e79c97948dfdda7d163ff0387de30d1118550bba3e96040b021a46eba2513

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-macosx_11_0_x86_64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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

File details

Details for the file pyroparse-0.3.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.3.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ef2c83e42878f78be5bc43bec8e1d7ff5fcc012791f0b06717e0e3c5c80d47e
MD5 4da66c0811cba03a3c59e4eb5c4c2cea
BLAKE2b-256 5185cec21bfdc20a452a0a682685bde5fc42ad3a79de4dae7d4faceff9d92c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.3.6-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: ci.yml on SweatStack/pyroparse

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