We’ve set a limit for the maximum number of PRs you can open at python/cpython to 3, including drafts.
-
This does not affect members of the core or triage teams.
-
If you have more than 3 PRs already open, they stay open, but you won’t be able to open another before dropping below the limit.
We have done this following several recent incidents of bulk PR creation in a short amount of time, and we’re struggling to handle them. For example:
-
Today: 21 CPython PRs opened in a single two-hour burst across about 19 unrelated stdlib areas, as part of 177 template-written PRs sent to 13 repos in three weeks. Account banned by one project.
-
October: 19 CPython PRs opened plus 13 companion issues in a 20-minute burst across about 22 unrelated stdlib modules.
-
October: 7 CPython issues opened, then then 7 matching PRs within a single minute across unrelated modules, all 14 still untouched by a reviewer, from an account with 60 PRs spread over 18 repos.
-
September: 17 CPython PRs opened over three days across unrelated modules, as part of 225 PRs across ~50 repos.
-
September: A user whose profile boasts a “117 PRs merged upstream” badge, opened 6 CPython PRs in two hours against unrelated modules, as part of 487 PRs across ~40 repos, about half of those closed unmerged since August.
Yes, these do look LLM generated, and no, we don’t want to be the first humans to read that code.
(We also get mass issue reports, but unfortunately GitHub has no configurable limit for this.)
A reminder from our AI policy:
Authors must review the work done by AI tooling in detail to ensure it actually makes sense before proposing it as a PR or filing it as an issue.
We expect PR authors and those filing issues to be able to explain their proposed changes in their own words.
And:
Maintainers may close issues and PRs that are not useful or productive, without explanation, regardless of whether AI tools were used or not.
If a contributor repeatedly opens unproductive issues or PRs, they may be blocked from contributing to the project because it is disruptive and disrespectful of the maintainers time.