vlrdevapi 2.0.1__tar.gz → 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.gitattributes +5 -1
- vlrdevapi-2.2.0/.github/workflows/cleanup-caches.yml +31 -0
- vlrdevapi-2.2.0/.github/workflows/docs-check.yml +102 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.gitignore +2 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/CHANGELOG.md +52 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/PKG-INFO +1 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/pyproject.toml +1 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/scripts/check_mdx_examples.py +287 -46
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/__init__.py +1 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/info/parser.py +2 -3
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/list/models.py +10 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/namespace.py +6 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/stages/parser.py +4 -6
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/teams/__init__.py +2 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/teams/models.py +22 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/teams/namespace.py +4 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/teams/parser.py +30 -3
- vlrdevapi-2.2.0/src/vlrdevapi/_series/_utils.py +134 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/economy/namespace.py +3 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/economy/parser.py +10 -3
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/match_namespace.py +4 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/performance/models.py +3 -3
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/performance/namespace.py +12 -6
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/performance/parser.py +47 -19
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/players/namespace.py +2 -1
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/players/parser.py +5 -3
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/rounds/namespace.py +3 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/rounds/parser.py +10 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/datetime.py +20 -11
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/timezone.py +9 -2
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/uv.lock +241 -229
- vlrdevapi-2.0.1/.github/workflows/docs-check.yml +0 -29
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.github/workflows/publish.yml +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.github/workflows/test.yml +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.python-version +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/.readthedocs.yaml +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/CODE_OF_CONDUCT.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/CONTRIBUTING.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/LICENCE +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/README.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/SECURITY.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/SUPPORT.md +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/scripts/download_fixtures.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/__init__.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_base.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_cache.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_client.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/_common.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/info/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/info/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/info/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/info/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/list/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/list/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/list/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/list/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/matches/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/matches/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/matches/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/matches/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/matches/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/stages/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/stages/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/stages/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/stages/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/standings/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/standings/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/standings/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/standings/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/standings/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_event/teams/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/common.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/completed/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/completed/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/completed/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/completed/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/completed/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/live/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/live/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/live/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/live/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/live/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/upcoming/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/upcoming/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/upcoming/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/upcoming/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_matches/upcoming/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/_common_parsing.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/agents/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/agents/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/agents/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/agents/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/agents/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/info/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/info/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/info/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/info/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/info/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/matches/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/matches/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/matches/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/matches/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/matches/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/profile/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/profile/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/profile/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/profile/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/profile/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/teams/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/teams/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/teams/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/teams/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_player/teams/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/economy/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/economy/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/economy/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/info/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/info/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/info/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/info/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/info/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/match_namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/performance/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/performance/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/players/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/players/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/players/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/rounds/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/rounds/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/rounds/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/vods/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/vods/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/vods/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/vods/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_series/vods/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/completed_matches/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/completed_matches/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/completed_matches/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/completed_matches/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/completed_matches/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/info/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/info/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/info/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/info/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/info/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/placements/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/placements/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/placements/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/placements/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/placements/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/roster/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/roster/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/roster/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/roster/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/roster/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/stats/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/stats/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/stats/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/stats/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/stats/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/transactions/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/transactions/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/transactions/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/transactions/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/transactions/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/upcoming_matches/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/upcoming_matches/models.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/upcoming_matches/namespace.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/upcoming_matches/namespace.pyi +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_team/upcoming_matches/parser.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_utils/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_utils/pagination.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_utils/paths.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_utils/team_enrichment.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/_utils/team_parsing.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/__init__.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/countries.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/mappings.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/commons/prizes.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/exceptions.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/fetcher.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/py.typed +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/src/vlrdevapi/validators.py +0 -0
- {vlrdevapi-2.0.1 → vlrdevapi-2.2.0}/wrangler.jsonc +0 -0
|
@@ -4,4 +4,8 @@ docs-py/** linguist-vendored
|
|
|
4
4
|
|
|
5
5
|
# Exclude test fixtures
|
|
6
6
|
tests/test_html/** linguist-vendored
|
|
7
|
-
tests/test_html/** linguist-detectable=false
|
|
7
|
+
tests/test_html/** linguist-detectable=false
|
|
8
|
+
|
|
9
|
+
# Normalize workflow YAML line endings
|
|
10
|
+
*.yml text eol=lf
|
|
11
|
+
*.yaml text eol=lf
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Cleanup docs-check caches on closed PRs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types:
|
|
6
|
+
- closed
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
actions: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
cleanup:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: Delete PR caches
|
|
16
|
+
env:
|
|
17
|
+
GH_TOKEN: ${{ github.token }}
|
|
18
|
+
GH_REPO: ${{ github.repository }}
|
|
19
|
+
BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
20
|
+
run: |
|
|
21
|
+
echo "Fetching list of cache keys"
|
|
22
|
+
cacheKeysForPR=$(gh cache list --ref $BRANCH --limit 100 --json id --jq '.[].id')
|
|
23
|
+
|
|
24
|
+
## Setting this to not fail the workflow while deleting cache keys.
|
|
25
|
+
set +e
|
|
26
|
+
echo "Deleting caches..."
|
|
27
|
+
for cacheKey in $cacheKeysForPR
|
|
28
|
+
do
|
|
29
|
+
gh cache delete $cacheKey
|
|
30
|
+
done
|
|
31
|
+
echo "Done"
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
name: Docs Check
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- 'official-docs/**'
|
|
7
|
+
- 'docs-py/**'
|
|
8
|
+
push:
|
|
9
|
+
branches: [main]
|
|
10
|
+
paths:
|
|
11
|
+
- 'official-docs/**'
|
|
12
|
+
- 'docs-py/**'
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
check:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v7
|
|
19
|
+
|
|
20
|
+
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.12'
|
|
23
|
+
|
|
24
|
+
- name: Install package
|
|
25
|
+
run: uv sync --group dev
|
|
26
|
+
|
|
27
|
+
# main always validates live against fresh vlr.gg data; never uses the
|
|
28
|
+
# cache. Branch/PR runs reuse fixtures cached by earlier runs in the
|
|
29
|
+
# same PR (within a 2h TTL), falling back to live fetches for anything
|
|
30
|
+
# missing, so the check is correct even with a partially-stale cache.
|
|
31
|
+
- name: Run MDX examples check (main, live)
|
|
32
|
+
if: github.ref_name == 'main'
|
|
33
|
+
run: uv run scripts/check_mdx_examples.py --live
|
|
34
|
+
|
|
35
|
+
# actions/cache v6.1.0, pinned to a reviewed commit SHA.
|
|
36
|
+
- name: Restore fixture cache (branch)
|
|
37
|
+
id: mdx-fixtures
|
|
38
|
+
if: github.ref_name != 'main'
|
|
39
|
+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
|
|
40
|
+
with:
|
|
41
|
+
path: fixtures.tar.gz
|
|
42
|
+
key: mdx-fixtures-${{ github.ref_name }}-run-${{ github.run_id }}
|
|
43
|
+
restore-keys: |
|
|
44
|
+
mdx-fixtures-${{ github.ref_name }}-
|
|
45
|
+
|
|
46
|
+
- name: Unpack fixtures (branch)
|
|
47
|
+
if: github.ref_name != 'main'
|
|
48
|
+
run: |
|
|
49
|
+
if [ -f fixtures.tar.gz ]; then
|
|
50
|
+
mkdir -p .cache
|
|
51
|
+
tar -C .cache -xzf fixtures.tar.gz
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
- name: Check fixture cache age (branch, 2h TTL)
|
|
55
|
+
id: cache-age
|
|
56
|
+
if: github.ref_name != 'main'
|
|
57
|
+
run: |
|
|
58
|
+
matched="${{ steps.mdx-fixtures.outputs.cache-matched-key }}"
|
|
59
|
+
now=$(date +%s)
|
|
60
|
+
if [ -n "$matched" ]; then
|
|
61
|
+
epoch="${matched##*-}"
|
|
62
|
+
age=$(( now - epoch ))
|
|
63
|
+
else
|
|
64
|
+
age=999999
|
|
65
|
+
fi
|
|
66
|
+
if [ "$age" -gt 7200 ]; then
|
|
67
|
+
rm -rf .cache/mdx-html
|
|
68
|
+
rm -f fixtures.tar.gz
|
|
69
|
+
mkdir -p .cache/mdx-html
|
|
70
|
+
echo "fresh=false" >> "$GITHUB_OUTPUT"
|
|
71
|
+
else
|
|
72
|
+
echo "fresh=true" >> "$GITHUB_OUTPUT"
|
|
73
|
+
fi
|
|
74
|
+
echo "now=$now" >> "$GITHUB_OUTPUT"
|
|
75
|
+
|
|
76
|
+
- name: Run MDX examples check (branch)
|
|
77
|
+
if: github.ref_name != 'main'
|
|
78
|
+
run: |
|
|
79
|
+
if [ "${{ steps.cache-age.outputs.fresh }}" == "true" ]; then
|
|
80
|
+
uv run scripts/check_mdx_examples.py --skip-warm
|
|
81
|
+
else
|
|
82
|
+
uv run scripts/check_mdx_examples.py
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# always(): a run that fails validation still saved its warm fixtures,
|
|
86
|
+
# so the next fix commit restores and validates fast instead of warming.
|
|
87
|
+
- name: Package fixtures (branch)
|
|
88
|
+
if: always() && github.ref_name != 'main' && steps.cache-age.outputs.fresh == 'false'
|
|
89
|
+
run: |
|
|
90
|
+
mkdir -p .cache/mdx-html
|
|
91
|
+
if [ -n "$(ls -A .cache/mdx-html)" ]; then
|
|
92
|
+
tar -C .cache -czf fixtures.tar.gz mdx-html
|
|
93
|
+
else
|
|
94
|
+
rm -f fixtures.tar.gz
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
- name: Save fixture cache (branch)
|
|
98
|
+
if: always() && github.ref_name != 'main' && steps.cache-age.outputs.fresh == 'false'
|
|
99
|
+
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
|
|
100
|
+
with:
|
|
101
|
+
path: fixtures.tar.gz
|
|
102
|
+
key: mdx-fixtures-${{ github.ref_name }}-${{ steps.cache-age.outputs.now }}
|
|
@@ -5,6 +5,56 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [2.2.0] - 2026-08-11
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Events list dates without a year** — `event.list()` dates are rendered
|
|
13
|
+
on vlr.gg without a year (e.g. `"Jul 9 – Aug 23"`). These now use a
|
|
14
|
+
sentinel year of `2019` instead of the current year. Any parsed date with
|
|
15
|
+
`year < 2020` means the source omitted the year, so guard with
|
|
16
|
+
`event.start_date.year < 2020` before relying on it.
|
|
17
|
+
- **Series performance field renames (breaking)** — `AdvStatsEntry` fields
|
|
18
|
+
were renamed to descriptive names: `econ` → `economy`, `pl` → `plants`,
|
|
19
|
+
and `de` → `defuses`. Update any code referencing the old field names.
|
|
20
|
+
The series performance reference docs were updated to match.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **Python 3.13/3.15 date parsing deprecation** — `datetime.strptime` emits
|
|
25
|
+
a `DeprecationWarning` when parsing a day-of-month without a year (and will
|
|
26
|
+
change behavior in Python 3.15). All such parses now supply an explicit
|
|
27
|
+
year derived from context (reference date, page-header year, or the
|
|
28
|
+
sentinel above).
|
|
29
|
+
- **Series per-game stats by game number** — `players()`, `rounds()`,
|
|
30
|
+
`performance()`, and `economy()` game identifiers can now be a 1-based
|
|
31
|
+
game number within the series, resolved to the real VLR game ID from the
|
|
32
|
+
page's game nav tabs. A real VLR game ID is still accepted unchanged;
|
|
33
|
+
previously passing a game number produced empty results.
|
|
34
|
+
- **Series economy and rounds scope** — economy and round-by-round data are
|
|
35
|
+
now parsed from the selected game's section only. The economy parser
|
|
36
|
+
previously collected tables from the whole page, so a per-game request
|
|
37
|
+
could include data from other maps.
|
|
38
|
+
- **Series performance player IDs** — the performance tab renders player
|
|
39
|
+
cells without links, leaving player IDs as `0`. IDs are now recovered from
|
|
40
|
+
the series overview tab (keyed by team abbreviation and player name) and
|
|
41
|
+
attached to kill-matrix entries, advanced stats, and notable-round victims.
|
|
42
|
+
|
|
43
|
+
## [2.1.0] - 2026-08-07
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **Event teams player rosters** — `event.teams()` now includes a `players`
|
|
48
|
+
list on each `Team`, containing each player's `name` and `id` parsed from
|
|
49
|
+
the event page. The `players` field is always present and defaults to `[]`
|
|
50
|
+
when roster data is unavailable. A new `TeamPlayer` model was added and exposed
|
|
51
|
+
from the `_event.teams` submodule.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **Documentation** — event teams reference updated with the new `players`
|
|
56
|
+
field, a `TeamPlayer` fields table, and a roster iteration example.
|
|
57
|
+
|
|
8
58
|
## [2.0.1] - 2026-07-29
|
|
9
59
|
|
|
10
60
|
### Fixed
|
|
@@ -92,5 +142,7 @@ The API surface, module structure, and type system are all new.
|
|
|
92
142
|
- `aiohttp` and `asyncio` dependencies.
|
|
93
143
|
- v1.x match/event/team parsing modules.
|
|
94
144
|
|
|
145
|
+
[2.2.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v2.1.0...v2.2.0
|
|
146
|
+
[2.1.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v2.0.1...v2.1.0
|
|
95
147
|
[2.0.1]: https://github.com/Vanshbordia/vlrdevapi/compare/v2.0.0...v2.0.1
|
|
96
148
|
[2.0.0]: https://github.com/Vanshbordia/vlrdevapi/compare/v1.6.2...v2.0.0
|