chiptime
Recovery-grade FIT file processing. Parse anything, lose nothing silently, explain everything. Zero runtime dependencies.
Every other open-source FIT parser stops at the first bad byte. chiptime resynchronizes mid-file, salvages truncated files, rebuilds missing session summaries, and can write the result back out as a valid, uploadable .fit — with a machine-readable provenance trail for every repair.
import chiptime
result = chiptime.parse("broken.fit") # lenient: recover + annotate
result.recovery # what was salvaged
result.activity.sessions[0].records.stream("power") # 0 is real, None is absent
result.to_canonical_json() # RFC 8785 — byte-identical every run
fixed = chiptime.repair("broken.fit") # → a valid .fit
chiptime parse ride.fit --json # agent exit codes: 0/2/3/4/64
chiptime repair broken.fit -o fixed.fit
chiptime validate fixed.fit --platform garmin-connect
chiptime inspect weird.fit # wire-level forensics
- Three modes:
strict/lenient/forensic(forensic never drops data) - Sentinels → null before any statistics; zero ≠ null, always
- Deterministic canonical JSON; errors carry stable codes + suggested next steps
- Conformance corpus: 104-item edge-case taxonomy, golden-file tested
- Optional extras:
chiptime[pandas]for DataFrames;chiptime.metricsfor mean-max curves, zone time, SWOLF
Docs, taxonomy, corpus and research: https://github.com/MaxGrgrv/chiptime
chiptime is an independent project, not affiliated with or endorsed by Garmin. FIT and Garmin are trademarks of Garmin Ltd. This package ships no Garmin SDK files.
Metadata
Release files for chiptime 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chiptime-0.8.0.tar.gz | 269.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chiptime-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 429.8 kB
Release files / chiptime-0.8.0.tar.gz
| Download URL | chiptime-0.8.0.tar.gz |
|---|---|
| Size | 269.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f6ff89c264eb7fa6f54f2848bd50ee713fa6bd389a19141c8937447c048176a
|
|
BLAKE2b-256 checksum How to use checksums |
264b558ac25af65e36c11eb7d0baeb1a85d2c2b0a83ff61c59a691119239f60b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency logRelease files / chiptime-0.8.0-py3-none-any.whl
| Download URL | chiptime-0.8.0-py3-none-any.whl |
|---|---|
| Size | 160.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
963d68d04ef663b5fae2f72a1f690e4668663c4bfe2b126545e24179753392c7
|
|
BLAKE2b-256 checksum How to use checksums |
9ece2fdda4db3f3d259bfb5ed75971d4084fc81e592f336279bfe48b3a032c15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency log