Proposal
The last main release Pywikibot 10 was released in March 2024. I propose to drop support for Python 3.8 with Pywikibot 11, which will likely be deployed at the end of 2025 or later. Python 3.8 reached EOL in October 2024 (1). A warning message will be added in Pywikibot 10.6 (master only) in October 2025. The current download statistic of the last 6 months is as follows (2):
Pywikibot downloads by Python version (last 6 months) — October 2025
| Python | % | rank |
| 3.15 | 0.0 | |
| 3.14 | 0.0 | |
| 3.13 | 1.5 | |
| 3.12 | 70.1 | ⏹⏹⏹⏹⏹⏹⏹ |
| 3.11 | 17.7 | ⏹⏹ |
| 3.10 | 6.1 | ⏹ |
| 3.9 | 1.7 | |
| 3.8 | 0.1 | |
| other | 0.1 | |
| unknown | 2.7 | |
Please add your remarks, expand pros and cons list, and note any potential blockers.
Pros
- Toolforge already supports Python 3.13 (T381899)
- Many third-party packages have dropped Python 3.8 support; building Pywikibot packages (e.g., for pywikibot.org nightly dumps) causes numerous warnings due to outdated settings, see T398947 for example
- Dropping Python 3.8 removes the need to keep compatibility workarounds and suppress deprecation warnings for features removed in newer Python versions, see changelog.
- Python 3.9 introduced useful feature such as str.removeprefix(prefix) and str.removesuffix(suffix) (3)
- concurrent.futures.shutdown() in Python 3.9 supports the cancel_futures parameter, replacing the current workaround of manually calling cancel() on each Future.
- The new graphlib module (added in Python 3.9) could be leveraged for category tree processing
- Very low usage of Python 3.8 (~0.3%).
- GitHub CI runs will be faster without Python 3.8 in the test matrix
- PyPy 3.8 is no longer available on the latest Ubuntu OS (requires Ubuntu 22.04)
- Users can continue using Python 3.8 with Pywikibot 10.
- No backports of typing.Dict, typing.List etc. necessary for typing.cast()
Cons
- Python 3.9 introduces syntax changes that cannot be backported
- Users on older environments will no longer receive Pywikibot updates after version 10
- Bugfixes for Python 3.8 users will not be available in newer Pywikibot versions.
- Potential disruption for users on legacy systems (e.g., shared hosting, old enterprise distributions)
- Changes listed in the Pywikibot changelog may require modifications to private scripts when upgrading, especially if deprecated features have been removed
Backward compatibility
Dropping Python 3.8 support will not break existing scripts immediately. Users who still rely on Python 3.8 can continue using Pywikibot 10 without changes. However, they will not receive further updates, new features, or bugfixes in later releases. Migrating to Python ≥ 3.9 is recommended to ensure compatibility with future Pywikibot versions and third-party packages.
Conclusion
Ending Python 3.8 support in Pywikibot 11 aligns with upstream EOL, reduces maintenance overhead, and enables the use of modern Python features without compatibility workarounds. Given the very low adoption rate (~0.3%), the benefits clearly outweigh the drawbacks.