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.1.0.tar.gz (89.4 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.1.0-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for cs2df-3.1.0.tar.gz
Algorithm Hash digest
SHA256 9994e5e991f9a03f17fdaf85d12baf657745b1b2f919ed55ffdd188aece39873
MD5 76978c5d960765b8687444ac28f609ba
BLAKE2b-256 93ab5c371516f677414f9614226f9d92281221a9a45b68e278dc882bb90a9d6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for cs2df-3.1.0.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: cs2df-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 48.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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a32bb979b86e3652eaaf54e523976d00390b2c18f10fbdb4f24d13af0fce1b9
MD5 d2f72922c4659b892091458ba5ad0e82
BLAKE2b-256 677a956aa386793269bd0235c39417a13260afd2d9c662b4435934a83e686f94

See more details on using hashes here.

Provenance

The following attestation bundles were made for cs2df-3.1.0-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