Skip to main content

Reference exporter & validator CLI for cs2-demo-format v3 (CS2 demo → ZIP data package)

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cs2df-3.0.2.tar.gz (84.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cs2df-3.0.2-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file cs2df-3.0.2.tar.gz.

File metadata

  • Download URL: cs2df-3.0.2.tar.gz
  • Upload date:
  • Size: 84.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cs2df-3.0.2.tar.gz
Algorithm Hash digest
SHA256 7e329786a3b84ecf7fafa495fc0a37c811dfb73111aaadd723988cf564256413
MD5 1e1fada263459b3156690006084e620e
BLAKE2b-256 e4440955b9ed172ce1b410881e82ba635cc50b56430f4e166af72c45aeffc19b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cs2df-3.0.2.tar.gz:

Publisher: publish-pypi.yml on Starfie1d1272/cs2-demo-format

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cs2df-3.0.2-py3-none-any.whl.

File metadata

  • Download URL: cs2df-3.0.2-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cs2df-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0459fbaebbe1bf0cd7b974cc63ea3905ffe9440c1429a30889ad5e451674af96
MD5 ed5da31ff1e365d54b00d88cd225d04c
BLAKE2b-256 5acd9a996a29ffbddc3089a502d33b2c5ccf2c103de83b65fb825e9a2af0dd63

See more details on using hashes here.

Provenance

The following attestation bundles were made for cs2df-3.0.2-py3-none-any.whl:

Publisher: publish-pypi.yml on Starfie1d1272/cs2-demo-format

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page