* ci: daily Hacktoberfest 2026 prep tracker refresh (cron 11:50 UTC) Adds .github/workflows/hacktoberfest_prep.yml (schedule: 50 11 * * *) and scripts/hacktoberfest_prep_update.py. Each run: - ticks tracked PR rows in docs/hacktober_2026_prep.md that are now merged/closed (`[ ]` -> `[x]`), - rewrites an 'Automated statistics' section with the current open issue and open PR counts plus the top three directories with the most open 'awaiting reviews' PRs, - exits non-zero once Hacktoberfest 2026 has begun (>= 2026-10-01), so the prep window closing is loud and the job gets retired. Standard library only; uses the Actions GITHUB_TOKEN. Refs #15081. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * style: wrap implicit string concatenations (ISC004) * refactor: use httpx2 for API calls, drop unneeded future import Address review feedback on the Hacktoberfest prep cron: - Switch the tracker script from urllib to httpx2, the repo's standard HTTP client, and add an install step to the workflow. - Drop 'from __future__ import annotations' (unnecessary on Python >= 3.14t). --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Dealing with the onslaught of Hacktoberfest
Each year, October brings a swarm of new contributors participating in Hacktoberfest. This event has its pros and cons, but it presents a monumental workload for the few active maintainers of this repo. The maintainer workload is further impacted by a new version of CPython being released in the first week of each October.
To help make our algorithms more valuable to visitors, our CONTRIBUTING.md file outlines several strict requirements, such as tests, type hints, descriptive names, functions, and/or classes. Maintainers reviewing pull requests should try to encourage improvements to meet these goals, but when the workload becomes overwhelming (esp. in October), pull requests that do not meet these goals should be closed.
Below are a few gh scripts that should close pull requests that do not match the definition of an acceptable algorithm as defined in CONTRIBUTING.md. I tend to run these scripts in the following order.
- close_pull_requests_with_require_descriptive_names.sh
- close_pull_requests_with_require_tests.sh
- close_pull_requests_with_require_type_hints.sh
- close_pull_requests_with_failing_tests.sh
- close_pull_requests_with_awaiting_changes.sh
- find_git_conflicts.sh
Run on 14 Oct 2025: 107 of 541 (19.77%) pull requests closed.
| Script run | Open pull requests | Pull requests closed |
|---|---|---|
| None | 541 | 0 |
| require_descriptive_names | 515 | 26 |
| require_tests | 498 | 17 |
| require_type_hints | 496 | 2 |
| failing_tests | 438 | 58 |
| awaiting_changes | 434 | 4 |
| git_conflicts | [ broken ] | 0 |