Changes
🔥 Removals and Deprecations
- Removed support for scraping FotMob following their request (#919) @probberechts
- FiveThirtyEight is dead 💀 (#826) @probberechts
🪲 Fixes
- [SoFIFA] Use selenium to bypass Cloudflare protection (#932) @probberechts
- [FBref] Use selenium to bypass Cloudflare protection (#928) @probberechts
- [Sofascore] Update tournaments URL (#914) @probberechts
- [FBref] Add "sec-ch-ua" header (#913) @probberechts
- [Understat] Use new JSON API endpoints (#907) @dimitrismoustakas
- [FotMob] Update read_schedule to use "fixtures" key (#898) @abroadnax
- [SoFIFA] Fix
read_playersandread_team_ratings(#848) @probberechts - [FBref] Increase rate limit (#850) @probberechts
- [SoFIFA] Fix iteration indent error in read_player_ratings (#822) @Trouvaille0198
- [Sofascore] Bypass TLS fingerprinting (#835) @probberechts
👷 Continuous Integration
- Fix GHA pipeline (#915) @probberechts
- poetry -> uv + use cached data in CI (#870) @probberechts
📦 Dependencies
- chore(deps): update dependency python to 3.14 (#725) @renovate[bot]
- chore: drop py3.9; support py3.14; update deps (#933) @probberechts
- chore(deps): update release-drafter/release-drafter action to v7 (#930) @renovate[bot]
- chore(deps): update codecov/codecov-action action to v6 (#929) @renovate[bot]
- chore(deps): update release-drafter/release-drafter action to v6.4.0 (#922) @renovate[bot]
- chore(deps): update crazy-max/ghaction-github-labeler action to v6 (#926) @renovate[bot]
- chore(deps): update codecov/codecov-action action to v5 (#883) @renovate[bot]
- chore(deps): update astral-sh/setup-uv action to v7 (#910) @renovate[bot]
- chore(deps): update actions/setup-python action to v6 (#888) @renovate[bot]
- chore(deps): update pypa/gh-action-pypi-publish action to v1.13.0 (#887) @renovate[bot]
- chore(deps): update actions/checkout action to v6 (#901) @renovate[bot]
- chore(deps): update actions/cache action to v5 (#908) @renovate[bot]
- chore(deps): update actions/cache action to v4 (#875) @renovate[bot]
- chore(deps): update codecov/codecov-action action to v4 (#878) @renovate[bot]
- chore(deps): update actions/checkout action to v5 (#876) @renovate[bot]
- chore(deps): update astral-sh/setup-uv action to v5 (#877) @renovate[bot]
- chore(config): migrate renovate config (#874) @renovate[bot]
- Fix renovate (#873) @probberechts
- Replace undetected_chromedriver by seleniumbase (#846) @probberechts
- chore(deps): update dependency virtualenv to v20.31.2 (#843) @renovate[bot]
- chore(deps): update dependency pre-commit to v4.2.0 (#842) @renovate[bot]
- chore(deps): update dependency pep8-naming to ^0.15.0 (#840) @renovate[bot]
- chore(deps): update dependency pip to v25.1.1 (#841) @renovate[bot]
- chore(deps): update crazy-max/ghaction-github-labeler action to v5.3.0 (#838) @renovate[bot]
- chore(deps): update dependency nbsphinx to v0.9.7 (#821) @renovate[bot]
- chore(deps): update dependency nbsphinx to v0.9.7 (#832) @renovate[bot]
- chore(deps): update codecov/codecov-action action to v5.4.2 (#837) @renovate[bot]
- chore(deps): update actions/setup-python action to v5.6.0 (#836) @renovate[bot]
- chore(deps): update dependency pytest to v8.3.5 (#833) @renovate[bot]
- chore(deps): update dependency ruff to v0.9.10 (#834) @renovate[bot]
- chore(deps): update dependency nox to v2025 (#814) @renovate[bot]
- chore(deps): update dependency coverage to v7.6.12 (#831) @renovate[bot]
- chore(deps): update dependency mypy to v1.15.0 (#811) @renovate[bot]
- chore(deps): update dependency pip to v25.0.1 (#813) @renovate[bot]
- chore(deps): update dependency virtualenv to v20.29.3 - autoclosed (#815) @renovate[bot]
- chore(deps): update actions/cache action to v4.2.3 (#817) @renovate[bot]
- chore(deps): update dependency ruff to v0.9.5 (#810) @renovate[bot]