PureSkill.gg CS:GO Data Science Development Kit
Counter-Strike helpers for CSDS match data (a manifest plus one pandas DataFrame per channel). scrub_csds_pii anonymizes a match before it leaves the platform, and pop_overtime removes overtime rounds from a channel. It works on data you have already loaded, usually with pureskillgg-dsdk.
Installation
Requires Python 3.11 or later.
$ uv add pureskillgg-csgo-dsdk
It does not install pureskillgg-dsdk. The example below loads the match with it, so add it too:
$ uv add pureskillgg-dsdk
Usage
Scrub a match, then pop overtime:
from pureskillgg_dsdk import DsReaderS3, GameDsLoader
from pureskillgg_csgo_dsdk import (
csds_pii_channel_instructions,
pop_overtime,
scrub_csds_pii,
)
loader = GameDsLoader(
reader=DsReaderS3(bucket="my-csds-bucket", manifest_key="path/to/match/csds")
)
# Load only the PII channels this CSDS has, then scrub them.
data = loader.get_channels(csds_pii_channel_instructions(loader.manifest))
manifest = scrub_csds_pii(loader.manifest, data) # data is scrubbed in place
# CS2 regulation is 24 rounds (MR12). The default, 30, is CS:GO MR15.
deaths = loader.get_channel({"channel": "player_death"})
overtime = pop_overtime(deaths, max_rounds_csgo=24) # deaths keeps rounds 1-24
scrub_csds_pii returns the new manifest. It replaces the job id with the anonymous id, redacts names, clan tags, chat, share codes and demo ids, maps each Steam id to a letter, zeroes pings, caps inflated win and commend counts, and marks every changed column in the manifest. docs/scrub-csds-pii.md lists every field.
pop_overtime returns the removed rows with their original index labels. Rows with a missing round stay. A channel without a round column raises MissingColumns.
Exports
Export |
Used by |
|---|---|
scrub_csds_pii, SCRUB_CSDS_PII_CHANNEL_INSTRUCTIONS |
csgo-ppp’s scrubber |
csds_pii_channel_instructions |
no consumer yet; prefer it to the constant, which names channels an older CSDS may not have |
pop_overtime |
csgo-coach’s economy course |
MissingColumns, UnsupportedChannelStructure |
raised when a DataFrame lacks a required column |
Development
You need Python 3, uv and Git LFS (the test fixtures are in LFS).
$ git clone https://github.com/pureskillgg/csgo-dsdk.git $ cd csgo-dsdk $ git lfs install $ git lfs pull $ uv sync
The tasks are in the Makefile: make lint, make test, make watch (tests on every change) and make format.
Publishing
Set the new version with uv version <version> (or uv version --bump patch), then run make version. It commits pyproject.toml and uv.lock and pushes a signed v* tag, which triggers the publish workflow. Or run the version workflow by hand with a version number or a bump (patch, minor, major); it does both steps.
Publishing needs the PYPI_API_TOKEN repository secret. The version and format workflows also need GH_USER, GH_TOKEN, GIT_USER_NAME, GIT_USER_EMAIL, GPG_PRIVATE_KEY and GPG_PASSPHRASE.
License
MIT. See LICENSE.txt.
Metadata
Release files for pureskillgg-csgo-dsdk 3.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pureskillgg_csgo_dsdk-3.2.2.tar.gz | 8.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pureskillgg_csgo_dsdk-3.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.3 kB
Release files / pureskillgg_csgo_dsdk-3.2.2.tar.gz
| Download URL | pureskillgg_csgo_dsdk-3.2.2.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2b30ff0abcbb55fed5deb8f07ba12860eea82df242d876a37e217365cf79559
|
|
BLAKE2b-256 checksum How to use checksums |
f0f2851f84dc6baf335e476e3961e81d7805aa9dd70b755a582cdb7964584be1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pureskillgg_csgo_dsdk-3.2.2-py3-none-any.whl
| Download URL | pureskillgg_csgo_dsdk-3.2.2-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8169ab2033b66ab14c5d101cb71ce84b07553d0ce326524369199cde45cbd12
|
|
BLAKE2b-256 checksum How to use checksums |
cdf8d9120dcb212ca121511d8b684348bc14c77f357fa07040707a5a7a8383a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|