cs2df
cs2df is the reference Python exporter and validator for the
cs2-demo-format v3 ZIP
contract.
It parses CS2 .dem files with
demoparser2, writes strict v3 ZIP
packages, and validates exported packages with schema plus package-level QA.
Setup
uv sync
The CLI entrypoint is cs2df.
Export
# Standard profile: required files + shots.json + replay.json
uv run cs2df export match.dem
# Research profile: also emit full-tick duels.json windows
uv run cs2df export match.dem --research
# Choose an output path
uv run cs2df export match.dem -o match.zip
The default ZIP compression level is 3, chosen from local benchmark results as
a speed/size balance. Use a higher level when smaller ZIPs matter more:
uv run cs2df export match.dem --compress-level 6
uv run cs2df export match.dem --compress-level 9
Batch Export
uv run cs2df export-batch ./demos --workers 8 --descriptive
export-batch scans one directory non-recursively for .dem files and writes
one ZIP per demo. It also writes report.json next to the outputs with:
- per-demo success/failure status
- output ZIP size
- source demo size
- compression level
- total duration
- aggregate throughput
- parse/package/write stage timings
Bad demos are reported as failed rows; a single parser failure does not crash the
whole batch. Use --fail-fast when you want the batch to stop after the first
failed demo.
Validate
uv run cs2df validate match.zip
uv run cs2df validate match.zip --strict
Validation checks JSON Schema and package-level invariants such as cross-file player indexes, round windows, column lengths, weapon dictionary indexes, and formal-round consistency.
Role in the Repository
This is a reference implementation, not the contract itself. The authoritative
contract lives in ../schemas/index.ts and
the generated JSON Schemas in the repository's spec/ directory. Any producer
that emits a ZIP passing strict validation is conformant.
The exporter also serves as the performance baseline for the v3 format: per-frame data stays in pandas DataFrames until the columnar stream builders materialize compact integer arrays for JSON serialization.
Event-extraction logic was originally ported from cs2-demo-analysis-kit
(and before that DrEAmSs59/CS2-insight-agent, with the author's permission).
Metadata
Release files for cs2df 3.1.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 | |
|---|---|---|---|
| cs2df-3.1.0.tar.gz | 89.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cs2df-3.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 137.5 kB
Release files / cs2df-3.1.0.tar.gz
| Download URL | cs2df-3.1.0.tar.gz |
|---|---|
| Size | 89.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9994e5e991f9a03f17fdaf85d12baf657745b1b2f919ed55ffdd188aece39873
|
|
BLAKE2b-256 checksum How to use checksums |
93ab5c371516f677414f9614226f9d92281221a9a45b68e278dc882bb90a9d6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 20, 2026.
Transparency logRelease files / cs2df-3.1.0-py3-none-any.whl
| Download URL | cs2df-3.1.0-py3-none-any.whl |
|---|---|
| Size | 48.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a32bb979b86e3652eaaf54e523976d00390b2c18f10fbdb4f24d13af0fce1b9
|
|
BLAKE2b-256 checksum How to use checksums |
677a956aa386793269bd0235c39417a13260afd2d9c662b4435934a83e686f94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 20, 2026.
Transparency log