Skip to main content

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" (open-sport-taxonomy code)
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" — 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"
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), SPM (running), or strokes/min (swimming)
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, plus length and swim_stroke for pool swims (see Swimming).

[!NOTE] For pool swims, distance, speed, and cadence are reconstructed from FIT Length messages rather than measured — the underwater Record stream carries only heart rate. They reconcile exactly with the file's totals but are per-length constants, not per-second measurements. See Swimming.

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.


Swimming

Pool ("lap") swimming is special: underwater there is no GPS or speed sensor, so the FIT Record stream carries only heart rate. The movement data lives in per-pool-length Length messages. Pyroparse reconstructs the missing distance, speed, and cadence columns from those lengths, so a pool swim behaves like any other activity:

import polars as pl
import pyroparse as pp

activity = pp.Activity.load_fit("pool-swim.fit")
df = pl.from_arrow(activity.data)

df["distance"].max()            # 1500.0 — reconstructed, reconciles with the session total
df.group_by("lap").agg(pl.col("distance").max())   # per-interval distance, no special API

distance is cumulative and monotonic; speed and cadence are the per-length averages (constant within a length, null while resting). Because these are reconstructed rather than measured, pyroparse says so — and exposes the pool length:

activity.metadata.extra["pool_length"]            # 25.0 (metres)
activity.metadata.extra["reconstructed_columns"]  # ["distance", "speed", "cadence"]

Two opt-in extra columns describe the pool-length structure (via columns="all" or extra_columns=[...]):

Column Arrow Type Notes
length Int16 0-based pool-length index — the swim analogue of lap
swim_stroke Utf8 FIT stroke name: freestyle, backstroke, breaststroke, butterfly, drill, mixed, im, … (null on rest lengths)
activity = pp.Activity.load_fit("pool-swim.fit", extra_columns=["length", "swim_stroke"])
df = pl.from_arrow(activity.data)

# Pace per 100 m for each length
df.group_by("length").agg(pl.col("speed").first())
# Isolate the butterfly lengths
df.filter(pl.col("swim_stroke") == "butterfly")

Open-water swims carry GPS, distance, and speed in the Record stream like any outdoor activity, so nothing is reconstructed and neither length nor swim_stroke appears. The same is true of pool swims recorded without lap-swim mode. Reconstruction activates only when a file contains Length messages, and it never overwrites a measured value.


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               # open-sport-taxonomy code, e.g. "cycling", "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

The extra dict holds format- or sport-specific fields that don't earn a top-level attribute: sub_sport (e.g. "lap_swimming"), and — for pool swims — pool_length (metres) and reconstructed_columns (which record columns were derived from Length messages rather than measured; see Swimming).

Manual overrides merge on top of file-native values. A sport override is validated against the taxonomy, so a typo fails loudly instead of silently entering your data:

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

pp.Activity.load_fit("ride.fit", metadata={"sport": "gravel"})  # ValueError: invalid sport

Sport values

