Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d6453cc
alpha release
probberechts Mar 9, 2026
cd31687
refactor: clean up old tests folder
probberechts Apr 3, 2026
892b20f
feat: support skeletal data
probberechts Apr 3, 2026
e2715c4
feat: implement high-performance Rust pivot for catalog loading
probberechts Apr 8, 2026
c00b09c
feat: update iceberg schema to snake_case and add entity_type
probberechts Apr 8, 2026
e655624
feat: rename player_id to entity_id and update iceberg field order/re…
probberechts Apr 8, 2026
ff20912
perf: store unique entities in metadata for fast schema reconstruction
probberechts Apr 8, 2026
4b9332a
cleanup: remove backward compatibility and streamline catalog schema …
probberechts Apr 8, 2026
3190883
fix: resolve VariantNotFound panic in pivot and align tests with snak…
probberechts Apr 8, 2026
8e170a8
perf: implement entity attribute normalization in catalog metadata
probberechts Apr 8, 2026
220c173
feat: allow null values in x, y, and z fields in catalog and pivot
probberechts Apr 8, 2026
33ef840
feat: enforce x/y column presence while allowing null values
probberechts Apr 8, 2026
cdf7215
feat: use hierarchical structure for entity metadata
probberechts Apr 8, 2026
8a7d7f0
perf: omit None attributes from hierarchical entity metadata
probberechts Apr 8, 2026
f4e9b4b
perf: merge team-level attributes into hierarchical team metadata
probberechts Apr 8, 2026
e5e3c0d
perf: flatten hierarchical team metadata attributes
probberechts Apr 8, 2026
6c9cf8e
fix: remove redundant team/id for referees and exclude entity_key fro…
probberechts Apr 8, 2026
8a08119
feat: use IcebergConfig for default catalog configuration and optimiz…
probberechts Apr 8, 2026
a507767
refactor: use TrackedEntity objects and simplify catalog logic
probberechts Apr 8, 2026
6e0060f
iceberg support
probberechts Apr 21, 2026
33963ce
feat: support multiple schemas
probberechts Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 181 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
# This file is autogenerated by maturin v1.10.2
# To update, run
#
# maturin generate-ci github
#
name: CI

on:
push:
branches:
- main
- master
tags:
- '*'
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
linux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: x86
- runner: ubuntu-22.04
target: aarch64
- runner: ubuntu-22.04
target: armv7
- runner: ubuntu-22.04
target: s390x
- runner: ubuntu-22.04
target: ppc64le
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist

musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: x86
- runner: ubuntu-22.04
target: aarch64
- runner: ubuntu-22.04
target: armv7
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist

windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist

macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-13
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist

sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
needs: [linux, musllinux, windows, macos, sdist]
permissions:
# Use to sign the release artifacts
id-token: write
# Used to upload release artifacts
contents: write
# Used to generate artifact attestation
attestations: write
steps:
- uses: actions/download-artifact@v4
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-path: 'wheels-*/*'
- name: Publish to PyPI
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*
72 changes: 72 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Rust
/target
**/*.rs.bk
Cargo.lock.lock

# Python
__pycache__/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.benchmarks/
*.py[cod]
*$py.class
*.so
.Python
.venv/
env/
venv/
ENV/
dist/
build/
*.egg-info/
*.egg
.installed.cfg
pip-log.txt
pip-delete-this-directory.txt
pip-selfcheck.json
.python-version

# Jupyter Notebook
.ipynb_checkpoints
*/.ipynb_checkpoints/*

# Coverage / CI
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/

# Documentation
docs/_build/
site/

# IDEs
.idea/
.vscode/
*.swp
*.swo

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Logs
*.log

# Project Specific
data/
examples/data/
python/tracking_data_container/lib_tracking_data_container.dylib.*
python/tracking_data_container/libtracking_data_container.dylib.*
python/tracking_data_container/*.dylib
python/tracking_data_container/*.so
26 changes: 26 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: http://github.com/doublify/pre-commit-rust
rev: v1.0
hooks:
- id: cargo-check
- repo: local
hooks:
- id: lint
name: Lint
entry: make lint
types_or: [python, rust]
language: system
pass_filenames: false
- id: format
name: Format
entry: make format
types_or: [python, rust]
language: system
pass_filenames: false
2 changes: 2 additions & 0 deletions .rust-analyzer.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[cargo]
features = ["python"]
Loading