Skip to main content

fitcxgp

Fast, all-in-one GPX/TCX/FIT toolkit.

Load, inspect, and convert GPX, TCX, and FIT files with one Python, Rust, or CLI API. Every supported input can be written to every supported output.

Why fitcxgp?

  • All in one — GPX, TCX, and FIT read/write support.
  • Fast — Rust-powered streaming parsers; GPX parsing is up to 31x faster than gpxpy on the real-data benchmark.
  • Useful model — points, segments, telemetry, device info, moving stats, elevation gain, bounds, and track simplification.
  • Reliable — FIT CRC validation, property tests, and 8,280 conversion chains verified on 920 real GPX files.
  • Easy to embed — Python 3.12+ ABI3 wheel, Rust library, and CLI.

Python

uv add fitcxgp

Load once, write any format:

import fitcxgp

activity_file = fitcxgp.load("run.gpx")  # GPX, TCX, or FIT

gpx = activity_file.to_gpx()
tcx = activity_file.to_tcx()
fit = activity_file.to_fit()

Inspect an activity:

activity = activity_file.activities[0]

print(activity.point_count)
print(activity.distance_meters)
print(activity.duration_seconds)
print(activity.average_heart_rate_bpm)
print(activity.elevation_gain.uphill_meters)

Convert files directly:

fitcxgp.convert("run.gpx", "run.fit")
fitcxgp.convert("run.fit", "run.tcx")

Add device information when creating FIT output:

device = fitcxgp.DeviceInfo(
    manufacturer_id=1,
    product_id=3415,
    serial_number=1234567890,
)
fit = activity_file.with_device_info(device).to_fit()

CLI

cargo run --release -- convert run.gpx run.fit
cargo run --release -- info run.fit
cargo run --release -- detect run.tcx

Rust

use fitcxgp_core::{convert, load};

let activity_file = load("run.fit").unwrap();
println!("{} points", activity_file.point_count());
convert("run.fit", "run.gpx").unwrap();

Development

uv sync --python 3.12
uv run pytest
cargo test --workspace

Conversions preserve the shared activity model, not format-specific data such as FIT developer fields or GPX routes and waypoints.

See testing, benchmarks, and the real-data report for details.

Metadata

Release files for fitcxgp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fitcxgp 0.1.0
File Size Uploaded Provenance Actions
fitcxgp-0.1.0.tar.gz 41.7 kB Without provenance Details for fitcxgp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fitcxgp 0.1.0
File Interpreter ABI Platform Actions
fitcxgp-0.1.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for fitcxgp-0.1.0-cp312-abi3-macosx_11_0_arm64.whl

Total release size: 737.8 kB

Release files / fitcxgp-0.1.0.tar.gz

Download URL fitcxgp-0.1.0.tar.gz
Size 41.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0036314ae08214b376789dc1dd92b61fa3584ec0c3e5c6950a114535bef75fe7
BLAKE2b-256 checksum
How to use checksums
5ac533f10f76300ea6d6cad35c2d16b7f0c8627b23fc14d0caf10ab708e71757
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / fitcxgp-0.1.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL fitcxgp-0.1.0-cp312-abi3-macosx_11_0_arm64.whl
Size 696.1 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d632717f64431817d92b4296b9c912f0ce35f6db2d1372bf44c293759310985e
BLAKE2b-256 checksum
How to use checksums
6e795d4ed1da8cd85d777ad5e6ff0281cacb3a14d488311428afe937797c5c44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Security for fitcxgp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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