mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-08-24 07:41:45 +02:00
## ℹ️ Description - Closes #1226 - Raise the supported Python range from 3.10–3.14 to 3.12–3.15 before Python 3.10 reaches end of life. - Modernize the codebase with behavior-preserving Python 3.11 and 3.12 idioms while keeping CLI, configuration, persistence, and browser behavior stable. ## 📋 Changes Summary - Set `requires-python` and the PDM lock target to `>=3.12,<3.16`. - Test Python 3.12 and Python 3.15 prereleases across all supported CI platforms. - Build and publish native release artifacts and Docker images with stable Python 3.12; keep Python 3.15 as compatibility-only coverage until its final release. - Update CodeQL, dependency updates, local Act configuration, Ruff, mypy, BasedPyright, README, CONTRIBUTING, and AGENTS guidance. - Enable Ruff's `UP` rules and adopt applicable standard-library imports, `datetime.UTC`, built-in `TimeoutError`, PEP 695 type aliases and generic syntax. - Replace deprecated `shutil.rmtree(onerror=...)` usage with Python 3.12's `onexc` callback API and update its tests. - Regenerate `pdm.lock` for the full supported interpreter range and integrate the latest dependency updates from `main`. ### ⚙️ Type of Change - [ ] 🐞 Bug fix (non-breaking change which fixes an issue) - [ ] ✨ New feature (adds new functionality without breaking existing usage) - [x] 💥 Breaking change (changes that might break existing user setups, scripts, or configurations) ## ✅ Checklist - [x] I have reviewed my changes to ensure they meet the project's standards. - [x] I have tested my changes and ensured that all tests pass (`pdm run test`). - [x] I have formatted the code (`pdm run format`). - [x] I have verified that linting passes (`pdm run lint`). - [x] I have updated documentation where necessary. Validation details: - 1507 tests passed, 4 skipped - 93.07% total coverage - Generated schemas, default configuration, and README usage are up to date - Source CLI and PyInstaller binary smoke checks passed - Local PyInstaller build and binary smoke checks passed on Python 3.12.14; Python 3.12/3.15 platform coverage is delegated to the updated CI matrix By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for Python 3.12 through 3.15. * Improved compatibility with modern Python typing and datetime APIs. * **Bug Fixes** * Improved timeout handling and directory cleanup behavior. * Enhanced update-checking and web-scraping reliability. * **Documentation** * Updated installation and contribution requirements to Python 3.12–3.15. * **Tests** * Expanded coverage for update checks, timeout messages, and edge cases. <!-- end of auto-generated comment: release notes by coderabbit.ai -->