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]"
Reading tomes into polars (get_dataframe(library="polars") and scan()) needs the polars extra:
$ uv add "pureskillgg-dsdk[polars]"
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, extract_adx_zips, 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 4.1.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-4.1.0.tar.gz | 85.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pureskillgg_dsdk-4.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 197.8 kB
Release files / pureskillgg_dsdk-4.1.0.tar.gz
| Download URL | pureskillgg_dsdk-4.1.0.tar.gz |
|---|---|
| Size | 85.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c119f3b7b0ae6cc65ab27ac16638c92e1e374652f55974528b4e61dc9862429
|
|
BLAKE2b-256 checksum How to use checksums |
0a71e482ca33ee8c88771e53789853cb369d3e548c945e61fc92eb8fbae2de8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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-4.1.0-py3-none-any.whl
| Download URL | pureskillgg_dsdk-4.1.0-py3-none-any.whl |
|---|---|
| Size | 111.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e9d2cbe92e0cde61f9939a6fd22f76182a7a5fa2a02bb0557a391c67a5d959c6
|
|
BLAKE2b-256 checksum How to use checksums |
0ab56cd36d04757959fa89520d6adcc60b52a0da500803765ee25d72ae7605d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","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}
|