The sport field is an open-sport-taxonomy code, not a free-form string. The same vocabulary is used by pp.Sport (the taxonomy's Sport class, re-exported for convenience). Codes use a dotted hierarchy for disciplines and + for modifiers:

Example code Meaning
cycling cycling, discipline unspecified
cycling.road road cycling
cycling.gravel gravel cycling
cycling+stationary indoor / trainer cycling
running.trail trail running
running+stationary treadmill running
generic sport recorded but unrecognized

Specificity comes only from the FIT sport/sub_sport fields — pyroparse never guesses a discipline. A road ride saved without a sub_sport decodes to the bare cycling, and metadata.extra["sub_sport"] preserves the raw FIT sub-sport name when present.


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")

# 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")
  .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'").fetchdf()

paths = catalog.filter("sport = 'cycling'").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

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.6.0.tar.gz (1.8 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.6.0-cp313-cp313-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pyroparse-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyroparse-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

pyroparse-0.6.0-cp313-cp313-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pyroparse-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyroparse-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pyroparse-0.6.0-cp312-cp312-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pyroparse-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyroparse-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pyroparse-0.6.0-cp311-cp311-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pyroparse-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyroparse-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

pyroparse-0.6.0-cp310-cp310-macosx_11_0_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

pyroparse-0.6.0-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.6.0.tar.gz.

File metadata

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

File hashes

Hashes for pyroparse-0.6.0.tar.gz
Algorithm Hash digest
SHA256 b6ec082c946f22b80ec814b674e211c402e3152a4c6f5c9fed5ebdbb12293e3b
MD5 9cab7205b5719cb7e84eb4b081e5eb88
BLAKE2b-256 7369671936d755cfa65fd9fd17912755eae745e84fc855ebf4e54159227b781b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0.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.6.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.6.0-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.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 40329e6119585e0613ab0fc13bbe33b357b5875e64e60fecb62d31b522f0dc5b
MD5 5e0a8b869b1010d52399a03bcd56f36d
BLAKE2b-256 216a2bb1f1ce0afb182e13be37f62a3e3086bf634e2031522a25f89033504856

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6f6d456b17980bd1fed9cd46939abccddb512e060cfacc983b79b2ccf4b51539
MD5 c7f81ec956bca9db039f4205ce275591
BLAKE2b-256 646a837648a5ba141a8c90f0567356e19887b311e1b442586e71796d5157ea83

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fefc97471c4a4e0d93daead5a7c4af53a6e81a102a008217749f5781a210f165
MD5 d3d3aee2c3f29fef23c843694a44a708
BLAKE2b-256 594e9daf797fb9623074fb79fa9444b799143bc7ed0d72de83e869bf7bb9127a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c1a03fe223ddc15115a059fed23415a1213586b8faf8dfb8cc37a150c102003
MD5 b62f2db5f8cf96075793a6ef94ffea31
BLAKE2b-256 2282375e5fb599bb08f44d4ffc019410dca16f41a936ad3c743764e1cb10ba80

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7f9703b69ccbd529eabe598c8d0a4d186d6d7a837821fecb086ba742b82e3e07
MD5 a5f62924869512bf04ab221c5008f9ea
BLAKE2b-256 8d436a822d7a61f1ab875e28cdf063de9ab8fb1c2bad9875392b41cb8accae0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d0dbd9859cb2799eab28a4ed6bd152a1e595d28283d4ace6f60c9e2d2600e884
MD5 ab71e359acf0094817214452159ffa00
BLAKE2b-256 3a4f5da4ba80ba88346c8e0e085cee852afd9797bcf3ad556d7bfc2c99e026f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 107f202477c5c311f78fbd3bae9bd6f1ff653a175af370d7e2a07554c63a0281
MD5 45f1ffd5605548e8a88b47f52118916e
BLAKE2b-256 9ee75384fd66b7688784324ff85eaf9b1cf616cea04fe18d9aff63a8b336f1c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.6.0-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.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fd10efc6bc1b21e0e19d8bba6d1177552a0060302c38861d94da17da39c2f5bc
MD5 8448e612efc46cb25208f687e3db96c1
BLAKE2b-256 e45d234dbb36a4b766933aac6c317c012e8bdcb48b3f45dde6cab192ca57a1ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8d329f6851f9c7961e501026aa696e0941025198f6732459400e772d891e60f5
MD5 410f7827c09e52e345ff8e23b80fa40c
BLAKE2b-256 2738af9b4794a5afbe8f2e7b390a3d4ddf6c56b6d25533041a8aa90576fe3820

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e96ffbe9da8a9a9ee9e866c96138aeb3f1b28806a1317469c44ce3a98e3a432c
MD5 5d180fc5ec2ed07c60843222c562d89e
BLAKE2b-256 084efe3a955c63f5a571d82aec493f82a30369a43afccf3125825b99bbab5c83

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ad75c8644889e14f4c479472e6d0e61b94c776c201e0b73a1cc3b8719c3ea6a
MD5 5108924c3f56eaa5e0df190f412bce62
BLAKE2b-256 87e47849b24c4f55e9dfbb41afbcb4c2484bbcd520d83df05df6cd20b10cac20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d29e46914e02e8f27fe372c63e3ea7065a3403badf5e4f588cff1f9a2921e191
MD5 2f289e56559bb747e708262d30cd83f6
BLAKE2b-256 9c7b29925e6a77d103b61fd56e698ff32e6492867909ac5d5f80c8de4aaa745e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8f87108e5bc0bbd7d13154a630c1ff3d40f89ef0f52a90de79e40213d8f002dc
MD5 1c16ac9a81277feb7c6ad70290b4bd1a
BLAKE2b-256 90c0d37fa38b63299b7bc99095143c212bcecb4f9c908009a2147963afd35ba7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68b111f667b55590e9b433a8bc2fba6661555aaa3c3d6e11bc015628d7738d10
MD5 93ce6d9015198e47309d53338fa20f2a
BLAKE2b-256 5e1469981c5ce3ba58b753d7ad64132e421bf1de7731b2fc19d0e2c0c54deba4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.6.0-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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9fbdab21c5f64d3b6bf9def9fcc7889b0704c3ca47a794e35e662095d4581cbf
MD5 eaddd3f963f4a0776d998d2e543dbc41
BLAKE2b-256 0fef4b93ceb1024317ecc36350d496647fcf4038d6e78b1a96bf2b3777348fb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d0d1db32b1315157279469ad6713d10f520862a96e315e3fcd7709f7ac6ccf48
MD5 8f371f446363a145408d6da1a3c31146
BLAKE2b-256 f36a33410d5675658ba452f10b6e51afaf2759ea5459c69a837571660393e191

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 77cb16d924013af59dd2431c56ad449011c8678ed0f976c0a01871fa287ecb0c
MD5 0b70927ea21eb6b11b27b18f80faab38
BLAKE2b-256 f0c40cbaebca4bafdceb390c6c32da5fd232340b9d2a0b916238c737fc317232

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0051819519c98fb3edb6d2bf8d48bc3e2205d40cf9c2d5d9023a12281aad6c6d
MD5 9b50264f50659376c872c3ed5fa3a5c6
BLAKE2b-256 7a9ca5898b25fb7a447ca0e97c384f5a5638cd921a07f4716f98288226f7de5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e32694fa025a99530a7e54adac5b38256f107ef2dbe6f15654078582096653bb
MD5 93a957b6637d5a18b98a7f8ce0cae250
BLAKE2b-256 355e2ae31a2761d2594277108fa1479c079bb4e5e20220737df3d5262331a15a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c555c44cb03eaeae4d57d0b1f702e6ab18d4f0140f327272d4cc0db228d82734
MD5 940f5ea8bb9078da58340540bcc955d5
BLAKE2b-256 a0feeaa302a3b22b372732587fcecb4c4cb9fef430bb29211ddab8446ca4f84a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60e0a839fd5c11f0e37abae0ccdcc8b1bc55c3b71dbd54ae746db3348a5ed2ea
MD5 a540e068a47e66cf752fa5a1cccce37b
BLAKE2b-256 710b6efd5b3936dc3c7ca77c6361695c5c8ded7a2f1f7d2ebad86e0d01ae9167

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyroparse-0.6.0-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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 65500fcb69ff4c32e4be346795a173f33fd8e8651c29e9fd03f379fe57481b54
MD5 445eb92b897a317761200906c4cd4eec
BLAKE2b-256 e6dc56f7304da36528f648195f151bfff76956a979f041edcb6e89454258f880

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e1dc351cfc91f97a6e92e737cadd160ff2f4aad28b31d5fae870caa3da2e20c6
MD5 cc8b70f7a16cdc6dbe61781ea191b922
BLAKE2b-256 82517e442841bc9220d3d653776d7bc9ff8ac236c73168e86b9c2bc82fd235c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 662d85723239c8f10c7f4ec49070a9fc57de4fe7fcfc9e0f7b7bd61cedffd92f
MD5 9635c43bad618b581c7715cd4e137d3c
BLAKE2b-256 3a2cb5cb1a90067fcaee00d6e8d87bd7e960ccc91faf70f39c86a9c21d39fdd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45f4eef07bd5caec1bec1f3a7f520b44809dee788bbc94efd7c4900c19693e3e
MD5 5f24282414fe71bbb61c7188777d7507
BLAKE2b-256 1f9104c94221f2e3962024aa3903dc73ccffbd6978414123a822a51c0b5fdb21

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e4f175f7daf008695a9bec2d5c124d5f659532dfa22f1ac390bb8281770f6436
MD5 508ca44e765dc1aead99ac8840d33a95
BLAKE2b-256 8d5de5c443de83fd69f6f54446bfc961042c3dab767411672e3cdc1fa22f7dc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a83fdea01362f7622d0f96054a74dab330906fdaee1ac7311f6e0990942292dc
MD5 ec69ffc09a71e273f84ae61d2c1c2f7d
BLAKE2b-256 84dcfdd939254b416eede65ca27fbe4f71f1555308b7803d85c1b5366f0a3c58

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyroparse-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc4c05930496ebe01a4d37784c1f7ae0cd6c9ed87a89494bfbd49f3dff0fd9ad
MD5 38e419574c0226332a27a89bc60d599e
BLAKE2b-256 08c15bd5c489f0d5030e2eb6530eb8c256c9805a2a5588e465ad6fe38067ce10

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyroparse-0.6.0-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.

Release history Release notifications | RSS feed

This release

0.6.0 This release

29 files

0.5.0

29 files

0.4.0

29 files

0.3.6

29 files

0.3.0

1 file

0.2.0

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page