PureSkill.gg Data Science Development Kit
The shared Python toolkit behind PureSkill.gg’s Counter-Strike data pipeline. It reads parsed matches (CSDS: a JSON manifest plus one parquet file per channel) from S3 or disk into pandas, consumes SQS work queues, loads models from S3 or SageMaker, builds multi-match datasets (“tomes”), and exports AWS Data Exchange revisions. It is a library only: every bucket, queue and dataset is an argument you pass in.
Installation
Requires Python 3.11 or later.
$ uv add pureskillgg-dsdk
The s3_xgboost model type needs the xgboost extra:
$ uv add "pureskillgg-dsdk[xgboost]"
Usage
Read CSDS channels into DataFrames:
from pureskillgg_dsdk import DsReaderS3, GameDsLoader
reader = DsReaderS3(bucket="my-csds-bucket", manifest_key="path/to/match/csds")
loader = GameDsLoader(reader=reader)
deaths = loader.get_channel(
{"channel": "player_death", "columns": ["round", "tick", "attacker_id"]}
)
data = loader.get_channels([{"channel": "header"}, {"channel": "round_end"}])
DsReaderFs(root_path=..., manifest_key=...) reads the same layout from disk. Leave out columns to read every column.
Consume an SQS queue:
import structlog
from pureskillgg_dsdk import SqsConsumer
async def handler(content, metadata):
# content is the message's parsed JSON body.
return True # Delete the message. False leaves it for the redrive policy.
consumer = SqsConsumer(
queue="my-queue", handler=handler, log=structlog.get_logger(), concurrency=4
)
consumer.run() # Blocks. consumer.start() schedules it on a running loop.
Modules
Module |
Main exports |
Used by |
|---|---|---|
ds_io |
GameDsLoader, DsReaderS3, DsReaderFs |
csgo-coach, csgo-ppp, igl-pipeline’s coach_evaluate runner |
sqs |
SqsConsumer, DeleteMessage, SqsJsonMessageTranslator |
csgo-coach, csgo-ppp |
ds_models |
create_ds_models: SageMaker endpoints, and scikit-learn, XGBoost, DataFrame and hashmap models stored on S3 |
csgo-coach |
tome |
TomeCuratorFs, create_tome_curator |
the makenew-pyskill template’s notebooks |
adx |
get_adx_dataset_revisions, download_adx_dataset_revision, and the export_* and *_auto_exporting_* functions |
the makenew-pyskill template’s notebooks |
pureskillgg-csgo-dsdk uses this package in its tests only.
Documentation
docs/sqs-consumer.md: the SqsConsumer handler contract, concurrency, shutdown and error routing.
docs/tome-data-model.md: how tomes are laid out, paged and resumed.
Development
You need Python 3, uv and Git LFS (the test fixtures are in LFS).
$ git clone https://github.com/pureskillgg/dsdk.git $ cd 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-dsdk 3.3.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 | |
|---|---|---|---|
| pureskillgg_dsdk-3.3.0.tar.gz | 36.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pureskillgg_dsdk-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 98.1 kB
Release files / pureskillgg_dsdk-3.3.0.tar.gz
| Download URL | pureskillgg_dsdk-3.3.0.tar.gz |
|---|---|
| Size | 36.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
92df3423938c287a93dfc629814a164a5a4befbb54a39e90b2fdd3c17720ba17
|
|
BLAKE2b-256 checksum How to use checksums |
64f636bd50af4a5054b2c31af392c4d09b452c1fde6b1bf4f6601b1780574ee3
|
| 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_dsdk-3.3.0-py3-none-any.whl
| Download URL | pureskillgg_dsdk-3.3.0-py3-none-any.whl |
|---|---|
| Size | 61.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13db5b9d43b345b234af577378aca15267430723d5542e949e7c88c28f7e0ab6
|
|
BLAKE2b-256 checksum How to use checksums |
f27dc184c10bf08a5d3c36138d960dfc2993a78655d9a15c1a6d64a5e6f1638d
|
| 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}
|