Skip to main content

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)

Source distribution for cs2df 3.1.0
File Size Uploaded
cs2df-3.1.0.tar.gz 89.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cs2df 3.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

3.1.0 This release

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.0

2 release files

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