Public issue detail

Runaway CPU investigation for python3.13: busy poll at _raw_spin_lock_irqsave

python3.13 is stuck in a likely busy poll loop: 50.00% of sampled CPU passed through _raw_spin_lock_irqsave, with repeated thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>.

highpackage: python3.13-minimalsource: python3.13score: 106reports: 2

Last seen: 2026-05-12 19:05 UTC. Public JSON: /v1/issues/019dffa1-4d5d-7581-802b-5a04a98c6a50

Best Available Diagnosis

Fixer does not have a ready diff or triage handoff for this issue yet, but it does have a published diagnosis-only result. This is the clearest current explanation of what workers found.

diagnosis availablecreated: 2026-05-12 06:22 UTCvalidation: ready

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 06:22 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high aggregate CPU attributed to `python3.13` while running `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, but the collected syscall evidence shows a one-second cadence: `wait4(..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0 <~1.001s>`. That looks like an application-level supervisord event loop, not a tight CPython runtime poll loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose and close/redirect unless an independent reproduction ties the CPU to a CPython bug. A maintainer-facing subject would be: `No CPython change: supervisord evidence shows timed polling, not runtime busy-poll`.

## Patch Plan
Do not edit CPython in this pass. The evidence does not identify a CPython defect: the backtrace is mostly unsymbolized, the process is `S (sleeping)`, `wchan` is `poll_schedule_timeout`, and strace shows blocking `poll(1000)` calls rather than immediate wakeups.

If new evidence later proves a CPython issue, inspect the relevant CPython subsystem before patching and follow existing helpers/conventions found here: `select.poll()` uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry handling with `PyErr_CheckSignals`; `os.wait4()`/`waitpid()` wrappers use the same thread-release and EINTR pattern. No relevant local helper is missing from the currently implicated path.

No prior Fixer patch was found in this workspace; Debian has quilt patches, but none appear to target this finding. Avoid any awkward control-flow patch such as adding `goto`-based throttling to CPython’s poll/wait wrappers, because the observed loop already blocks for about one second and should not be changed without a reproducer.

## Risks
Changing CPython’s `poll`, `selectors`, `wait4`, or subprocess wait behavior from this evidence would risk altering documented blocking semantics and signal/EINTR behavior for all Python users while only addressing a likely supervisord policy loop.

The raw investigation artifact directory and `supervisord` executable/config are not present in this workspace, so the collected evidence cannot currently be independently replayed here.

## Validation
Before reporting any source patch, try the project build entrypoint from the workspace root: `./configure && make`. If it fails due to missing build dependencies or generated files, record the exact failure and then run the narrowest relevant compile/check.

For the independent failure-signal check, when `supervisord` is available, run a bounded replay such as `timeout 8s strace -f -e poll,wait4 -tt -T /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` and verify whether `poll(..., 1000)` blocks for about one second or returns immediately. Without that reproduction showing immediate wakeups or a CPython frame responsible for CPU burn, do not claim `reproduced` or submit a CPython patch.

## Patch Pass

Subject: No patch: diagnose supervisord timed polling

## Commit Message
No source change is proposed. The collected evidence does not show a CPython runtime busy loop: it shows `supervisord` running under Python, sleeping in `poll(2)` with a one-second timeout and periodically calling `wait4(..., WNOHANG)`.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected a perf/profile signal for `/usr/bin/python3.13` with high aggregate CPU, but the `/proc` and strace details point away from a tight interpreter loop. The process state was `S (sleeping)`, `wchan` was `poll_schedule_timeout`, and strace showed repeated `poll(..., 1000)` calls returning after about `1.001s`, with `wait4(-1, ..., WNOHANG)` returning `ECHILD`.

The cautious inference is that this is an application-level `supervisord` polling loop, not a CPython `select.poll()` or `os.wait4()` bug. I followed the saved plan and did not change course: no source diff was left because the evidence remains indirect and does not identify a safe upstream CPython fix.

I inspected the relevant CPython helpers and conventions. `Modules/selectmodule.c` already uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry via `PyErr_CheckSignals`; `Modules/posixmodule.c` uses the matching GIL-release and EINTR pattern for `wait4()`/`waitpid()`. No missing local helper or clearer bounded control-flow change was found.

The expected effect of this proposal is to avoid an unjustified CPython behavior change and preserve the current documented poll/wait semantics until stronger evidence ties the reported CPU use to CPython itself.

## Git Add Paths
None

## Validation
Ran `./configure && make` from the workspace root. It completed with exit code 0. During the build, CPython reported `_ssl` failed to import due to `undefined symbol: TLSv1_method`, and listed `_dbm`, `_gdbm`, and `_tkinter` as missing optional modules.

Ran `make distclean` afterward to remove generated build products; `git status --short` is clean.

Independent reproduction was attempted but blocked: `command -v supervisord` returned no path, `/etc/supervisor/supervisord.conf` was absent (`test -e ...` returned `1`), and the raw investigation directory from `evidence.json` was not present. Therefore I did not reproduce the failure locally.

## Review Pass 1

RESULT: ok

No source diff is present and `git status --short` is clean, so there are no code-level regressions to review.

The no-patch diagnosis is consistent with the evidence: strace shows timed `poll(..., 1000)` sleeps rather than a tight CPython loop, and the response correctly uses `inferred` confidence, avoids inventing a reproducer, names the relevant CPython helper conventions, and reports the project-level `./configure && make` validation plus the blocked independent reproduction attempt.

Technical snapshot

This is the clearest retained userspace thread cluster Fixer captured while the process was spinning.

Representative thread backtrace

  • Command: /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
  • Why Fixer classified it this way: The trace repeatedly returns to a poll-family syscall without meaningful blocking, which suggests a busy event-loop wakeup.
  • Thread summary: thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
  • Contention signals: gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory.
  • Repeated loop: poll -> wait4 -> poll
  • Top syscalls: poll x5, wait4 x5, restart_syscall x1
  • Package: python3.13-minimal 3.13.12-1
  • Kernel: 6.17.10+deb14-amd64
  • Distribution: debian
0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
0x0000000000b7ddf3 in ?? ()
0x00000000313fd7e7 in ?? ()
0x0000000000a56c88 in _PyRuntime ()
0x00007f1c6e7efead in ?? () from target:<path>
0x0000000000000007 in ?? ()
0x000000000054aeb0 in PyMem_Realloc ()
0x000000000067ca5b in ?? ()

Possible duplicates

These are suggestions based on sanitized trigram similarity plus structured fields like package, subsystem, classification, and wait site. They are not auto-merged.

python3.13 is stuck in a likely busy poll loop: 50.00% of sampled CPU passed through _PyEval_FrameClearAndPop, with repeated thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>.

highpackage: python3.13-minimalsource: python3.13score: 106reports: 2successful triagesimilarity: 99%

Why this looks related: same classification, same package, same source package, same subsystem, same target, same wait site, very similar public summary

Last seen: 2026-10-24 03:01 UTC. Public page: /issues/019dd062-04a8-7e03-b3a3-5bb273aa2f42. Public JSON: /v1/issues/019dd062-04a8-7e03-b3a3-5bb273aa2f42

python3.13 is stuck in a likely busy poll loop: 50.00% of sampled CPU passed through read_tsc, with repeated thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>.

highpackage: python3.13-minimalsource: python3.13score: 106reports: 2successful triagesimilarity: 99%

Why this looks related: same classification, same package, same source package, same subsystem, same target, same wait site, very similar public summary

Last seen: 2026-10-10 01:56 UTC. Public page: /issues/019da8df-cd0c-7880-ab1e-6dd908d64437. Public JSON: /v1/issues/019da8df-cd0c-7880-ab1e-6dd908d64437

python3.13 is stuck in a likely busy poll loop: 40.65% of sampled CPU passed through idle_cpu, with repeated thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>.

highpackage: python3.13-minimalsource: python3.13score: 106reports: 2successful triagesimilarity: 99%

Why this looks related: same classification, same package, same source package, same subsystem, same target, same wait site, very similar public summary

Last seen: 2026-10-04 02:36 UTC. Public page: /issues/019dfead-0293-7062-b24e-c9b04c2f1edb. Public JSON: /v1/issues/019dfead-0293-7062-b24e-c9b04c2f1edb

perl is stuck in a likely busy poll loop: 100.00% of sampled CPU passed through perf_ctx_enable, with repeated thread backtraces show 1 thread(s) around 0x00007f82eb9e87d2 in ?? () from target:<path>.

highpackage: perl-basesource: perlscore: 106reports: 2successful triagesimilarity: 73%

Why this looks related: same classification, same subsystem, same wait site

Last seen: 2026-10-24 03:01 UTC. Public page: /issues/019e4743-6f51-7fc1-b372-9900d37706a1. Public JSON: /v1/issues/019e4743-6f51-7fc1-b372-9900d37706a1

postgres is stuck in a likely busy poll loop: 9.57% of sampled CPU passed through sqlite3VdbeExec, with repeated thread backtraces show 1 thread(s) around 0x00007f3dd70ac60d in select () from target:<path>.

highscore: 106reports: 1similarity: 72%

Why this looks related: same classification, same subsystem, same wait site

Last seen: 2026-10-02 18:03 UTC. Public page: /issues/019f9de5-ae93-70a0-b43c-cc5fcfe33721. Public JSON: /v1/issues/019f9de5-ae93-70a0-b43c-cc5fcfe33721

postgres is stuck in a likely socket churn loop: 5.58% of sampled CPU passed through unresolved offset, with repeated thread backtraces show 1 thread(s) around 0x00007f66a2df719a in select () from target:<path>.

highscore: 106reports: 1similarity: 52%

Why this looks related: same subsystem, same wait site

Last seen: 2026-10-02 18:22 UTC. Public page: /issues/019f8e36-ec1d-76d3-b8ef-a76be89f2c5a. Public JSON: /v1/issues/019f8e36-ec1d-76d3-b8ef-a76be89f2c5a

Worker outcome summary

This issue has 30 recorded worker attempts. Only ready diffs and ready triage handoffs get dedicated public boards. Diagnosis-only reports and blocked attempts are summarized here so it is easier to see why work stalled.

2 ready patch attempts
24 diagnosis-only reports
4 failed patch attempts

No ready triage handoffs, explained impossible attempts, or other attempt states.

Most common blockers

  • timeout (3 attempts)
  • execution (1 attempt)

Showing the 25 most recent attempts below and summarizing 5 older attempts here. Show all published attempts for this issue.

Published attempts

ready patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 17:36 UTCvalidation: ready

Handoff

Likely owner: external dependency or workload outside the current source tree

Reason: likely-external-root-cause

  • Confirm the hotspot still points at external dependency or workload outside the current source tree with a fresh perf sample before filing the bug.
  • Capture the actual hot backend or child process rather than the parent service wrapper if the issue recurs.
  • Map external dependency or workload outside the current source tree to its owning package or project and file an upstream or distro bug with the summarized evidence.
  • If the owner is still unclear, collect another short strace plus `/proc/<pid>/maps` at the moment of the spike.
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `python3.13`, but the actual entrypoint is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The trace shows `supervisord` alternating `wait4(-1, ..., WNOHANG) = ECHILD` with `poll(..., 1000) = 0` once per second, and `/proc` reports the sampled thread as sleeping in `poll_schedule_timeout`. That points at the Supervisor event loop or the workload environment, not a demonstrated CPython runtime bug.

## Evidence Confidence
observed

## Proposed Subject
No CPython source patch yet: diagnose as insufficient evidence for an upstream `python3.13` change and redirect investigation to the `supervisord` application/configuration path unless stronger CPython-specific evidence is collected.

## Patch Plan
Do not edit files in this pass. The evidence bundle gives direct Fixer traces, but it does not show a failing CPython API contract: `select.poll()` in `Modules/selectmodule.c` already releases the GIL with `Py_BEGIN_ALLOW_THREADS`, handles `EINTR`, and recomputes deadlines via `_PyDeadline_Init` / `_PyDeadline_Get`; `os.wait4()` in `Modules/posixmodule.c` similarly uses `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, and `wait_helper()`.

If later evidence proves a CPython bug, follow CPython conventions from `README.rst` and the developer guide reference, keep Argument Clinic generated files in sync where relevant, and use existing helpers rather than raw libc-only handling. No relevant CPython helper was found for Supervisor’s own event-loop policy because `supervisord` is outside this source tree.

No prior Fixer patch was found in this workspace (`git log` only shows `Fixer baseline`, and no patch/diff artifact was present), so there is no earlier patch to replace.

## Risks
A CPython patch based only on this evidence would likely be speculative. The sampled process name, command line, and syscall loop are application-level, while the backtrace top frame around `pthread_attr_destroy()` is not enough to establish causality, especially with stripped frames and the thread sleeping in `poll`.

Changing CPython polling or wait behavior to suppress this pattern could regress correct users of `select.poll()` or `os.wait4(WNOHANG)`.

## Validation
Before any future source patch, try the project-level entrypoint from the workspace root: `./configure && make`. If that fails because Debian-source dependencies or generated files are missing, record the exact failure and then run the narrowest relevant check, such as compiling the touched object or running a targeted stdlib test.

For a bounded independent reproduction attempt, use the real application path if available: `timeout 10s strace -f -tt -e poll,wait4 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. In this CPython source workspace, Supervisor and its system config are not part of the package, so I would not claim `reproduced` unless that command can actually run and show the same high-CPU failure signal.

## Patch Pass

Subject: Diagnose Supervisor poll loop outside CPython

## Commit Message
No source change was made. The collected perf, strace, and `/proc` evidence points to `supervisord` running under Python, not to a demonstrated CPython polling or wait bug. CPython’s local `select.poll()` and `os.wait4()` paths already use the project’s established helpers for releasing the GIL and handling interrupted syscalls.

## Evidence Confidence
observed

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with high CPU attributed to `python3.13`. The collected signal shows repeated `wait4(-1, ..., WNOHANG) = ECHILD` calls followed by `poll(..., 1000) = 0` timeouts, while `/proc` reports the sampled thread sleeping in `poll_schedule_timeout`.

The cautious code-level inference is that this is Supervisor’s event loop or deployment state waking once per second to reap child processes and poll its control fd. The CPython code I inspected does not show a matching runtime defect: `Modules/selectmodule.c` wraps `poll()` with `Py_BEGIN_ALLOW_THREADS`, handles `EINTR`, and recomputes deadlines with `_PyDeadline_Get`; `Modules/posixmodule.c` wraps `wait4()` similarly and uses `posix_error()` / `wait_helper()`.

I followed `./plan-output.txt` and did not change course. Because the evidence does not establish a CPython API or implementation failure, I made no source change. The expected effect is avoiding a speculative upstream CPython patch and leaving a focused diagnosis suitable for redirecting the bug report toward Supervisor or the service configuration.

## Git Add Paths
None

## Validation
Checked upstream-style context before deciding not to patch: `README.rst` points to the CPython Developer Guide and top-level `./configure`, `make`, `make test`; `debian/README.source` notes Debian quilt packaging; no relevant local helper was found for Supervisor’s application loop because Supervisor is outside this source tree. Relevant CPython helpers found and considered: `Py_BEGIN_ALLOW_THREADS`, `_PyDeadline_Get`, `posix_error()`, and `wait_helper()`.

Ran project-level validation from the workspace root:

`./configure && make`

Result: command completed with exit 0. Configure warned that system `libmpdec` was not found and used bundled libmpdec. The build also reported optional module issues: `_ssl` failed to import with `undefined symbol: TLSv1_method`, and `_dbm`, `_gdbm`, and `_tkinter` were missing.

Attempted bounded independent reproduction of the collected signal:

`timeout 10s strace -f -tt -e poll,wait4 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`

Result: blocked before execution because this environment has `python3`, `python3.13`, and `strace`, but no `supervisord` on `PATH` and no `/etc/supervisor/supervisord.conf`. I did not independently reproduce the reported high-CPU condition.

Diff

--- a/Makefile.pre	1970-01-01 04:00:00.000000000 +0400
+++ b/Makefile.pre	2026-05-12 21:33:31.640160629 +0400
@@ -0,0 +1,3297 @@
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=    _MODBUILT_NAMES_
+MODSHARED_NAMES=   _MODSHARED_NAMES_
+MODDISABLED_NAMES= _MODDISABLED_NAMES_
+MODOBJS=           _MODOBJS_
+MODLIBS=           _MODLIBS_
+
+# === Variables set by configure
+VERSION=	3.13
+srcdir=		.
+
+abs_srcdir=	b
+abs_builddir=	b
+
+
+CC=		gcc
+CXX=		g++
+LINKCC=		$(PURIFY) $(CC)
+AR=		ar
+READELF=	@READELF@
+SOABI=		cpython-313-x86_64-linux-gnu
+ABIFLAGS=	
+ABI_THREAD=	
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=
+GITVERSION=	git --git-dir $(srcdir)/.git rev-parse --short HEAD
+GITTAG=		git --git-dir $(srcdir)/.git describe --all --always --dirty
+GITBRANCH=	git --git-dir $(srcdir)/.git name-rev --name-only HEAD
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+DSYMUTIL=       
+DSYMUTIL_PATH=  
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh -e
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -O3 -Wall
+BASECFLAGS=	 -fno-strict-overflow -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+# LDFLAGS_NOLTO is an extra flag to disable lto. It is used to speed up building
+# of _bootstrap_python and _freeze_module tools, which don't need LTO.
+CONFIGURE_LDFLAGS_NOLTO=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+PLATLIBDIR=	lib
+SCRIPTDIR=	$(prefix)/$(PLATLIBDIR)
+# executable name for shebangs
+EXENAME=	$(BINDIR)/python$(LDVERSION)$(EXE)
+# Variable used by ensurepip
+WHEEL_PKG_DIR=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)$(ABI_THREAD)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)$(ABI_THREAD)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-313-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared $(PY_LDFLAGS)
+DESTSHARED=	$(LIBDEST)/lib-dynload
+
+# List of exported symbols for AIX
+EXPORTSYMS=	
+EXPORTSFROM=	
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Name of the patch file to apply for app store compliance
+APP_STORE_COMPLIANCE_PATCH=
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= 
+RESSRCDIR= 
+# macOS deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# iOS Deployment target selected during configure. Unlike macOS, the iOS
+# deployment target is controlled using `-mios-version-min` arguments added to
+# CFLAGS and LDFLAGS by the configure script. This variable is not used during
+# the build, and is only listed here so it will be included in sysconfigdata.
+IPHONEOS_DEPLOYMENT_TARGET=
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Flags to lipo to produce an intel-64-only universal executable
+LIPO_INTEL64_FLAGS=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      upgrade
+
+# Internal static libraries
+LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
+LIBEXPAT_A= Modules/expat/libexpat.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
+
+# Module state, compiler flags and linker flags
+# Empty CFLAGS and LDFLAGS are omitted.
+# states:
+#   * yes: module is available
+#   * missing: build dependency is missing
+#   * disabled: module is disabled
+#   * n/a: module is not available on the current platform
+# MODULE_EGG_STATE=yes  # yes, missing, disabled, n/a
+# MODULE_EGG_CFLAGS=
+# MODULE_EGG_LDFLAGS=
+MODULE__IO_STATE=yes
+MODULE__IO_CFLAGS=-I$(srcdir)/Modules/_io
+MODULE_TIME_STATE=yes
+MODULE_TIME_LDFLAGS=
+MODULE_ARRAY_STATE=yes
+MODULE__ASYNCIO_STATE=yes
+MODULE__BISECT_STATE=yes
+MODULE__CONTEXTVARS_STATE=yes
+MODULE__CSV_STATE=yes
+MODULE__HEAPQ_STATE=yes
+MODULE__JSON_STATE=yes
+MODULE__LSPROF_STATE=yes
+MODULE__OPCODE_STATE=yes
+MODULE__PICKLE_STATE=yes
+MODULE__POSIXSUBPROCESS_STATE=yes
+MODULE__QUEUE_STATE=yes
+MODULE__RANDOM_STATE=yes
+MODULE_SELECT_STATE=yes
+MODULE__STRUCT_STATE=yes
+MODULE__TYPING_STATE=yes
+MODULE__INTERPRETERS_STATE=yes
+MODULE__INTERPCHANNELS_STATE=yes
+MODULE__INTERPQUEUES_STATE=yes
+MODULE__ZONEINFO_STATE=yes
+MODULE__MULTIPROCESSING_STATE=yes
+MODULE__MULTIPROCESSING_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_STATE=yes
+MODULE__POSIXSHMEM_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_LDFLAGS=
+MODULE__STATISTICS_STATE=yes
+MODULE__STATISTICS_LDFLAGS=-lm
+MODULE_CMATH_STATE=yes
+MODULE_CMATH_LDFLAGS=-lm
+MODULE_MATH_STATE=yes
+MODULE_MATH_LDFLAGS=-lm
+MODULE__DATETIME_STATE=yes
+MODULE__DATETIME_LDFLAGS= -lm
+MODULE_FCNTL_STATE=yes
+MODULE_FCNTL_LDFLAGS=
+MODULE_MMAP_STATE=yes
+MODULE__SOCKET_STATE=yes
+MODULE_GRP_STATE=yes
+MODULE_PWD_STATE=yes
+MODULE_RESOURCE_STATE=yes
+MODULE__SCPROXY_STATE=n/a
+MODULE_SYSLOG_STATE=yes
+MODULE_TERMIOS_STATE=yes
+MODULE_PYEXPAT_STATE=yes
+MODULE_PYEXPAT_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE_PYEXPAT_LDFLAGS=-lm $(LIBEXPAT_A)
+MODULE__ELEMENTTREE_STATE=yes
+MODULE__ELEMENTTREE_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE__CODECS_CN_STATE=yes
+MODULE__CODECS_HK_STATE=yes
+MODULE__CODECS_ISO2022_STATE=yes
+MODULE__CODECS_JP_STATE=yes
+MODULE__CODECS_KR_STATE=yes
+MODULE__CODECS_TW_STATE=yes
+MODULE__MULTIBYTECODEC_STATE=yes
+MODULE_UNICODEDATA_STATE=yes
+MODULE__MD5_STATE=yes
+MODULE__MD5_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA1_STATE=yes
+MODULE__SHA1_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA2_STATE=yes
+MODULE__SHA2_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA3_STATE=yes
+MODULE__BLAKE2_STATE=yes
+MODULE__BLAKE2_CFLAGS=
+MODULE__BLAKE2_LDFLAGS=
+MODULE__CTYPES_STATE=yes
+MODULE__CTYPES_CFLAGS=-fno-strict-overflow 
+MODULE__CTYPES_LDFLAGS=-lffi -ldl
+MODULE__CURSES_STATE=yes
+MODULE__CURSES_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE__CURSES_LDFLAGS=-lncursesw -ltinfo
+
+MODULE__CURSES_PANEL_STATE=yes
+MODULE__CURSES_PANEL_CFLAGS=-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE 
+MODULE__CURSES_PANEL_LDFLAGS=-lpanelw -lncursesw -ltinfo
+
+MODULE__DECIMAL_STATE=yes
+MODULE__DECIMAL_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1
+MODULE__DECIMAL_LDFLAGS=-lm $(LIBMPDEC_A)
+MODULE__DBM_STATE=missing
+MODULE__GDBM_STATE=missing
+MODULE_READLINE_STATE=yes
+MODULE_READLINE_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE_READLINE_LDFLAGS=-lreadline
+MODULE__SQLITE3_STATE=yes
+MODULE__SQLITE3_CFLAGS= -I$(srcdir)/Modules/_sqlite
+MODULE__SQLITE3_LDFLAGS=-lsqlite3
+MODULE__TKINTER_STATE=missing
+MODULE__UUID_STATE=yes
+MODULE__UUID_CFLAGS=-I/usr/include/uuid
+MODULE__UUID_LDFLAGS=-luuid
+MODULE_ZLIB_STATE=yes
+MODULE_ZLIB_CFLAGS=
+MODULE_ZLIB_LDFLAGS=-lz
+MODULE_BINASCII_STATE=yes
+MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 
+MODULE_BINASCII_LDFLAGS=-lz
+MODULE__BZ2_STATE=yes
+MODULE__BZ2_CFLAGS=
+MODULE__BZ2_LDFLAGS=-lbz2
+MODULE__LZMA_STATE=yes
+MODULE__LZMA_CFLAGS=
+MODULE__LZMA_LDFLAGS=-llzma
+MODULE__SSL_STATE=yes
+MODULE__SSL_CFLAGS=
+MODULE__SSL_LDFLAGS=  -lssl -lcrypto
+MODULE__HASHLIB_STATE=yes
+MODULE__HASHLIB_CFLAGS=
+MODULE__HASHLIB_LDFLAGS=   -lcrypto
+MODULE__TESTCAPI_STATE=yes
+MODULE__TESTCAPI_LDFLAGS=
+MODULE__TESTCLINIC_STATE=yes
+MODULE__TESTCLINIC_LIMITED_STATE=yes
+MODULE__TESTLIMITEDCAPI_STATE=yes
+MODULE__TESTINTERNALCAPI_STATE=yes
+MODULE__TESTBUFFER_STATE=yes
+MODULE__TESTIMPORTMULTIPLE_STATE=yes
+MODULE__TESTMULTIPHASE_STATE=yes
+MODULE__TESTSINGLEPHASE_STATE=yes
+MODULE__TESTEXTERNALINSPECTION_STATE=yes
+MODULE_XXSUBTYPE_STATE=yes
+MODULE__XXTESTFUZZ_STATE=yes
+MODULE__CTYPES_TEST_STATE=yes
+MODULE__CTYPES_TEST_LDFLAGS=-lm
+MODULE_XXLIMITED_STATE=yes
+MODULE_XXLIMITED_35_STATE=yes
+
+
+# Default zoneinfo.TZPATH. Added here to expose it in sysconfig.get_config_var
+TZPATH=/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
+
+# If to install mimalloc headers
+INSTALL_MIMALLOC=yes
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	
+
+
+# Subdirectories with code
+SRCDIRS= 	  Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# assets for Emscripten browser builds
+WASM_ASSETS_DIR=.$(prefix)
+WASM_STDLIB=$(WASM_ASSETS_DIR)/lib/python$(VERSION)/os.py
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+LIBRARY_DEPS=	$(LIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+LINK_PYTHON_DEPS=$(LIBRARY_DEPS)
+PY_ENABLE_SHARED=	0
+STATIC_LIBPYTHON=	1
+
+
+LIBS=		-ldl 
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+HOSTRUNNER= 
+
+PYTHON_FOR_REGEN?=python3.13
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+# Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
+# external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
+PYTHON_FOR_BUILD_DEPS=$(BUILDPYTHON)
+
+# Single-platform builds use Programs/_freeze_module.c for bootstrapping and
+# ./_bootstrap_python Programs/_freeze_module.py for remaining modules
+# Cross builds use an external "build Python" for all modules.
+PYTHON_FOR_FREEZE=./_bootstrap_python
+FREEZE_MODULE_BOOTSTRAP=./Programs/_freeze_module
+FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
+FREEZE_MODULE=$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py
+FREEZE_MODULE_DEPS=_bootstrap_python $(srcdir)/Programs/_freeze_module.py
+
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo --timeout=$(TESTTIMEOUT)
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
+
+
+# === Definitions added by makesetup ===
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+	$(srcdir)/Include/internal/pycore_mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
+##########################################################################
+# Parser
+
+PEGEN_OBJS=		\
+		Parser/pegen.o \
+		Parser/pegen_errors.o \
+		Parser/action_helpers.o \
+		Parser/parser.o \
+		Parser/string_parser.o \
+		Parser/peg_api.o
+
+TOKENIZER_OBJS=		\
+		Parser/lexer/buffer.o \
+		Parser/lexer/lexer.o \
+		Parser/lexer/state.o \
+		Parser/tokenizer/file_tokenizer.o \
+		Parser/tokenizer/readline_tokenizer.o \
+		Parser/tokenizer/string_tokenizer.o \
+		Parser/tokenizer/utf8_tokenizer.o \
+		Parser/tokenizer/helpers.o
+
+PEGEN_HEADERS= \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Parser/pegen.h \
+		$(srcdir)/Parser/string_parser.h
+
+TOKENIZER_HEADERS= \
+		Parser/lexer/buffer.h \
+		Parser/lexer/lexer.h \
+		Parser/lexer/state.h \
+		Parser/tokenizer/tokenizer.h \
+		Parser/tokenizer/helpers.h
+
+POBJS=		\
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) $(PEGEN_OBJS) $(TOKENIZER_OBJS) Parser/myreadline.o
+
+PARSER_HEADERS= \
+		$(PEGEN_HEADERS) \
+		$(TOKENIZER_HEADERS)
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/Python-tokenize.o \
+		Python/asdl.o \
+		Python/assemble.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/brc.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/critical_section.o \
+		Python/crossinterp.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/flowgraph.o \
+		Python/frame.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/gc.o \
+		Python/gc_free_threading.o \
+		Python/gc_gil.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/ceval_gil.o \
+		Python/hamt.o \
+		Python/hashtable.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/interpconfig.o \
+		Python/instrumentation.o \
+		Python/instruction_sequence.o \
+		Python/intrinsics.o \
+		Python/jit.o \
+		Python/legacy_tracing.o \
+		Python/lock.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/object_stack.o \
+		Python/optimizer.o \
+		Python/optimizer_analysis.o \
+		Python/optimizer_symbols.o \
+		Python/parking_lot.o \
+		Python/pathconfig.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/qsbr.o \
+		Python/bootstrap_hash.o \
+		Python/specialize.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/tracemalloc.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/suggestions.o \
+		Python/perf_trampoline.o \
+		Python/perf_jit_trampoline.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS) \
+		
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genericaliasobject.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/typevarobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/unionobject.o \
+		Objects/weakrefobject.o \
+		Python/asm_trampoline.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Modules/getpath.o \
+		Python/frozen.o
+
+LINK_PYTHON_OBJS=$(LIBRARY_OBJS)
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/gc.o Python/import.o Python/sysmodule.o
+
+##########################################################################
+# decimal's libmpdec
+
+LIBMPDEC_OBJS= \
+		Modules/_decimal/libmpdec/basearith.o \
+		Modules/_decimal/libmpdec/constants.o \
+		Modules/_decimal/libmpdec/context.o \
+		Modules/_decimal/libmpdec/convolute.o \
+		Modules/_decimal/libmpdec/crt.o \
+		Modules/_decimal/libmpdec/difradix2.o \
+		Modules/_decimal/libmpdec/fnt.o \
+		Modules/_decimal/libmpdec/fourstep.o \
+		Modules/_decimal/libmpdec/io.o \
+		Modules/_decimal/libmpdec/mpalloc.o \
+		Modules/_decimal/libmpdec/mpdecimal.o \
+		Modules/_decimal/libmpdec/numbertheory.o \
+		Modules/_decimal/libmpdec/sixstep.o \
+		Modules/_decimal/libmpdec/transpose.o
+		# _decimal does not use signaling API
+		# Modules/_decimal/libmpdec/mpsignal.o
+
+LIBMPDEC_HEADERS= \
+		$(srcdir)/Modules/_decimal/libmpdec/basearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/bits.h \
+		$(srcdir)/Modules/_decimal/libmpdec/constants.h \
+		$(srcdir)/Modules/_decimal/libmpdec/convolute.h \
+		$(srcdir)/Modules/_decimal/libmpdec/crt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/difradix2.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fnt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fourstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/io.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpalloc.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpdecimal.h \
+		$(srcdir)/Modules/_decimal/libmpdec/numbertheory.h \
+		$(srcdir)/Modules/_decimal/libmpdec/sixstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/transpose.h \
+		$(srcdir)/Modules/_decimal/libmpdec/typearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/umodarith.h
+
+##########################################################################
+# pyexpat's expat library
+
+LIBEXPAT_OBJS= \
+		Modules/expat/xmlparse.o \
+		Modules/expat/xmlrole.o \
+		Modules/expat/xmltok.o
+
+LIBEXPAT_HEADERS= \
+		Modules/expat/ascii.h \
+		Modules/expat/asciitab.h \
+		Modules/expat/expat.h \
+		Modules/expat/expat_config.h \
+		Modules/expat/expat_external.h \
+		Modules/expat/iasciitab.h \
+		Modules/expat/internal.h \
+		Modules/expat/latin1tab.h \
+		Modules/expat/nametab.h \
+		Modules/expat/pyexpatns.h \
+		Modules/expat/siphash.h \
+		Modules/expat/utf8tab.h \
+		Modules/expat/xmlrole.h \
+		Modules/expat/xmltok.h \
+		Modules/expat/xmltok_impl.h \
+		Modules/expat/xmltok_impl.c \
+		Modules/expat/xmltok_ns.c
+
+##########################################################################
+# hashlib's HACL* library
+
+LIBHACL_SHA2_OBJS= \
+                Modules/_hacl/Hacl_Hash_SHA2.o
+
+LIBHACL_HEADERS= \
+                Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
+                Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h \
+                Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h \
+                Modules/_hacl/include/krml/internal/target.h \
+                Modules/_hacl/include/krml/lowstar_endianness.h \
+                Modules/_hacl/include/krml/types.h \
+		Modules/_hacl/Hacl_Streaming_Types.h \
+                Modules/_hacl/python_hacl_namespaces.h
+
+LIBHACL_SHA2_HEADERS= \
+                Modules/_hacl/Hacl_Hash_SHA2.h \
+                Modules/_hacl/internal/Hacl_Hash_SHA2.h \
+		$(LIBHACL_HEADERS)
+
+#########################################################################
+# Rules
+
+# Default target
+all:		build_all
+
+# First target in Makefile is implicit default. So .PHONY needs to come after
+# all.
+.PHONY: all
+
+# Provide quick help for common Makefile targets.
+.PHONY: help
+help:
+	@echo "Run 'make' to build the Python executable and extension modules"
+	@echo ""
+	@echo "or 'make <target>' where <target> is one of:"
+	@echo "  test         run the test suite"
+	@echo "  install      install built files"
+	@echo "  regen-all    regenerate a number of generated source files"
+	@echo "  clinic       run Argument Clinic over source files"
+	@echo ""
+	@echo "  clean        to remove build files"
+	@echo "  distclean    'clean' + remove other generated files (patch, exe, etc)"
+	@echo ""
+	@echo "  recheck      rerun configure with last cmdline options"
+	@echo "  reindent     reindent .py files in Lib directory"
+	@echo "  tags         build a tags file (useful for Emacs and other editors)"
+	@echo "  list-targets list all targets in the Makefile"
+
+# Display a full list of Makefile targets
+.PHONY: list-targets
+list-targets:
+	@grep -E '^[A-Za-z][-A-Za-z0-9]+:' Makefile | awk -F : '{print $$1}'
+
+.PHONY: build_all
+build_all:	check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \
+		gdbhooks Programs/_testembed scripts checksharedmods rundsymutil
+
+.PHONY: build_wasm
+build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \
+		python-config checksharedmods
+
+# Check that the source is clean when building out of source.
+.PHONY: check-clean-src
+check-clean-src:
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/$(BUILDPYTHON)" \
+	    -o -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \
+		echo "Try to run:" ; \
+		echo "  (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \
+		exit 1; \
+	fi
+
+# Check that the app store compliance patch can be applied (if configured).
+# This is checked as a dry-run against the original library sources;
+# the patch will be actually applied during the install phase.
+.PHONY: check-app-store-compliance
+check-app-store-compliance:
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		patch --dry-run --quiet --force --strip 1 --directory "$(abs_srcdir)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)"; \
+		echo "App store compliance patch can be applied."; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean-profile
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	@ # FIXME: can't run for a cross build
+	task="$(PROFILE_TASK)"; \
+	case "$$task" in \
+	*-s\ *) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  while [ -f $(abs_builddir)/build/pynexttest ]; do \
+	    $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  done;; \
+	*) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	esac || true
+	$(LLVM_PROF_MERGER)
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean-retain-profile
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+.PHONY: profile-opt
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# List of binaries that BOLT runs on.
+BOLT_BINARIES := $(BUILDPYTHON)
+
+BOLT_INSTRUMENT_FLAGS :=  -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1 
+BOLT_APPLY_FLAGS :=   -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1  -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot 
+
+.PHONY: clean-bolt
+clean-bolt:
+	# Profile data.
+	rm -f *.fdata
+	# Pristine binaries before BOLT optimization.
+	rm -f *.prebolt
+	# BOLT instrumented binaries.
+	rm -f *.bolt_inst
+
+profile-bolt-stamp: $(BUILDPYTHON)
+	# Ensure a pristine, pre-BOLT copy of the binary and no profile data from last run.
+	for bin in $(BOLT_BINARIES); do \
+	  prebolt="$${bin}.prebolt"; \
+	  if [ -e "$${prebolt}" ]; then \
+	    echo "Restoring pre-BOLT binary $${prebolt}"; \
+	    mv "$${bin}.prebolt" "$${bin}"; \
+	  fi; \
+	  cp "$${bin}" "$${prebolt}"; \
+	  rm -f $${bin}.bolt.*.fdata $${bin}.fdata; \
+	done
+	# Instrument each binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}" -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $${bin}.bolt) -o $${bin}.bolt_inst $(BOLT_INSTRUMENT_FLAGS); \
+	  mv "$${bin}.bolt_inst" "$${bin}"; \
+	done
+	# Run instrumented binaries to collect data.
+	$(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
+	# Merge all the data files together.
+	for bin in $(BOLT_BINARIES); do \
+	   $${bin}.*.fdata > "$${bin}.fdata"; \
+	  rm -f $${bin}.*.fdata; \
+	done
+	# Run bolt against the merged data to produce an optimized binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}.prebolt" -o "$${bin}.bolt" -data="$${bin}.fdata" $(BOLT_APPLY_FLAGS); \
+	  mv "$${bin}.bolt" "$${bin}"; \
+	done
+	touch $@
+
+.PHONY: bolt-opt
+bolt-opt:
+	$(MAKE) 
+	$(MAKE) profile-bolt-stamp
+
+# Compile and run with gcov
+.PHONY: coverage
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean
+	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
+
+.PHONY: coverage-lcov
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and frozen modules
+.PHONY: coverage-report
+coverage-report: regen-token regen-frozen
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY: clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --exclude Lib/test/clinic.test.c --srcdir $(srcdir)
+
+.PHONY: clinic-tests
+clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $(srcdir)/Lib/test/clinic.test.c
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(PYTHON_FOR_BUILD_DEPS)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	# AIX Linker don't support "-h" option
+	if test "$(MACHDEP)" != "aix"; then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+	if test $(INSTSONAME) != $@; then \
+		$(LN) -f $(INSTSONAME) $@; \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# List of exported symbols for AIX
+Modules/python.exp: $(LIBRARY)
+	$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+.PHONY: gdbhooks
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule is for iOS, which requires an annoyingly just slightly different
+# format for frameworks to macOS. It *doesn't* use a versioned framework, and
+# the Info.plist must be in the root of the framework.
+$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(PYTHONFRAMEWORKDIR)/Info.plist
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+# wasm32-emscripten browser build
+# wasm assets directory is relative to current build dir, e.g. "./usr/local".
+# --preload-file turns a relative asset path into an absolute path.
+
+.PHONY: wasm_stdlib
+wasm_stdlib: $(WASM_STDLIB)
+$(WASM_STDLIB): $(srcdir)/Lib/*.py $(srcdir)/Lib/*/*.py \
+	    $(srcdir)/Tools/wasm/wasm_assets.py \
+	    Makefile pybuilddir.txt Modules/Setup.local
+	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/wasm/wasm_assets.py \
+	    --buildroot . --prefix $(prefix)
+
+python.html: $(srcdir)/Tools/wasm/python.html python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.html $@
+
+python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.worker.js $@
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/critical_section.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/exports.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/genericaliasobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/lock.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/monitoring.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/opcode_ids.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/pyatomic.h \
+		$(srcdir)/Include/pybuffer.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyexpat.h \
+		$(srcdir)/Include/pyframe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystats.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytypedefs.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/typeslots.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/bytearrayobject.h \
+		$(srcdir)/Include/cpython/bytesobject.h \
+		$(srcdir)/Include/cpython/cellobject.h \
+		$(srcdir)/Include/cpython/ceval.h \
+		$(srcdir)/Include/cpython/classobject.h \
+		$(srcdir)/Include/cpython/code.h \
+		$(srcdir)/Include/cpython/compile.h \
+		$(srcdir)/Include/cpython/complexobject.h \
+		$(srcdir)/Include/cpython/context.h \
+		$(srcdir)/Include/cpython/critical_section.h \
+		$(srcdir)/Include/cpython/descrobject.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/fileutils.h \
+		$(srcdir)/Include/cpython/floatobject.h \
+		$(srcdir)/Include/cpython/frameobject.h \
+		$(srcdir)/Include/cpython/funcobject.h \
+		$(srcdir)/Include/cpython/genobject.h \
+		$(srcdir)/Include/cpython/import.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/listobject.h \
+		$(srcdir)/Include/cpython/lock.h \
+		$(srcdir)/Include/cpython/longintrepr.h \
+		$(srcdir)/Include/cpython/longobject.h \
+		$(srcdir)/Include/cpython/memoryobject.h \
+		$(srcdir)/Include/cpython/methodobject.h \
+		$(srcdir)/Include/cpython/modsupport.h \
+		$(srcdir)/Include/cpython/monitoring.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/odictobject.h \
+		$(srcdir)/Include/cpython/picklebufobject.h \
+		$(srcdir)/Include/cpython/pthread_stubs.h \
+		$(srcdir)/Include/cpython/pyatomic.h \
+		$(srcdir)/Include/cpython/pyatomic_gcc.h \
+		$(srcdir)/Include/cpython/pyatomic_std.h \
+		$(srcdir)/Include/cpython/pyctype.h \
+		$(srcdir)/Include/cpython/pydebug.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pyfpe.h \
+		$(srcdir)/Include/cpython/pyframe.h \
+		$(srcdir)/Include/cpython/pyhash.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/pystats.h \
+		$(srcdir)/Include/cpython/pythonrun.h \
+		$(srcdir)/Include/cpython/pythread.h \
+		$(srcdir)/Include/cpython/setobject.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tracemalloc.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		$(srcdir)/Include/cpython/warnings.h \
+		$(srcdir)/Include/cpython/weakrefobject.h \
+		\
+		$(MIMALLOC_HEADERS) \
+		\
+		$(srcdir)/Include/internal/pycore_abstract.h \
+		$(srcdir)/Include/internal/pycore_asdl.h \
+		$(srcdir)/Include/internal/pycore_ast.h \
+		$(srcdir)/Include/internal/pycore_ast_state.h \
+		$(srcdir)/Include/internal/pycore_atexit.h \
+		$(srcdir)/Include/internal/pycore_backoff.h \
+		$(srcdir)/Include/internal/pycore_bitutils.h \
+		$(srcdir)/Include/internal/pycore_blocks_output_buffer.h \
+		$(srcdir)/Include/internal/pycore_brc.h \
+		$(srcdir)/Include/internal/pycore_bytes_methods.h \
+		$(srcdir)/Include/internal/pycore_bytesobject.h \
+		$(srcdir)/Include/internal/pycore_call.h \
+		$(srcdir)/Include/internal/pycore_capsule.h \
+		$(srcdir)/Include/internal/pycore_cell.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_ceval_state.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_codecs.h \
+		$(srcdir)/Include/internal/pycore_compile.h \
+		$(srcdir)/Include/internal/pycore_complexobject.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_critical_section.h \
+		$(srcdir)/Include/internal/pycore_crossinterp.h \
+		$(srcdir)/Include/internal/pycore_descrobject.h \
+		$(srcdir)/Include/internal/pycore_dict.h \
+		$(srcdir)/Include/internal/pycore_dict_state.h \
+		$(srcdir)/Include/internal/pycore_dtoa.h \
+		$(srcdir)/Include/internal/pycore_exceptions.h \
+		$(srcdir)/Include/internal/pycore_faulthandler.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_floatobject.h \
+		$(srcdir)/Include/internal/pycore_flowgraph.h \
+		$(srcdir)/Include/internal/pycore_format.h \
+		$(srcdir)/Include/internal/pycore_frame.h \
+		$(srcdir)/Include/internal/pycore_freelist.h \
+		$(srcdir)/Include/internal/pycore_function.h \
+		$(srcdir)/Include/internal/pycore_gc.h \
+		$(srcdir)/Include/internal/pycore_genobject.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_global_objects.h \
+		$(srcdir)/Include/internal/pycore_global_objects_fini_generated.h \
+		$(srcdir)/Include/internal/pycore_global_strings.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_hashtable.h \
+		$(srcdir)/Include/internal/pycore_identifier.h \
+		$(srcdir)/Include/internal/pycore_import.h \
+		$(srcdir)/Include/internal/pycore_importdl.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_instruments.h \
+		$(srcdir)/Include/internal/pycore_instruction_sequence.h \
+		$(srcdir)/Include/internal/pycore_interp.h \
+		$(srcdir)/Include/internal/pycore_intrinsics.h \
+		$(srcdir)/Include/internal/pycore_jit.h \
+		$(srcdir)/Include/internal/pycore_list.h \
+		$(srcdir)/Include/internal/pycore_llist.h \
+		$(srcdir)/Include/internal/pycore_lock.h \
+		$(srcdir)/Include/internal/pycore_long.h \
+		$(srcdir)/Include/internal/pycore_memoryobject.h \
+		$(srcdir)/Include/internal/pycore_mimalloc.h \
+		$(srcdir)/Include/internal/pycore_modsupport.h \
+		$(srcdir)/Include/internal/pycore_moduleobject.h \
+		$(srcdir)/Include/internal/pycore_namespace.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_object_alloc.h \
+		$(srcdir)/Include/internal/pycore_object_stack.h \
+		$(srcdir)/Include/internal/pycore_object_state.h \
+		$(srcdir)/Include/internal/pycore_obmalloc.h \
+		$(srcdir)/Include/internal/pycore_obmalloc_init.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_opcode_utils.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Include/internal/pycore_parking_lot.h \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyarena.h \
+		$(srcdir)/Include/internal/pycore_pyatomic_ft_wrappers.h \
+		$(srcdir)/Include/internal/pycore_pybuffer.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymath.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pymem_init.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_pystats.h \
+		$(srcdir)/Include/internal/pycore_pythonrun.h \
+		$(srcdir)/Include/internal/pycore_pythread.h \
+		$(srcdir)/Include/internal/pycore_qsbr.h \
+		$(srcdir)/Include/internal/pycore_range.h \
+		$(srcdir)/Include/internal/pycore_runtime.h \
+		$(srcdir)/Include/internal/pycore_runtime_init.h \
+		$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
+		$(srcdir)/Include/internal/pycore_semaphore.h \
+		$(srcdir)/Include/internal/pycore_setobject.h \
+		$(srcdir)/Include/internal/pycore_signal.h \
+		$(srcdir)/Include/internal/pycore_sliceobject.h \
+		$(srcdir)/Include/internal/pycore_strhex.h \
+		$(srcdir)/Include/internal/pycore_structseq.h \
+		$(srcdir)/Include/internal/pycore_symtable.h \
+		$(srcdir)/Include/internal/pycore_sysmodule.h \
+		$(srcdir)/Include/internal/pycore_stackref.h \
+		$(srcdir)/Include/internal/pycore_time.h \
+		$(srcdir)/Include/internal/pycore_token.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tracemalloc.h \
+		$(srcdir)/Include/internal/pycore_tstate.h \
+		$(srcdir)/Include/internal/pycore_tuple.h \
+		$(srcdir)/Include/internal/pycore_typeobject.h \
+		$(srcdir)/Include/internal/pycore_typevarobject.h \
+		$(srcdir)/Include/internal/pycore_ucnhash.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject_generated.h \
+		$(srcdir)/Include/internal/pycore_unionobject.h \
+		$(srcdir)/Include/internal/pycore_uop_ids.h \
+		$(srcdir)/Include/internal/pycore_uop_metadata.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(srcdir)/Include/internal/pycore_weakref.h \
+		$(DTRACE_HEADERS) \
+		 \
+		\
+		$(srcdir)/Python/stdlib_module_names.h
+
+##########################################################################
+# Build static libmpdec.a
+LIBMPDEC_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+# "%.o: %c" is not portable
+Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c
+
+Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c
+
+Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c
+
+Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c
+
+Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c
+
+Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c
+
+Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c
+
+Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c
+
+Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c
+
+Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c
+
+Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c
+
+Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c
+
+Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c
+
+Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c
+
+Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c
+
+$(LIBMPDEC_A): $(LIBMPDEC_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS)
+
+##########################################################################
+# Build static libexpat.a
+LIBEXPAT_CFLAGS=-I$(srcdir)/Modules/expat $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c
+
+Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c
+
+Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c
+
+$(LIBEXPAT_A): $(LIBEXPAT_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
+
+##########################################################################
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
+LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+	$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
+
+$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS)
+
+# create relative links from build/lib.platform/egg.so to Modules/egg.so
+# pybuilddir.txt is created too late. We cannot use it in Makefile
+# targets. ln --relative is not portable.
+.PHONY: sharedmods
+sharedmods: $(SHAREDMODS) pybuilddir.txt
+	@target=`cat pybuilddir.txt`; \
+	$(MKDIR_P) $$target; \
+	for mod in X $(SHAREDMODS); do \
+		if test $$mod != X; then \
+			$(LN) -sf ../../$$mod $$target/`basename $$mod`; \
+		fi; \
+	done
+
+# dependency on BUILDPYTHON ensures that the target is run last
+.PHONY: checksharedmods
+checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
+
+.PHONY: rundsymutil
+rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@if [ ! -z $(DSYMUTIL) ] ; then \
+		echo $(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		$(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		if test -f $(LDLIBRARY); then \
+			echo $(DSYMUTIL_PATH) $(LDLIBRARY); \
+			$(DSYMUTIL_PATH) $(LDLIBRARY); \
+		fi; \
+		for mod in X $(SHAREDMODS); do \
+			if test $$mod != X; then \
+				echo $(DSYMUTIL_PATH) $$mod; \
+				$(DSYMUTIL_PATH) $$mod; \
+			fi; \
+		done \
+	fi
+
+Modules/Setup.local:
+	@# Create empty Setup.local when file was deleted by user
+	echo "# Edit this file for local setup changes" > $@
+
+Modules/Setup.bootstrap: $(srcdir)/Modules/Setup.bootstrap.in config.status
+	./config.status $@
+
+Modules/Setup.stdlib: $(srcdir)/Modules/Setup.stdlib.in config.status
+	./config.status $@
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local \
+				Modules/Setup.bootstrap \
+				Modules/Setup.stdlib
+	$(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				Modules/Setup.stdlib \
+				Modules/Setup.bootstrap \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+.PHONY: regen-test-frozenmain
+regen-test-frozenmain: $(BUILDPYTHON)
+	# Regenerate Programs/test_frozenmain.h
+	# from Programs/test_frozenmain.py
+	# using Programs/freeze_test_frozenmain.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h
+
+.PHONY: regen-test-levenshtein
+regen-test-levenshtein:
+	# Regenerate Lib/test/levenshtein_examples.json
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py $(srcdir)/Lib/test/levenshtein_examples.json
+
+.PHONY: regen-re
+regen-re: $(BUILDPYTHON)
+	# Regenerate Lib/re/_casefix.py
+	# using Tools/build/generate_re_casefix.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+
+Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# "Bootstrap Python" used to run Programs/_freeze_module.py
+
+BOOTSTRAP_HEADERS = \
+	Python/frozen_modules/importlib._bootstrap.h \
+	Python/frozen_modules/importlib._bootstrap_external.h \
+	Python/frozen_modules/zipimport.h
+
+Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS)
+
+_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local
+	$(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \
+		Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+
+############################################################################
+# frozen modules (including importlib)
+#
+# Freezing is a multi step process. It works differently for standard builds
+# and cross builds. Standard builds use Programs/_freeze_module and
+# _bootstrap_python for freezing, so users can build Python
+# without an existing Python installation. Cross builds cannot execute
+# compiled binaries and therefore rely on an external build Python
+# interpreter. The build interpreter must have same version and same bytecode
+# as the host (target) binary.
+#
+# Standard build process:
+# 1) compile minimal core objects for Py_Compile*() and PyMarshal_Write*().
+# 2) build Programs/_freeze_module binary.
+# 3) create frozen module headers for importlib and getpath.
+# 4) build _bootstrap_python binary.
+# 5) create remaining frozen module headers with
+#    ``./_bootstrap_python Programs/_freeze_module.py``. The pure Python
+#    script is used to test the cross compile code path.
+#
+# Cross compile process:
+# 1) create all frozen module headers with external build Python and
+#    Programs/_freeze_module.py script.
+#
+
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
+FROZEN_FILES_IN = \
+		Lib/importlib/_bootstrap.py \
+		Lib/importlib/_bootstrap_external.py \
+		Lib/zipimport.py \
+		Lib/abc.py \
+		Lib/codecs.py \
+		Lib/io.py \
+		Lib/_collections_abc.py \
+		Lib/_sitebuiltins.py \
+		Lib/genericpath.py \
+		Lib/ntpath.py \
+		Lib/posixpath.py \
+		Lib/os.py \
+		Lib/site.py \
+		Lib/stat.py \
+		Lib/importlib/util.py \
+		Lib/importlib/machinery.py \
+		Lib/runpy.py \
+		Lib/__hello__.py \
+		Lib/__phello__/__init__.py \
+		Lib/__phello__/ham/__init__.py \
+		Lib/__phello__/ham/eggs.py \
+		Lib/__phello__/spam.py \
+		Tools/freeze/flag.py
+# End FROZEN_FILES_IN
+FROZEN_FILES_OUT = \
+		Python/frozen_modules/importlib._bootstrap.h \
+		Python/frozen_modules/importlib._bootstrap_external.h \
+		Python/frozen_modules/zipimport.h \
+		Python/frozen_modules/abc.h \
+		Python/frozen_modules/codecs.h \
+		Python/frozen_modules/io.h \
+		Python/frozen_modules/_collections_abc.h \
+		Python/frozen_modules/_sitebuiltins.h \
+		Python/frozen_modules/genericpath.h \
+		Python/frozen_modules/ntpath.h \
+		Python/frozen_modules/posixpath.h \
+		Python/frozen_modules/os.h \
+		Python/frozen_modules/site.h \
+		Python/frozen_modules/stat.h \
+		Python/frozen_modules/importlib.util.h \
+		Python/frozen_modules/importlib.machinery.h \
+		Python/frozen_modules/runpy.h \
+		Python/frozen_modules/__hello__.h \
+		Python/frozen_modules/__phello__.h \
+		Python/frozen_modules/__phello__.ham.h \
+		Python/frozen_modules/__phello__.ham.eggs.h \
+		Python/frozen_modules/__phello__.spam.h \
+		Python/frozen_modules/frozen_only.h
+# End FROZEN_FILES_OUT
+
+Programs/_freeze_module.o: Programs/_freeze_module.c Makefile
+
+Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile
+
+Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+# We manually freeze getpath.py rather than through freeze_modules
+Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) getpath $(srcdir)/Modules/getpath.py Python/frozen_modules/getpath.h
+
+# BEGIN: freezing modules
+
+Python/frozen_modules/importlib._bootstrap.h: Lib/importlib/_bootstrap.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap $(srcdir)/Lib/importlib/_bootstrap.py Python/frozen_modules/importlib._bootstrap.h
+
+Python/frozen_modules/importlib._bootstrap_external.h: Lib/importlib/_bootstrap_external.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap_external $(srcdir)/Lib/importlib/_bootstrap_external.py Python/frozen_modules/importlib._bootstrap_external.h
+
+Python/frozen_modules/zipimport.h: Lib/zipimport.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) zipimport $(srcdir)/Lib/zipimport.py Python/frozen_modules/zipimport.h
+
+Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) abc $(srcdir)/Lib/abc.py Python/frozen_modules/abc.h
+
+Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
+
+Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
+
+Python/frozen_modules/_collections_abc.h: Lib/_collections_abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _collections_abc $(srcdir)/Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
+
+Python/frozen_modules/_sitebuiltins.h: Lib/_sitebuiltins.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _sitebuiltins $(srcdir)/Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
+
+Python/frozen_modules/genericpath.h: Lib/genericpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) genericpath $(srcdir)/Lib/genericpath.py Python/frozen_modules/genericpath.h
+
+Python/frozen_modules/ntpath.h: Lib/ntpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) ntpath $(srcdir)/Lib/ntpath.py Python/frozen_modules/ntpath.h
+
+Python/frozen_modules/posixpath.h: Lib/posixpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) posixpath $(srcdir)/Lib/posixpath.py Python/frozen_modules/posixpath.h
+
+Python/frozen_modules/os.h: Lib/os.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) os $(srcdir)/Lib/os.py Python/frozen_modules/os.h
+
+Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) site $(srcdir)/Lib/site.py Python/frozen_modules/site.h
+
+Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
+
+Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
+
+Python/frozen_modules/importlib.machinery.h: Lib/importlib/machinery.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.machinery $(srcdir)/Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
+
+Python/frozen_modules/runpy.h: Lib/runpy.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) runpy $(srcdir)/Lib/runpy.py Python/frozen_modules/runpy.h
+
+Python/frozen_modules/__hello__.h: Lib/__hello__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __hello__ $(srcdir)/Lib/__hello__.py Python/frozen_modules/__hello__.h
+
+Python/frozen_modules/__phello__.h: Lib/__phello__/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__ $(srcdir)/Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
+
+Python/frozen_modules/__phello__.ham.h: Lib/__phello__/ham/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham $(srcdir)/Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
+
+Python/frozen_modules/__phello__.ham.eggs.h: Lib/__phello__/ham/eggs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham.eggs $(srcdir)/Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
+
+Python/frozen_modules/__phello__.spam.h: Lib/__phello__/spam.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.spam $(srcdir)/Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
+
+Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) frozen_only $(srcdir)/Tools/freeze/flag.py Python/frozen_modules/frozen_only.h
+
+# END: freezing modules
+
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
+
+.PHONY: regen-frozen
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py --frozen-modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+# We keep this renamed target around for folks with muscle memory.
+.PHONY: regen-importlib
+regen-importlib: regen-frozen
+
+############################################################################
+# Global objects
+
+# Dependencies which can add and/or remove _Py_ID() identifiers:
+# - "make clinic"
+.PHONY: regen-global-objects
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py clinic
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
+
+############################################################################
+# ABI
+
+.PHONY: regen-abidump
+regen-abidump: all
+	@$(MKDIR_P) $(srcdir)/Doc/data/
+	abidw "libpython$(LDVERSION).so" --no-architecture --out-file $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+	@$(UPDATE_FILE) --create $(srcdir)/Doc/data/python$(LDVERSION).abi $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+
+.PHONY: check-abidump
+check-abidump: all
+	abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
+
+.PHONY: regen-limited-abi
+regen-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+
+############################################################################
+# Regenerate Unicode Data
+
+.PHONY: regen-unicodedata
+regen-unicodedata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/unicode/makeunicodedata.py
+
+
+############################################################################
+# Regenerate all generated files
+
+# "clinic" is regenerated implicitly via "regen-global-objects".
+.PHONY: regen-all
+regen-all: regen-cases regen-typeslots \
+	regen-token regen-ast regen-keyword regen-sre regen-frozen \
+	regen-pegen-metaparser regen-pegen regen-test-frozenmain \
+	regen-test-levenshtein regen-global-objects
+	@echo
+	@echo "Note: make regen-stdlib-module-names, make regen-limited-abi, "
+	@echo "make regen-configure, make regen-sbom, and make regen-unicodedata should be run manually"
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-DPLATLIBDIR='"$(PLATLIBDIR)"' \
+		-DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h
+
+Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_common.h
+
+Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		$(if $(MULTIARCH),-DMULTIARCH='"$(MULTIARCH)"') \
+		-DSOABI='"$(SOABI)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-pegen-metaparser
+regen-pegen-metaparser:
+	@$(MKDIR_P) $(srcdir)/Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q python \
+	$(srcdir)/Tools/peg_generator/pegen/metagrammar.gram \
+	-o $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+	$(UPDATE_FILE) $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py \
+	$(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+
+.PHONY: regen-pegen
+regen-pegen:
+	@$(MKDIR_P) $(srcdir)/Parser
+	@$(MKDIR_P) $(srcdir)/Parser/tokenizer
+	@$(MKDIR_P) $(srcdir)/Parser/lexer
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q c \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		-o $(srcdir)/Parser/parser.c.new
+	$(UPDATE_FILE) $(srcdir)/Parser/parser.c $(srcdir)/Parser/parser.c.new
+
+.PHONY: regen-ast
+regen-ast:
+	# Regenerate 3 files using Parser/asdl_c.py:
+	# - Include/internal/pycore_ast.h
+	# - Include/internal/pycore_ast_state.h
+	# - Python/Python-ast.c
+	$(MKDIR_P) $(srcdir)/Include
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		$(srcdir)/Parser/Python.asdl \
+		-H $(srcdir)/Include/internal/pycore_ast.h.new \
+		-I $(srcdir)/Include/internal/pycore_ast_state.h.new \
+		-C $(srcdir)/Python/Python-ast.c.new
+
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast_state.h $(srcdir)/Include/internal/pycore_ast_state.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc \
+		$(srcdir)/Doc/library/token.rst
+	# Regenerate Include/internal/pycore_token.h from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/internal/pycore_token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/python.gram and Grammar/Tokens
+	# using Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen.keywordgen \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: all Programs/_testembed
+	# Regenerate Python/stdlib_module_names.h
+	# using Tools/build/generate_stdlib_module_names.py
+	$(RUNSHARED) ./$(BUILDPYTHON) \
+		$(srcdir)/Tools/build/generate_stdlib_module_names.py \
+		> $(srcdir)/Python/stdlib_module_names.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
+
+.PHONY: regen-sre
+regen-sre:
+	# Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
+	# from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
+		$(srcdir)/Lib/re/_constants.py \
+		$(srcdir)/Modules/_sre/sre_constants.h \
+		$(srcdir)/Modules/_sre/sre_targets.h
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+		$(srcdir)/Objects/mimalloc/alloc-aligned.c \
+		$(srcdir)/Objects/mimalloc/alloc-posix.c \
+		$(srcdir)/Objects/mimalloc/arena.c \
+		$(srcdir)/Objects/mimalloc/bitmap.c \
+		$(srcdir)/Objects/mimalloc/heap.c \
+		$(srcdir)/Objects/mimalloc/init.c \
+		$(srcdir)/Objects/mimalloc/options.c \
+		$(srcdir)/Objects/mimalloc/os.c \
+		$(srcdir)/Objects/mimalloc/page.c \
+		$(srcdir)/Objects/mimalloc/random.c \
+		$(srcdir)/Objects/mimalloc/segment.c \
+		$(srcdir)/Objects/mimalloc/segment-map.c \
+		$(srcdir)/Objects/mimalloc/stats.c \
+		$(srcdir)/Objects/mimalloc/prim/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/osx/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/unix/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/wasi/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
+
+
+# Regenerate various files from Python/bytecodes.c
+# Pass CASESFLAG=-l to insert #line directives in the output
+
+.PHONY: regen-cases
+regen-cases: \
+        regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
+		regen-generated-cases regen-executor-cases regen-optimizer-cases \
+		regen-opcode-metadata regen-uop-metadata
+
+.PHONY: regen-opcode-ids
+regen-opcode-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_id_generator.py \
+	    -o $(srcdir)/Include/opcode_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/opcode_ids.h $(srcdir)/Include/opcode_ids.h.new
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/target_generator.py \
+	    -o $(srcdir)/Python/opcode_targets.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+.PHONY: regen-uop-ids
+regen-uop-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_id_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_uop_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_ids.h $(srcdir)/Include/internal/pycore_uop_ids.h.new
+
+.PHONY: regen-opcode-metadata-py
+regen-opcode-metadata-py:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/py_metadata_generator.py \
+	    -o $(srcdir)/Lib/_opcode_metadata.py.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Lib/_opcode_metadata.py $(srcdir)/Lib/_opcode_metadata.py.new
+
+.PHONY: regen-generated-cases
+regen-generated-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier1_generator.py \
+	    -o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new
+
+.PHONY: regen-executor-cases
+regen-executor-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
+	    -o $(srcdir)/Python/executor_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/executor_cases.c.h $(srcdir)/Python/executor_cases.c.h.new
+
+.PHONY: regen-optimizer-cases
+regen-optimizer-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/optimizer_generator.py \
+	    -o $(srcdir)/Python/optimizer_cases.c.h.new \
+	    $(srcdir)/Python/optimizer_bytecodes.c \
+	    $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
+
+.PHONY: regen-opcode-metadata
+regen-opcode-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_opcode_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_opcode_metadata.h $(srcdir)/Include/internal/pycore_opcode_metadata.h.new
+
+.PHONY: regen-uop-metadata
+regen-uop-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_metadata_generator.py -o \
+	    $(srcdir)/Include/internal/pycore_uop_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_metadata.h $(srcdir)/Include/internal/pycore_uop_metadata.h.new
+
+Python/compile.o Python/assemble.o Python/flowgraph.o Python/instruction_sequence.o: \
+                $(srcdir)/Include/internal/pycore_compile.h \
+                $(srcdir)/Include/internal/pycore_flowgraph.h \
+                $(srcdir)/Include/internal/pycore_instruction_sequence.h \
+                $(srcdir)/Include/internal/pycore_opcode_metadata.h \
+                $(srcdir)/Include/internal/pycore_opcode_utils.h
+
+Python/ceval.o: \
+		$(srcdir)/Python/ceval_macros.h \
+		$(srcdir)/Python/condvar.h \
+		$(srcdir)/Python/generated_cases.c.h \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Python/opcode_targets.h
+
+Python/flowgraph.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h
+
+Python/optimizer.o: \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h
+
+Python/optimizer_analysis.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Python/optimizer_cases.c.h
+
+Python/frozen.o: $(FROZEN_FILES_OUT)
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/gc.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) -m test
+TESTTIMEOUT=
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+.PHONY: cleantest
+cleantest: all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+# Similar to buildbottest, but use --fast-ci option, instead of --slow-ci.
+.PHONY: test
+test: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+.PHONY: testuniversal
+testuniversal: all
+	@if [ `arch` != 'i386' ]; then \
+		echo "This can only be used on OSX/i386" ;\
+		exit 1 ;\
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+	$(RUNSHARED) /usr/libexec/oah/translate \
+		./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Run the test suite on the iOS simulator. Must be run on a macOS machine with
+# a full Xcode install that has an iPhone SE (3rd edition) simulator available.
+# This must be run *after* a `make install` has completed the build. The
+# `--with-framework-name` argument *cannot* be used when configuring the build.
+XCFOLDER:=iOSTestbed.$(MULTIARCH).$(shell date +%s).$$PPID
+.PHONY: testios
+testios:
+	@if test "$(MACHDEP)" != "ios"; then \
+		echo "Cannot run the iOS testbed for a non-iOS build."; \
+		exit 1;\
+	fi
+	@if test "$(findstring -iphonesimulator,$(MULTIARCH))" != "-iphonesimulator"; then \
+		echo "Cannot run the iOS testbed for non-simulator builds."; \
+		exit 1;\
+	fi
+	@if test $(PYTHONFRAMEWORK) != "Python"; then \
+		echo "Cannot run the iOS testbed with a non-default framework name."; \
+		exit 1;\
+	fi
+	@if ! test -d $(PYTHONFRAMEWORKPREFIX); then \
+		echo "Cannot find a finalized iOS Python.framework. Have you run 'make install' to finalize the framework build?"; \
+		exit 1;\
+	fi
+
+	# Clone the testbed project into the XCFOLDER
+	$(PYTHON_FOR_BUILD) $(srcdir)/iOS/testbed clone --framework $(PYTHONFRAMEWORKPREFIX) "$(XCFOLDER)"
+
+	# Run the testbed project
+	$(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W
+
+# Like test, but using --slow-ci which enables all test resources and use
+# longer timeout. Run an optional pybuildbot.identify script to include
+# information about the build environment.
+.PHONY: buildbottest
+buildbottest: all
+	-@if which pybuildbot.identify >/dev/null 2>&1; then \
+		pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+.PHONY: pythoninfo
+pythoninfo: all
+		$(RUNSHARED) $(HOSTRUNNER) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	-x test_subprocess test_io \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+
+.PHONY: quicktest
+quicktest: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile
+multisslcompile: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py --steps=modules
+
+.PHONY: multissltest
+multissltest: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
+.PHONY: install
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: altinstall
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: commoninstall
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall altmaninstall 
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+.PHONY: sharedinstall
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			if test -d "$$i.dSYM"; then \
+				echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+				$(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			fi; \
+		  fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+.PHONY: altbininstall
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	@if test "$(PY_ENABLE_SHARED)" = 1 -o "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+			if test -n "$(DLLLIBRARY)" ; then \
+				$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+			else \
+				$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+				if test $(LDLIBRARY) != $(INSTSONAME); then \
+					(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+				fi \
+			fi; \
+			if test -n "$(PY3LIBRARY)"; then \
+				$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+			fi; \
+		else	true; \
+		fi; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE); \
+		lipo $(LIPO_INTEL64_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	# Install macOS debug information (if available)
+	if test -d "$(BUILDPYTHON).dSYM"; then \
+		echo $(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+		$(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			$(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+		fi \
+	else \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+      $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+		fi \
+	fi
+
+.PHONY: bininstall
+# We depend on commoninstall here to make sure the installation is already usable
+# before we possibly overwrite the global 'python3' symlink to avoid causing
+# problems for anything else trying to run 'python3' while we install, particularly
+# if we're installing in parallel with -j.
+bininstall: commoninstall altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION).pc python-$(VERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION)-embed.pc python-$(VERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-intel64$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-intel64$(EXE) python3-intel64$(EXE)) \
+	fi
+
+# Install the versioned manual page
+.PHONY: altmaninstall
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+.PHONY: maninstall
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	asyncio \
+		collections \
+		concurrent concurrent/futures \
+		csv \
+		ctypes ctypes/macholib \
+		curses \
+		dbm \
+		email email/mime \
+		encodings \
+		ensurepip ensurepip/_bundled \
+		html \
+		http \
+		idlelib idlelib/Icons \
+		importlib importlib/resources importlib/metadata \
+		json \
+		logging \
+		multiprocessing multiprocessing/dummy \
+		pathlib \
+		pydoc_data \
+		re \
+		site-packages \
+		sqlite3 \
+		sysconfig \
+		tkinter \
+		tomllib \
+		turtledemo \
+		unittest \
+		urllib \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		wsgiref \
+		$(XMLLIBSUBDIRS) \
+		xmlrpc \
+		zipfile zipfile/_path \
+		zoneinfo \
+		_pyrepl \
+		__phello__
+TESTSUBDIRS=	idlelib/idle_test \
+		test \
+		test/test_ast \
+		test/archivetestdata \
+		test/audiodata \
+		test/certdata \
+		test/certdata/capath \
+		test/cjkencodings \
+		test/configdata \
+		test/crashers \
+		test/data \
+		test/decimaltestdata \
+		test/dtracedata \
+		test/encoded_modules \
+		test/leakers \
+		test/libregrtest \
+		test/mathdata \
+		test/regrtestdata \
+		test/regrtestdata/import_from_tests \
+		test/regrtestdata/import_from_tests/test_regrtest_b \
+		test/subprocessdata \
+		test/support \
+		test/support/_hypothesis_stubs \
+		test/support/interpreters \
+		test/test_asyncio \
+		test/test_capi \
+		test/test_cext \
+		test/test_concurrent_futures \
+		test/test_cppext \
+		test/test_ctypes \
+		test/test_dataclasses \
+		test/test_doctest \
+		test/test_email \
+		test/test_email/data \
+		test/test_free_threading \
+		test/test_future_stmt \
+		test/test_gdb \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/circular_imports/subpkg2 \
+		test/test_import/data/circular_imports/subpkg2/parent \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		test/test_import/data/package3 \
+		test/test_import/data/package4 \
+		test/test_import/data/unwritable \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/metadata \
+		test/test_importlib/metadata/data \
+		test/test_importlib/metadata/data/sources \
+		test/test_importlib/metadata/data/sources/example \
+		test/test_importlib/metadata/data/sources/example/example \
+		test/test_importlib/metadata/data/sources/example2 \
+		test/test_importlib/metadata/data/sources/example2/example2 \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/partial \
+		test/test_importlib/resources \
+		test/test_importlib/source \
+		test/test_inspect \
+		test/test_interpreters \
+		test/test_json \
+		test/test_module \
+		test/test_multiprocessing_fork \
+		test/test_multiprocessing_forkserver \
+		test/test_multiprocessing_spawn \
+		test/test_pathlib \
+		test/test_peg_generator \
+		test/test_pydoc \
+		test/test_pyrepl \
+		test/test_sqlite3 \
+		test/test_tkinter \
+		test/test_tomllib \
+		test/test_tomllib/data \
+		test/test_tomllib/data/invalid \
+		test/test_tomllib/data/invalid/array \
+		test/test_tomllib/data/invalid/array-of-tables \
+		test/test_tomllib/data/invalid/boolean \
+		test/test_tomllib/data/invalid/dates-and-times \
+		test/test_tomllib/data/invalid/dotted-keys \
+		test/test_tomllib/data/invalid/inline-table \
+		test/test_tomllib/data/invalid/keys-and-vals \
+		test/test_tomllib/data/invalid/literal-str \
+		test/test_tomllib/data/invalid/multiline-basic-str \
+		test/test_tomllib/data/invalid/multiline-literal-str \
+		test/test_tomllib/data/invalid/table \
+		test/test_tomllib/data/valid \
+		test/test_tomllib/data/valid/array \
+		test/test_tomllib/data/valid/dates-and-times \
+		test/test_tomllib/data/valid/multiline-basic-str \
+		test/test_tools \
+		test/test_tools/i18n_data \
+		test/test_tools/msgfmt_data \
+		test/test_ttk \
+		test/test_unittest \
+		test/test_unittest/testmock \
+		test/test_warnings \
+		test/test_warnings/data \
+		test/test_zipfile \
+		test/test_zipfile/_path \
+		test/test_zoneinfo \
+		test/test_zoneinfo/data \
+		test/tkinterdata \
+		test/tokenizedata \
+		test/tracedmodules \
+		test/translationdata \
+		test/translationdata/argparse \
+		test/translationdata/getopt \
+		test/translationdata/optparse \
+		test/typinganndata \
+		test/wheeldata \
+		test/xmltestdata \
+		test/xmltestdata/c14n-20 \
+		test/zipimport_data
+
+COMPILEALL_OPTS=-j0
+
+TEST_MODULES=yes
+
+.PHONY: libinstall
+libinstall:	all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	@ # If app store compliance has been configured, apply the patch to the
+	@ # installed library code. The patch has been previously validated against
+	@ # the original source tree, so we can ignore any errors that are raised
+	@ # due to files that are missing because of --disable-test-modules etc.
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		echo "Applying app store compliance patch"; \
+		patch --force --reject-file "$(abs_builddir)/app-store-compliance.rej" --strip 2 --directory "$(DESTDIR)$(LIBDEST)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)" || true ; \
+	fi
+	@ # Build PYC files for the 3 optimization levels (0, 1, 2)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+# macOS' make seems to ignore a dependency on a
+# "$(BUILD_SCRIPTS_DIR): $(MKDIR_P) $@" rule.
+BUILD_SCRIPTS_DIR=build/scripts-$(VERSION)
+SCRIPT_IDLE=$(BUILD_SCRIPTS_DIR)/idle$(VERSION)
+SCRIPT_PYDOC=$(BUILD_SCRIPTS_DIR)/pydoc$(VERSION)
+
+$(SCRIPT_IDLE): $(srcdir)/Tools/scripts/idle3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/idle3 > $@
+	@chmod +x $@
+
+$(SCRIPT_PYDOC): $(srcdir)/Tools/scripts/pydoc3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/pydoc3 > $@
+	@chmod +x $@
+
+.PHONY: scripts
+scripts: $(SCRIPT_IDLE) $(SCRIPT_PYDOC) python-config
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+
+.PHONY: inclinstall
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		if test ! -d $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; then \
+			echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		fi; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		echo $(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		$(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		for i in $(srcdir)/Include/internal/mimalloc/mimalloc/*.h; \
+		do \
+			echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal/mimalloc/mimalloc; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		done; \
+	fi
+	echo $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.13/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+.PHONY: libainstall
+libainstall: all scripts
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -d $(LIBRARY); then :; else \
+			if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+				if test "$(SHLIB_SUFFIX)" = .dll; then \
+					$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+				else \
+					$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+				fi; \
+			else \
+				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+			fi; \
+		fi; \
+		$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.bootstrap $(DESTDIR)$(LIBPL)/Setup.bootstrap
+	$(INSTALL_DATA) Modules/Setup.stdlib $(DESTDIR)$(LIBPL)/Setup.stdlib
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	$(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION)
+	$(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION)
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/README.AIX for details.";	\
+	else true; \
+	fi
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+.PHONY: frameworkinstall
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+.PHONY: frameworkinstallframework
+frameworkinstallframework:  install frameworkinstallmaclib
+
+# macOS uses a versioned frameworks structure that includes a full install
+.PHONY: frameworkinstallversionedstructure
+frameworkinstallversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# iOS/tvOS/watchOS uses a non-versioned framework with Info.plist in the
+# framework root, no .lproj data, and only stub compilation assistance binaries
+.PHONY: frameworkinstallunversionedstructure
+frameworkinstallunversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; then \
+		echo "Clearing stale header symlink directory"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; \
+	fi
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)
+	sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR)
+	for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \
+		$(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \
+	done
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+.PHONY: frameworkinstallmaclib
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+.PHONY: frameworkinstallapps
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+.PHONY: frameworkpythonw
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+.PHONY: frameworkinstallunixtools
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+.PHONY: frameworkaltinstallunixtools
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+.PHONY: frameworkinstallextras
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# On iOS, bin/lib can't live inside the framework; include needs to be called
+# "Headers", but *must* be in the framework, and *not* include the `python3.X`
+# subdirectory. The install has put these folders in the same folder as
+# Python.framework; Move the headers to their final framework-compatible home.
+.PHONY: frameworkinstallmobileheaders
+frameworkinstallmobileheaders: frameworkinstallunversionedstructure inclinstall
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; then \
+		echo "Removing old framework headers"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; \
+	fi
+	mv "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)" "$(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers"
+	$(LN) -fs "../$(PYTHONFRAMEWORKDIR)/Headers" "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+
+JIT_DEPS = \
+		$(srcdir)/Tools/jit/*.c \
+		$(srcdir)/Tools/jit/*.py \
+		$(srcdir)/Python/executor_cases.c.h \
+		pyconfig.h
+
+jit_stencils.h: $(JIT_DEPS)
+	
+
+Python/jit.o: $(srcdir)/Python/jit.c 
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+.PHONY: regen-jit
+regen-jit:
+	
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+.PHONY: reindent
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+.PHONY: recheck
+recheck:
+	./config.status --recheck
+	./config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	(cd $(srcdir); autoreconf -ivf -Werror)
+
+.PHONY: regen-configure
+regen-configure:
+	$(srcdir)/Tools/build/regen-configure.sh
+
+.PHONY: regen-sbom
+regen-sbom:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+.PHONY: pycremoval
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+.PHONY: rmtestturds
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+.PHONY: docclean
+docclean:
+	$(MAKE) -C $(srcdir)/Doc clean
+
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+.PHONY: clean-retain-profile
+clean-retain-profile: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find . -name '*.lto' -exec rm -f {} ';'
+	find . -name '*.wasm' -exec rm -f {} ';'
+	find . -name '*.lst' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f _bootstrap_python
+	-rm -f python.html python*.js python.data python*.symbols python*.map
+	-rm -f $(WASM_STDLIB)
+	-rm -f Programs/_testembed Programs/_freeze_module
+	-rm -rf Python/deepfreeze
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/bin
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/lib
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/include
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/Python.framework
+
+.PHONY: profile-removal
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+	rm -f profile-bolt-stamp
+
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
+	@if test build_all = profile-opt -o build_all = bolt-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+	-rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
+.PHONY: clobber
+clobber: clean
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -rf iOS/Frameworks
+	-rm -rf iOSTestbed.*
+	-rm -f python-config.py python-config
+	-rm -rf cross-build
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+.PHONY: distclean
+distclean: clobber docclean
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+	    Modules/Setup.bootstrap Modules/Setup.stdlib \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+.PHONY: smelly
+smelly: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
+
+# Check if any unsupported C global variables have been added.
+.PHONY: check-c-globals
+check-c-globals:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/c-analyzer/check-c-globals.py \
+		--format summary \
+		--traceback
+
+# Check for undocumented C APIs.
+.PHONY: check-c-api-docs
+check-c-api-docs:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/check-c-api-docs/main.py
+
+# Find files with funny names
+.PHONY: funny
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+.PHONY: patchcheck
+patchcheck: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
+
+.PHONY: check-limited-abi
+check-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+
+.PHONY: update-config
+update-config:
+	curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
+	curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
+	chmod +x config.guess config.sub
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_pthread_stubs.h $(srcdir)/Python/condvar.h
+
+##########################################################################
+# Module dependencies and platform-specific files
+
+# force rebuild when header file or module build flavor (static/shared) is changed
+MODULE_DEPS_STATIC=Modules/config.c
+MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS)
+
+MODULE__CURSES_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__CURSES_PANEL_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__DATETIME_DEPS=$(srcdir)/Include/datetime.h
+MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_PYEXPAT_DEPS=$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE_UNICODEDATA_DEPS=$(srcdir)/Modules/unicodedata_db.h $(srcdir)/Modules/unicodename_db.h
+MODULE__BLAKE2_DEPS=$(srcdir)/Modules/_blake2/impl/blake2-config.h $(srcdir)/Modules/_blake2/impl/blake2-impl.h $(srcdir)/Modules/_blake2/impl/blake2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2b-ref.c $(srcdir)/Modules/_blake2/impl/blake2b-round.h $(srcdir)/Modules/_blake2/impl/blake2b.c $(srcdir)/Modules/_blake2/impl/blake2s-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2s-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2s-load-xop.h $(srcdir)/Modules/_blake2/impl/blake2s-ref.c $(srcdir)/Modules/_blake2/impl/blake2s-round.h $(srcdir)/Modules/_blake2/impl/blake2s.c $(srcdir)/Modules/_blake2/blake2module.h $(srcdir)/Modules/hashlib.h
+MODULE__CTYPES_DEPS=$(srcdir)/Modules/_ctypes/ctypes.h
+MODULE__CTYPES_MALLOC_CLOSURE=
+MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h $(LIBMPDEC_HEADERS) $(LIBMPDEC_A)
+MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c $(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h
+MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h
+MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c
+MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c
+MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_A)
+MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c
+MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c
+MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h
+MODULE__TESTCAPI_DEPS=$(srcdir)/Modules/_testcapi/parts.h $(srcdir)/Modules/_testcapi/util.h
+MODULE__TESTLIMITEDCAPI_DEPS=$(srcdir)/Modules/_testlimitedcapi/testcapi_long.h $(srcdir)/Modules/_testlimitedcapi/parts.h $(srcdir)/Modules/_testlimitedcapi/util.h
+MODULE__TESTINTERNALCAPI_DEPS=$(srcdir)/Modules/_testinternalcapi/parts.h
+MODULE__SQLITE3_DEPS=$(srcdir)/Modules/_sqlite/connection.h $(srcdir)/Modules/_sqlite/cursor.h $(srcdir)/Modules/_sqlite/microprotocols.h $(srcdir)/Modules/_sqlite/module.h $(srcdir)/Modules/_sqlite/prepare_protocol.h $(srcdir)/Modules/_sqlite/row.h $(srcdir)/Modules/_sqlite/util.h
+
+CODECS_COMMON_HEADERS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h $(srcdir)/Modules/cjkcodecs/cjkcodecs.h
+MODULE__CODECS_CN_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_cn.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_HK_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_hk.h  $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_ISO2022_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_JP_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(srcdir)/Modules/cjkcodecs/mappings_jp.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_KR_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_kr.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_TW_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_tw.h $(CODECS_COMMON_HEADERS)
+MODULE__MULTIBYTECODEC_DEPS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
--- a/Misc/python-config.sh	1970-01-01 04:00:00.000000000 +0400
+++ b/Misc/python-config.sh	2026-05-12 21:33:31.657683585 +0400
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Keep this script in sync with python-config.in
+
+exit_with_usage ()
+{
+    local usage
+    usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
+    if [ "$1" -eq 0 ]; then
+        echo "$usage"
+    else
+        echo "$usage" >&2
+    fi
+    exit $1
+}
+
+if [ "$1" = "" ] ; then
+    exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)

[truncated 1586375 bytes]

ready patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 17:36 UTCvalidation: ready

Handoff

Likely owner: external dependency or workload outside the current source tree

Reason: likely-external-root-cause

  • Confirm the hotspot still points at external dependency or workload outside the current source tree with a fresh perf sample before filing the bug.
  • Capture the actual hot backend or child process rather than the parent service wrapper if the issue recurs.
  • Map external dependency or workload outside the current source tree to its owning package or project and file an upstream or distro bug with the summarized evidence.
  • If the owner is still unclear, collect another short strace plus `/proc/<pid>/maps` at the moment of the spike.
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `python3.13`, but the actual entrypoint is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The trace shows `supervisord` alternating `wait4(-1, ..., WNOHANG) = ECHILD` with `poll(..., 1000) = 0` once per second, and `/proc` reports the sampled thread as sleeping in `poll_schedule_timeout`. That points at the Supervisor event loop or the workload environment, not a demonstrated CPython runtime bug.

## Evidence Confidence
observed

## Proposed Subject
No CPython source patch yet: diagnose as insufficient evidence for an upstream `python3.13` change and redirect investigation to the `supervisord` application/configuration path unless stronger CPython-specific evidence is collected.

## Patch Plan
Do not edit files in this pass. The evidence bundle gives direct Fixer traces, but it does not show a failing CPython API contract: `select.poll()` in `Modules/selectmodule.c` already releases the GIL with `Py_BEGIN_ALLOW_THREADS`, handles `EINTR`, and recomputes deadlines via `_PyDeadline_Init` / `_PyDeadline_Get`; `os.wait4()` in `Modules/posixmodule.c` similarly uses `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, and `wait_helper()`.

If later evidence proves a CPython bug, follow CPython conventions from `README.rst` and the developer guide reference, keep Argument Clinic generated files in sync where relevant, and use existing helpers rather than raw libc-only handling. No relevant CPython helper was found for Supervisor’s own event-loop policy because `supervisord` is outside this source tree.

No prior Fixer patch was found in this workspace (`git log` only shows `Fixer baseline`, and no patch/diff artifact was present), so there is no earlier patch to replace.

## Risks
A CPython patch based only on this evidence would likely be speculative. The sampled process name, command line, and syscall loop are application-level, while the backtrace top frame around `pthread_attr_destroy()` is not enough to establish causality, especially with stripped frames and the thread sleeping in `poll`.

Changing CPython polling or wait behavior to suppress this pattern could regress correct users of `select.poll()` or `os.wait4(WNOHANG)`.

## Validation
Before any future source patch, try the project-level entrypoint from the workspace root: `./configure && make`. If that fails because Debian-source dependencies or generated files are missing, record the exact failure and then run the narrowest relevant check, such as compiling the touched object or running a targeted stdlib test.

For a bounded independent reproduction attempt, use the real application path if available: `timeout 10s strace -f -tt -e poll,wait4 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. In this CPython source workspace, Supervisor and its system config are not part of the package, so I would not claim `reproduced` unless that command can actually run and show the same high-CPU failure signal.

## Patch Pass

Subject: Diagnose Supervisor poll loop outside CPython

## Commit Message
No source change was made. The collected perf, strace, and `/proc` evidence points to `supervisord` running under Python, not to a demonstrated CPython polling or wait bug. CPython’s local `select.poll()` and `os.wait4()` paths already use the project’s established helpers for releasing the GIL and handling interrupted syscalls.

## Evidence Confidence
observed

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with high CPU attributed to `python3.13`. The collected signal shows repeated `wait4(-1, ..., WNOHANG) = ECHILD` calls followed by `poll(..., 1000) = 0` timeouts, while `/proc` reports the sampled thread sleeping in `poll_schedule_timeout`.

The cautious code-level inference is that this is Supervisor’s event loop or deployment state waking once per second to reap child processes and poll its control fd. The CPython code I inspected does not show a matching runtime defect: `Modules/selectmodule.c` wraps `poll()` with `Py_BEGIN_ALLOW_THREADS`, handles `EINTR`, and recomputes deadlines with `_PyDeadline_Get`; `Modules/posixmodule.c` wraps `wait4()` similarly and uses `posix_error()` / `wait_helper()`.

I followed `./plan-output.txt` and did not change course. Because the evidence does not establish a CPython API or implementation failure, I made no source change. The expected effect is avoiding a speculative upstream CPython patch and leaving a focused diagnosis suitable for redirecting the bug report toward Supervisor or the service configuration.

## Git Add Paths
None

## Validation
Checked upstream-style context before deciding not to patch: `README.rst` points to the CPython Developer Guide and top-level `./configure`, `make`, `make test`; `debian/README.source` notes Debian quilt packaging; no relevant local helper was found for Supervisor’s application loop because Supervisor is outside this source tree. Relevant CPython helpers found and considered: `Py_BEGIN_ALLOW_THREADS`, `_PyDeadline_Get`, `posix_error()`, and `wait_helper()`.

Ran project-level validation from the workspace root:

`./configure && make`

Result: command completed with exit 0. Configure warned that system `libmpdec` was not found and used bundled libmpdec. The build also reported optional module issues: `_ssl` failed to import with `undefined symbol: TLSv1_method`, and `_dbm`, `_gdbm`, and `_tkinter` were missing.

Attempted bounded independent reproduction of the collected signal:

`timeout 10s strace -f -tt -e poll,wait4 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`

Result: blocked before execution because this environment has `python3`, `python3.13`, and `strace`, but no `supervisord` on `PATH` and no `/etc/supervisor/supervisord.conf`. I did not independently reproduce the reported high-CPU condition.

Diff

--- a/Makefile.pre	1970-01-01 04:00:00.000000000 +0400
+++ b/Makefile.pre	2026-05-12 21:33:31.640160629 +0400
@@ -0,0 +1,3297 @@
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=    _MODBUILT_NAMES_
+MODSHARED_NAMES=   _MODSHARED_NAMES_
+MODDISABLED_NAMES= _MODDISABLED_NAMES_
+MODOBJS=           _MODOBJS_
+MODLIBS=           _MODLIBS_
+
+# === Variables set by configure
+VERSION=	3.13
+srcdir=		.
+
+abs_srcdir=	b
+abs_builddir=	b
+
+
+CC=		gcc
+CXX=		g++
+LINKCC=		$(PURIFY) $(CC)
+AR=		ar
+READELF=	@READELF@
+SOABI=		cpython-313-x86_64-linux-gnu
+ABIFLAGS=	
+ABI_THREAD=	
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=
+GITVERSION=	git --git-dir $(srcdir)/.git rev-parse --short HEAD
+GITTAG=		git --git-dir $(srcdir)/.git describe --all --always --dirty
+GITBRANCH=	git --git-dir $(srcdir)/.git name-rev --name-only HEAD
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+DSYMUTIL=       
+DSYMUTIL_PATH=  
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh -e
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -O3 -Wall
+BASECFLAGS=	 -fno-strict-overflow -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+# LDFLAGS_NOLTO is an extra flag to disable lto. It is used to speed up building
+# of _bootstrap_python and _freeze_module tools, which don't need LTO.
+CONFIGURE_LDFLAGS_NOLTO=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+PLATLIBDIR=	lib
+SCRIPTDIR=	$(prefix)/$(PLATLIBDIR)
+# executable name for shebangs
+EXENAME=	$(BINDIR)/python$(LDVERSION)$(EXE)
+# Variable used by ensurepip
+WHEEL_PKG_DIR=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)$(ABI_THREAD)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)$(ABI_THREAD)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-313-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared $(PY_LDFLAGS)
+DESTSHARED=	$(LIBDEST)/lib-dynload
+
+# List of exported symbols for AIX
+EXPORTSYMS=	
+EXPORTSFROM=	
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Name of the patch file to apply for app store compliance
+APP_STORE_COMPLIANCE_PATCH=
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= 
+RESSRCDIR= 
+# macOS deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# iOS Deployment target selected during configure. Unlike macOS, the iOS
+# deployment target is controlled using `-mios-version-min` arguments added to
+# CFLAGS and LDFLAGS by the configure script. This variable is not used during
+# the build, and is only listed here so it will be included in sysconfigdata.
+IPHONEOS_DEPLOYMENT_TARGET=
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Flags to lipo to produce an intel-64-only universal executable
+LIPO_INTEL64_FLAGS=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      upgrade
+
+# Internal static libraries
+LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
+LIBEXPAT_A= Modules/expat/libexpat.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
+
+# Module state, compiler flags and linker flags
+# Empty CFLAGS and LDFLAGS are omitted.
+# states:
+#   * yes: module is available
+#   * missing: build dependency is missing
+#   * disabled: module is disabled
+#   * n/a: module is not available on the current platform
+# MODULE_EGG_STATE=yes  # yes, missing, disabled, n/a
+# MODULE_EGG_CFLAGS=
+# MODULE_EGG_LDFLAGS=
+MODULE__IO_STATE=yes
+MODULE__IO_CFLAGS=-I$(srcdir)/Modules/_io
+MODULE_TIME_STATE=yes
+MODULE_TIME_LDFLAGS=
+MODULE_ARRAY_STATE=yes
+MODULE__ASYNCIO_STATE=yes
+MODULE__BISECT_STATE=yes
+MODULE__CONTEXTVARS_STATE=yes
+MODULE__CSV_STATE=yes
+MODULE__HEAPQ_STATE=yes
+MODULE__JSON_STATE=yes
+MODULE__LSPROF_STATE=yes
+MODULE__OPCODE_STATE=yes
+MODULE__PICKLE_STATE=yes
+MODULE__POSIXSUBPROCESS_STATE=yes
+MODULE__QUEUE_STATE=yes
+MODULE__RANDOM_STATE=yes
+MODULE_SELECT_STATE=yes
+MODULE__STRUCT_STATE=yes
+MODULE__TYPING_STATE=yes
+MODULE__INTERPRETERS_STATE=yes
+MODULE__INTERPCHANNELS_STATE=yes
+MODULE__INTERPQUEUES_STATE=yes
+MODULE__ZONEINFO_STATE=yes
+MODULE__MULTIPROCESSING_STATE=yes
+MODULE__MULTIPROCESSING_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_STATE=yes
+MODULE__POSIXSHMEM_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_LDFLAGS=
+MODULE__STATISTICS_STATE=yes
+MODULE__STATISTICS_LDFLAGS=-lm
+MODULE_CMATH_STATE=yes
+MODULE_CMATH_LDFLAGS=-lm
+MODULE_MATH_STATE=yes
+MODULE_MATH_LDFLAGS=-lm
+MODULE__DATETIME_STATE=yes
+MODULE__DATETIME_LDFLAGS= -lm
+MODULE_FCNTL_STATE=yes
+MODULE_FCNTL_LDFLAGS=
+MODULE_MMAP_STATE=yes
+MODULE__SOCKET_STATE=yes
+MODULE_GRP_STATE=yes
+MODULE_PWD_STATE=yes
+MODULE_RESOURCE_STATE=yes
+MODULE__SCPROXY_STATE=n/a
+MODULE_SYSLOG_STATE=yes
+MODULE_TERMIOS_STATE=yes
+MODULE_PYEXPAT_STATE=yes
+MODULE_PYEXPAT_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE_PYEXPAT_LDFLAGS=-lm $(LIBEXPAT_A)
+MODULE__ELEMENTTREE_STATE=yes
+MODULE__ELEMENTTREE_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE__CODECS_CN_STATE=yes
+MODULE__CODECS_HK_STATE=yes
+MODULE__CODECS_ISO2022_STATE=yes
+MODULE__CODECS_JP_STATE=yes
+MODULE__CODECS_KR_STATE=yes
+MODULE__CODECS_TW_STATE=yes
+MODULE__MULTIBYTECODEC_STATE=yes
+MODULE_UNICODEDATA_STATE=yes
+MODULE__MD5_STATE=yes
+MODULE__MD5_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA1_STATE=yes
+MODULE__SHA1_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA2_STATE=yes
+MODULE__SHA2_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA3_STATE=yes
+MODULE__BLAKE2_STATE=yes
+MODULE__BLAKE2_CFLAGS=
+MODULE__BLAKE2_LDFLAGS=
+MODULE__CTYPES_STATE=yes
+MODULE__CTYPES_CFLAGS=-fno-strict-overflow 
+MODULE__CTYPES_LDFLAGS=-lffi -ldl
+MODULE__CURSES_STATE=yes
+MODULE__CURSES_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE__CURSES_LDFLAGS=-lncursesw -ltinfo
+
+MODULE__CURSES_PANEL_STATE=yes
+MODULE__CURSES_PANEL_CFLAGS=-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE 
+MODULE__CURSES_PANEL_LDFLAGS=-lpanelw -lncursesw -ltinfo
+
+MODULE__DECIMAL_STATE=yes
+MODULE__DECIMAL_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1
+MODULE__DECIMAL_LDFLAGS=-lm $(LIBMPDEC_A)
+MODULE__DBM_STATE=missing
+MODULE__GDBM_STATE=missing
+MODULE_READLINE_STATE=yes
+MODULE_READLINE_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE_READLINE_LDFLAGS=-lreadline
+MODULE__SQLITE3_STATE=yes
+MODULE__SQLITE3_CFLAGS= -I$(srcdir)/Modules/_sqlite
+MODULE__SQLITE3_LDFLAGS=-lsqlite3
+MODULE__TKINTER_STATE=missing
+MODULE__UUID_STATE=yes
+MODULE__UUID_CFLAGS=-I/usr/include/uuid
+MODULE__UUID_LDFLAGS=-luuid
+MODULE_ZLIB_STATE=yes
+MODULE_ZLIB_CFLAGS=
+MODULE_ZLIB_LDFLAGS=-lz
+MODULE_BINASCII_STATE=yes
+MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 
+MODULE_BINASCII_LDFLAGS=-lz
+MODULE__BZ2_STATE=yes
+MODULE__BZ2_CFLAGS=
+MODULE__BZ2_LDFLAGS=-lbz2
+MODULE__LZMA_STATE=yes
+MODULE__LZMA_CFLAGS=
+MODULE__LZMA_LDFLAGS=-llzma
+MODULE__SSL_STATE=yes
+MODULE__SSL_CFLAGS=
+MODULE__SSL_LDFLAGS=  -lssl -lcrypto
+MODULE__HASHLIB_STATE=yes
+MODULE__HASHLIB_CFLAGS=
+MODULE__HASHLIB_LDFLAGS=   -lcrypto
+MODULE__TESTCAPI_STATE=yes
+MODULE__TESTCAPI_LDFLAGS=
+MODULE__TESTCLINIC_STATE=yes
+MODULE__TESTCLINIC_LIMITED_STATE=yes
+MODULE__TESTLIMITEDCAPI_STATE=yes
+MODULE__TESTINTERNALCAPI_STATE=yes
+MODULE__TESTBUFFER_STATE=yes
+MODULE__TESTIMPORTMULTIPLE_STATE=yes
+MODULE__TESTMULTIPHASE_STATE=yes
+MODULE__TESTSINGLEPHASE_STATE=yes
+MODULE__TESTEXTERNALINSPECTION_STATE=yes
+MODULE_XXSUBTYPE_STATE=yes
+MODULE__XXTESTFUZZ_STATE=yes
+MODULE__CTYPES_TEST_STATE=yes
+MODULE__CTYPES_TEST_LDFLAGS=-lm
+MODULE_XXLIMITED_STATE=yes
+MODULE_XXLIMITED_35_STATE=yes
+
+
+# Default zoneinfo.TZPATH. Added here to expose it in sysconfig.get_config_var
+TZPATH=/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
+
+# If to install mimalloc headers
+INSTALL_MIMALLOC=yes
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	
+
+
+# Subdirectories with code
+SRCDIRS= 	  Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# assets for Emscripten browser builds
+WASM_ASSETS_DIR=.$(prefix)
+WASM_STDLIB=$(WASM_ASSETS_DIR)/lib/python$(VERSION)/os.py
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+LIBRARY_DEPS=	$(LIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+LINK_PYTHON_DEPS=$(LIBRARY_DEPS)
+PY_ENABLE_SHARED=	0
+STATIC_LIBPYTHON=	1
+
+
+LIBS=		-ldl 
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+HOSTRUNNER= 
+
+PYTHON_FOR_REGEN?=python3.13
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+# Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
+# external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
+PYTHON_FOR_BUILD_DEPS=$(BUILDPYTHON)
+
+# Single-platform builds use Programs/_freeze_module.c for bootstrapping and
+# ./_bootstrap_python Programs/_freeze_module.py for remaining modules
+# Cross builds use an external "build Python" for all modules.
+PYTHON_FOR_FREEZE=./_bootstrap_python
+FREEZE_MODULE_BOOTSTRAP=./Programs/_freeze_module
+FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
+FREEZE_MODULE=$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py
+FREEZE_MODULE_DEPS=_bootstrap_python $(srcdir)/Programs/_freeze_module.py
+
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo --timeout=$(TESTTIMEOUT)
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
+
+
+# === Definitions added by makesetup ===
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+	$(srcdir)/Include/internal/pycore_mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
+##########################################################################
+# Parser
+
+PEGEN_OBJS=		\
+		Parser/pegen.o \
+		Parser/pegen_errors.o \
+		Parser/action_helpers.o \
+		Parser/parser.o \
+		Parser/string_parser.o \
+		Parser/peg_api.o
+
+TOKENIZER_OBJS=		\
+		Parser/lexer/buffer.o \
+		Parser/lexer/lexer.o \
+		Parser/lexer/state.o \
+		Parser/tokenizer/file_tokenizer.o \
+		Parser/tokenizer/readline_tokenizer.o \
+		Parser/tokenizer/string_tokenizer.o \
+		Parser/tokenizer/utf8_tokenizer.o \
+		Parser/tokenizer/helpers.o
+
+PEGEN_HEADERS= \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Parser/pegen.h \
+		$(srcdir)/Parser/string_parser.h
+
+TOKENIZER_HEADERS= \
+		Parser/lexer/buffer.h \
+		Parser/lexer/lexer.h \
+		Parser/lexer/state.h \
+		Parser/tokenizer/tokenizer.h \
+		Parser/tokenizer/helpers.h
+
+POBJS=		\
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) $(PEGEN_OBJS) $(TOKENIZER_OBJS) Parser/myreadline.o
+
+PARSER_HEADERS= \
+		$(PEGEN_HEADERS) \
+		$(TOKENIZER_HEADERS)
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/Python-tokenize.o \
+		Python/asdl.o \
+		Python/assemble.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/brc.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/critical_section.o \
+		Python/crossinterp.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/flowgraph.o \
+		Python/frame.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/gc.o \
+		Python/gc_free_threading.o \
+		Python/gc_gil.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/ceval_gil.o \
+		Python/hamt.o \
+		Python/hashtable.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/interpconfig.o \
+		Python/instrumentation.o \
+		Python/instruction_sequence.o \
+		Python/intrinsics.o \
+		Python/jit.o \
+		Python/legacy_tracing.o \
+		Python/lock.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/object_stack.o \
+		Python/optimizer.o \
+		Python/optimizer_analysis.o \
+		Python/optimizer_symbols.o \
+		Python/parking_lot.o \
+		Python/pathconfig.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/qsbr.o \
+		Python/bootstrap_hash.o \
+		Python/specialize.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/tracemalloc.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/suggestions.o \
+		Python/perf_trampoline.o \
+		Python/perf_jit_trampoline.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS) \
+		
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genericaliasobject.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/typevarobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/unionobject.o \
+		Objects/weakrefobject.o \
+		Python/asm_trampoline.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Modules/getpath.o \
+		Python/frozen.o
+
+LINK_PYTHON_OBJS=$(LIBRARY_OBJS)
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/gc.o Python/import.o Python/sysmodule.o
+
+##########################################################################
+# decimal's libmpdec
+
+LIBMPDEC_OBJS= \
+		Modules/_decimal/libmpdec/basearith.o \
+		Modules/_decimal/libmpdec/constants.o \
+		Modules/_decimal/libmpdec/context.o \
+		Modules/_decimal/libmpdec/convolute.o \
+		Modules/_decimal/libmpdec/crt.o \
+		Modules/_decimal/libmpdec/difradix2.o \
+		Modules/_decimal/libmpdec/fnt.o \
+		Modules/_decimal/libmpdec/fourstep.o \
+		Modules/_decimal/libmpdec/io.o \
+		Modules/_decimal/libmpdec/mpalloc.o \
+		Modules/_decimal/libmpdec/mpdecimal.o \
+		Modules/_decimal/libmpdec/numbertheory.o \
+		Modules/_decimal/libmpdec/sixstep.o \
+		Modules/_decimal/libmpdec/transpose.o
+		# _decimal does not use signaling API
+		# Modules/_decimal/libmpdec/mpsignal.o
+
+LIBMPDEC_HEADERS= \
+		$(srcdir)/Modules/_decimal/libmpdec/basearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/bits.h \
+		$(srcdir)/Modules/_decimal/libmpdec/constants.h \
+		$(srcdir)/Modules/_decimal/libmpdec/convolute.h \
+		$(srcdir)/Modules/_decimal/libmpdec/crt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/difradix2.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fnt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fourstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/io.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpalloc.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpdecimal.h \
+		$(srcdir)/Modules/_decimal/libmpdec/numbertheory.h \
+		$(srcdir)/Modules/_decimal/libmpdec/sixstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/transpose.h \
+		$(srcdir)/Modules/_decimal/libmpdec/typearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/umodarith.h
+
+##########################################################################
+# pyexpat's expat library
+
+LIBEXPAT_OBJS= \
+		Modules/expat/xmlparse.o \
+		Modules/expat/xmlrole.o \
+		Modules/expat/xmltok.o
+
+LIBEXPAT_HEADERS= \
+		Modules/expat/ascii.h \
+		Modules/expat/asciitab.h \
+		Modules/expat/expat.h \
+		Modules/expat/expat_config.h \
+		Modules/expat/expat_external.h \
+		Modules/expat/iasciitab.h \
+		Modules/expat/internal.h \
+		Modules/expat/latin1tab.h \
+		Modules/expat/nametab.h \
+		Modules/expat/pyexpatns.h \
+		Modules/expat/siphash.h \
+		Modules/expat/utf8tab.h \
+		Modules/expat/xmlrole.h \
+		Modules/expat/xmltok.h \
+		Modules/expat/xmltok_impl.h \
+		Modules/expat/xmltok_impl.c \
+		Modules/expat/xmltok_ns.c
+
+##########################################################################
+# hashlib's HACL* library
+
+LIBHACL_SHA2_OBJS= \
+                Modules/_hacl/Hacl_Hash_SHA2.o
+
+LIBHACL_HEADERS= \
+                Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
+                Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h \
+                Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h \
+                Modules/_hacl/include/krml/internal/target.h \
+                Modules/_hacl/include/krml/lowstar_endianness.h \
+                Modules/_hacl/include/krml/types.h \
+		Modules/_hacl/Hacl_Streaming_Types.h \
+                Modules/_hacl/python_hacl_namespaces.h
+
+LIBHACL_SHA2_HEADERS= \
+                Modules/_hacl/Hacl_Hash_SHA2.h \
+                Modules/_hacl/internal/Hacl_Hash_SHA2.h \
+		$(LIBHACL_HEADERS)
+
+#########################################################################
+# Rules
+
+# Default target
+all:		build_all
+
+# First target in Makefile is implicit default. So .PHONY needs to come after
+# all.
+.PHONY: all
+
+# Provide quick help for common Makefile targets.
+.PHONY: help
+help:
+	@echo "Run 'make' to build the Python executable and extension modules"
+	@echo ""
+	@echo "or 'make <target>' where <target> is one of:"
+	@echo "  test         run the test suite"
+	@echo "  install      install built files"
+	@echo "  regen-all    regenerate a number of generated source files"
+	@echo "  clinic       run Argument Clinic over source files"
+	@echo ""
+	@echo "  clean        to remove build files"
+	@echo "  distclean    'clean' + remove other generated files (patch, exe, etc)"
+	@echo ""
+	@echo "  recheck      rerun configure with last cmdline options"
+	@echo "  reindent     reindent .py files in Lib directory"
+	@echo "  tags         build a tags file (useful for Emacs and other editors)"
+	@echo "  list-targets list all targets in the Makefile"
+
+# Display a full list of Makefile targets
+.PHONY: list-targets
+list-targets:
+	@grep -E '^[A-Za-z][-A-Za-z0-9]+:' Makefile | awk -F : '{print $$1}'
+
+.PHONY: build_all
+build_all:	check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \
+		gdbhooks Programs/_testembed scripts checksharedmods rundsymutil
+
+.PHONY: build_wasm
+build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \
+		python-config checksharedmods
+
+# Check that the source is clean when building out of source.
+.PHONY: check-clean-src
+check-clean-src:
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/$(BUILDPYTHON)" \
+	    -o -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \
+		echo "Try to run:" ; \
+		echo "  (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \
+		exit 1; \
+	fi
+
+# Check that the app store compliance patch can be applied (if configured).
+# This is checked as a dry-run against the original library sources;
+# the patch will be actually applied during the install phase.
+.PHONY: check-app-store-compliance
+check-app-store-compliance:
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		patch --dry-run --quiet --force --strip 1 --directory "$(abs_srcdir)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)"; \
+		echo "App store compliance patch can be applied."; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean-profile
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	@ # FIXME: can't run for a cross build
+	task="$(PROFILE_TASK)"; \
+	case "$$task" in \
+	*-s\ *) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  while [ -f $(abs_builddir)/build/pynexttest ]; do \
+	    $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  done;; \
+	*) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	esac || true
+	$(LLVM_PROF_MERGER)
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean-retain-profile
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+.PHONY: profile-opt
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# List of binaries that BOLT runs on.
+BOLT_BINARIES := $(BUILDPYTHON)
+
+BOLT_INSTRUMENT_FLAGS :=  -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1 
+BOLT_APPLY_FLAGS :=   -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1  -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot 
+
+.PHONY: clean-bolt
+clean-bolt:
+	# Profile data.
+	rm -f *.fdata
+	# Pristine binaries before BOLT optimization.
+	rm -f *.prebolt
+	# BOLT instrumented binaries.
+	rm -f *.bolt_inst
+
+profile-bolt-stamp: $(BUILDPYTHON)
+	# Ensure a pristine, pre-BOLT copy of the binary and no profile data from last run.
+	for bin in $(BOLT_BINARIES); do \
+	  prebolt="$${bin}.prebolt"; \
+	  if [ -e "$${prebolt}" ]; then \
+	    echo "Restoring pre-BOLT binary $${prebolt}"; \
+	    mv "$${bin}.prebolt" "$${bin}"; \
+	  fi; \
+	  cp "$${bin}" "$${prebolt}"; \
+	  rm -f $${bin}.bolt.*.fdata $${bin}.fdata; \
+	done
+	# Instrument each binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}" -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $${bin}.bolt) -o $${bin}.bolt_inst $(BOLT_INSTRUMENT_FLAGS); \
+	  mv "$${bin}.bolt_inst" "$${bin}"; \
+	done
+	# Run instrumented binaries to collect data.
+	$(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
+	# Merge all the data files together.
+	for bin in $(BOLT_BINARIES); do \
+	   $${bin}.*.fdata > "$${bin}.fdata"; \
+	  rm -f $${bin}.*.fdata; \
+	done
+	# Run bolt against the merged data to produce an optimized binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}.prebolt" -o "$${bin}.bolt" -data="$${bin}.fdata" $(BOLT_APPLY_FLAGS); \
+	  mv "$${bin}.bolt" "$${bin}"; \
+	done
+	touch $@
+
+.PHONY: bolt-opt
+bolt-opt:
+	$(MAKE) 
+	$(MAKE) profile-bolt-stamp
+
+# Compile and run with gcov
+.PHONY: coverage
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean
+	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
+
+.PHONY: coverage-lcov
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and frozen modules
+.PHONY: coverage-report
+coverage-report: regen-token regen-frozen
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY: clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --exclude Lib/test/clinic.test.c --srcdir $(srcdir)
+
+.PHONY: clinic-tests
+clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $(srcdir)/Lib/test/clinic.test.c
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(PYTHON_FOR_BUILD_DEPS)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	# AIX Linker don't support "-h" option
+	if test "$(MACHDEP)" != "aix"; then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+	if test $(INSTSONAME) != $@; then \
+		$(LN) -f $(INSTSONAME) $@; \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# List of exported symbols for AIX
+Modules/python.exp: $(LIBRARY)
+	$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+.PHONY: gdbhooks
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule is for iOS, which requires an annoyingly just slightly different
+# format for frameworks to macOS. It *doesn't* use a versioned framework, and
+# the Info.plist must be in the root of the framework.
+$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(PYTHONFRAMEWORKDIR)/Info.plist
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+# wasm32-emscripten browser build
+# wasm assets directory is relative to current build dir, e.g. "./usr/local".
+# --preload-file turns a relative asset path into an absolute path.
+
+.PHONY: wasm_stdlib
+wasm_stdlib: $(WASM_STDLIB)
+$(WASM_STDLIB): $(srcdir)/Lib/*.py $(srcdir)/Lib/*/*.py \
+	    $(srcdir)/Tools/wasm/wasm_assets.py \
+	    Makefile pybuilddir.txt Modules/Setup.local
+	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/wasm/wasm_assets.py \
+	    --buildroot . --prefix $(prefix)
+
+python.html: $(srcdir)/Tools/wasm/python.html python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.html $@
+
+python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.worker.js $@
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/critical_section.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/exports.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/genericaliasobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/lock.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/monitoring.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/opcode_ids.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/pyatomic.h \
+		$(srcdir)/Include/pybuffer.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyexpat.h \
+		$(srcdir)/Include/pyframe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystats.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytypedefs.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/typeslots.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/bytearrayobject.h \
+		$(srcdir)/Include/cpython/bytesobject.h \
+		$(srcdir)/Include/cpython/cellobject.h \
+		$(srcdir)/Include/cpython/ceval.h \
+		$(srcdir)/Include/cpython/classobject.h \
+		$(srcdir)/Include/cpython/code.h \
+		$(srcdir)/Include/cpython/compile.h \
+		$(srcdir)/Include/cpython/complexobject.h \
+		$(srcdir)/Include/cpython/context.h \
+		$(srcdir)/Include/cpython/critical_section.h \
+		$(srcdir)/Include/cpython/descrobject.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/fileutils.h \
+		$(srcdir)/Include/cpython/floatobject.h \
+		$(srcdir)/Include/cpython/frameobject.h \
+		$(srcdir)/Include/cpython/funcobject.h \
+		$(srcdir)/Include/cpython/genobject.h \
+		$(srcdir)/Include/cpython/import.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/listobject.h \
+		$(srcdir)/Include/cpython/lock.h \
+		$(srcdir)/Include/cpython/longintrepr.h \
+		$(srcdir)/Include/cpython/longobject.h \
+		$(srcdir)/Include/cpython/memoryobject.h \
+		$(srcdir)/Include/cpython/methodobject.h \
+		$(srcdir)/Include/cpython/modsupport.h \
+		$(srcdir)/Include/cpython/monitoring.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/odictobject.h \
+		$(srcdir)/Include/cpython/picklebufobject.h \
+		$(srcdir)/Include/cpython/pthread_stubs.h \
+		$(srcdir)/Include/cpython/pyatomic.h \
+		$(srcdir)/Include/cpython/pyatomic_gcc.h \
+		$(srcdir)/Include/cpython/pyatomic_std.h \
+		$(srcdir)/Include/cpython/pyctype.h \
+		$(srcdir)/Include/cpython/pydebug.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pyfpe.h \
+		$(srcdir)/Include/cpython/pyframe.h \
+		$(srcdir)/Include/cpython/pyhash.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/pystats.h \
+		$(srcdir)/Include/cpython/pythonrun.h \
+		$(srcdir)/Include/cpython/pythread.h \
+		$(srcdir)/Include/cpython/setobject.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tracemalloc.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		$(srcdir)/Include/cpython/warnings.h \
+		$(srcdir)/Include/cpython/weakrefobject.h \
+		\
+		$(MIMALLOC_HEADERS) \
+		\
+		$(srcdir)/Include/internal/pycore_abstract.h \
+		$(srcdir)/Include/internal/pycore_asdl.h \
+		$(srcdir)/Include/internal/pycore_ast.h \
+		$(srcdir)/Include/internal/pycore_ast_state.h \
+		$(srcdir)/Include/internal/pycore_atexit.h \
+		$(srcdir)/Include/internal/pycore_backoff.h \
+		$(srcdir)/Include/internal/pycore_bitutils.h \
+		$(srcdir)/Include/internal/pycore_blocks_output_buffer.h \
+		$(srcdir)/Include/internal/pycore_brc.h \
+		$(srcdir)/Include/internal/pycore_bytes_methods.h \
+		$(srcdir)/Include/internal/pycore_bytesobject.h \
+		$(srcdir)/Include/internal/pycore_call.h \
+		$(srcdir)/Include/internal/pycore_capsule.h \
+		$(srcdir)/Include/internal/pycore_cell.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_ceval_state.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_codecs.h \
+		$(srcdir)/Include/internal/pycore_compile.h \
+		$(srcdir)/Include/internal/pycore_complexobject.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_critical_section.h \
+		$(srcdir)/Include/internal/pycore_crossinterp.h \
+		$(srcdir)/Include/internal/pycore_descrobject.h \
+		$(srcdir)/Include/internal/pycore_dict.h \
+		$(srcdir)/Include/internal/pycore_dict_state.h \
+		$(srcdir)/Include/internal/pycore_dtoa.h \
+		$(srcdir)/Include/internal/pycore_exceptions.h \
+		$(srcdir)/Include/internal/pycore_faulthandler.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_floatobject.h \
+		$(srcdir)/Include/internal/pycore_flowgraph.h \
+		$(srcdir)/Include/internal/pycore_format.h \
+		$(srcdir)/Include/internal/pycore_frame.h \
+		$(srcdir)/Include/internal/pycore_freelist.h \
+		$(srcdir)/Include/internal/pycore_function.h \
+		$(srcdir)/Include/internal/pycore_gc.h \
+		$(srcdir)/Include/internal/pycore_genobject.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_global_objects.h \
+		$(srcdir)/Include/internal/pycore_global_objects_fini_generated.h \
+		$(srcdir)/Include/internal/pycore_global_strings.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_hashtable.h \
+		$(srcdir)/Include/internal/pycore_identifier.h \
+		$(srcdir)/Include/internal/pycore_import.h \
+		$(srcdir)/Include/internal/pycore_importdl.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_instruments.h \
+		$(srcdir)/Include/internal/pycore_instruction_sequence.h \
+		$(srcdir)/Include/internal/pycore_interp.h \
+		$(srcdir)/Include/internal/pycore_intrinsics.h \
+		$(srcdir)/Include/internal/pycore_jit.h \
+		$(srcdir)/Include/internal/pycore_list.h \
+		$(srcdir)/Include/internal/pycore_llist.h \
+		$(srcdir)/Include/internal/pycore_lock.h \
+		$(srcdir)/Include/internal/pycore_long.h \
+		$(srcdir)/Include/internal/pycore_memoryobject.h \
+		$(srcdir)/Include/internal/pycore_mimalloc.h \
+		$(srcdir)/Include/internal/pycore_modsupport.h \
+		$(srcdir)/Include/internal/pycore_moduleobject.h \
+		$(srcdir)/Include/internal/pycore_namespace.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_object_alloc.h \
+		$(srcdir)/Include/internal/pycore_object_stack.h \
+		$(srcdir)/Include/internal/pycore_object_state.h \
+		$(srcdir)/Include/internal/pycore_obmalloc.h \
+		$(srcdir)/Include/internal/pycore_obmalloc_init.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_opcode_utils.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Include/internal/pycore_parking_lot.h \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyarena.h \
+		$(srcdir)/Include/internal/pycore_pyatomic_ft_wrappers.h \
+		$(srcdir)/Include/internal/pycore_pybuffer.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymath.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pymem_init.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_pystats.h \
+		$(srcdir)/Include/internal/pycore_pythonrun.h \
+		$(srcdir)/Include/internal/pycore_pythread.h \
+		$(srcdir)/Include/internal/pycore_qsbr.h \
+		$(srcdir)/Include/internal/pycore_range.h \
+		$(srcdir)/Include/internal/pycore_runtime.h \
+		$(srcdir)/Include/internal/pycore_runtime_init.h \
+		$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
+		$(srcdir)/Include/internal/pycore_semaphore.h \
+		$(srcdir)/Include/internal/pycore_setobject.h \
+		$(srcdir)/Include/internal/pycore_signal.h \
+		$(srcdir)/Include/internal/pycore_sliceobject.h \
+		$(srcdir)/Include/internal/pycore_strhex.h \
+		$(srcdir)/Include/internal/pycore_structseq.h \
+		$(srcdir)/Include/internal/pycore_symtable.h \
+		$(srcdir)/Include/internal/pycore_sysmodule.h \
+		$(srcdir)/Include/internal/pycore_stackref.h \
+		$(srcdir)/Include/internal/pycore_time.h \
+		$(srcdir)/Include/internal/pycore_token.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tracemalloc.h \
+		$(srcdir)/Include/internal/pycore_tstate.h \
+		$(srcdir)/Include/internal/pycore_tuple.h \
+		$(srcdir)/Include/internal/pycore_typeobject.h \
+		$(srcdir)/Include/internal/pycore_typevarobject.h \
+		$(srcdir)/Include/internal/pycore_ucnhash.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject_generated.h \
+		$(srcdir)/Include/internal/pycore_unionobject.h \
+		$(srcdir)/Include/internal/pycore_uop_ids.h \
+		$(srcdir)/Include/internal/pycore_uop_metadata.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(srcdir)/Include/internal/pycore_weakref.h \
+		$(DTRACE_HEADERS) \
+		 \
+		\
+		$(srcdir)/Python/stdlib_module_names.h
+
+##########################################################################
+# Build static libmpdec.a
+LIBMPDEC_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+# "%.o: %c" is not portable
+Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c
+
+Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c
+
+Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c
+
+Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c
+
+Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c
+
+Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c
+
+Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c
+
+Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c
+
+Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c
+
+Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c
+
+Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c
+
+Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c
+
+Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c
+
+Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c
+
+Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c
+
+$(LIBMPDEC_A): $(LIBMPDEC_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS)
+
+##########################################################################
+# Build static libexpat.a
+LIBEXPAT_CFLAGS=-I$(srcdir)/Modules/expat $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c
+
+Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c
+
+Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c
+
+$(LIBEXPAT_A): $(LIBEXPAT_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
+
+##########################################################################
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
+LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+	$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
+
+$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS)
+
+# create relative links from build/lib.platform/egg.so to Modules/egg.so
+# pybuilddir.txt is created too late. We cannot use it in Makefile
+# targets. ln --relative is not portable.
+.PHONY: sharedmods
+sharedmods: $(SHAREDMODS) pybuilddir.txt
+	@target=`cat pybuilddir.txt`; \
+	$(MKDIR_P) $$target; \
+	for mod in X $(SHAREDMODS); do \
+		if test $$mod != X; then \
+			$(LN) -sf ../../$$mod $$target/`basename $$mod`; \
+		fi; \
+	done
+
+# dependency on BUILDPYTHON ensures that the target is run last
+.PHONY: checksharedmods
+checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
+
+.PHONY: rundsymutil
+rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@if [ ! -z $(DSYMUTIL) ] ; then \
+		echo $(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		$(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		if test -f $(LDLIBRARY); then \
+			echo $(DSYMUTIL_PATH) $(LDLIBRARY); \
+			$(DSYMUTIL_PATH) $(LDLIBRARY); \
+		fi; \
+		for mod in X $(SHAREDMODS); do \
+			if test $$mod != X; then \
+				echo $(DSYMUTIL_PATH) $$mod; \
+				$(DSYMUTIL_PATH) $$mod; \
+			fi; \
+		done \
+	fi
+
+Modules/Setup.local:
+	@# Create empty Setup.local when file was deleted by user
+	echo "# Edit this file for local setup changes" > $@
+
+Modules/Setup.bootstrap: $(srcdir)/Modules/Setup.bootstrap.in config.status
+	./config.status $@
+
+Modules/Setup.stdlib: $(srcdir)/Modules/Setup.stdlib.in config.status
+	./config.status $@
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local \
+				Modules/Setup.bootstrap \
+				Modules/Setup.stdlib
+	$(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				Modules/Setup.stdlib \
+				Modules/Setup.bootstrap \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+.PHONY: regen-test-frozenmain
+regen-test-frozenmain: $(BUILDPYTHON)
+	# Regenerate Programs/test_frozenmain.h
+	# from Programs/test_frozenmain.py
+	# using Programs/freeze_test_frozenmain.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h
+
+.PHONY: regen-test-levenshtein
+regen-test-levenshtein:
+	# Regenerate Lib/test/levenshtein_examples.json
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py $(srcdir)/Lib/test/levenshtein_examples.json
+
+.PHONY: regen-re
+regen-re: $(BUILDPYTHON)
+	# Regenerate Lib/re/_casefix.py
+	# using Tools/build/generate_re_casefix.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+
+Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# "Bootstrap Python" used to run Programs/_freeze_module.py
+
+BOOTSTRAP_HEADERS = \
+	Python/frozen_modules/importlib._bootstrap.h \
+	Python/frozen_modules/importlib._bootstrap_external.h \
+	Python/frozen_modules/zipimport.h
+
+Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS)
+
+_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local
+	$(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \
+		Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+
+############################################################################
+# frozen modules (including importlib)
+#
+# Freezing is a multi step process. It works differently for standard builds
+# and cross builds. Standard builds use Programs/_freeze_module and
+# _bootstrap_python for freezing, so users can build Python
+# without an existing Python installation. Cross builds cannot execute
+# compiled binaries and therefore rely on an external build Python
+# interpreter. The build interpreter must have same version and same bytecode
+# as the host (target) binary.
+#
+# Standard build process:
+# 1) compile minimal core objects for Py_Compile*() and PyMarshal_Write*().
+# 2) build Programs/_freeze_module binary.
+# 3) create frozen module headers for importlib and getpath.
+# 4) build _bootstrap_python binary.
+# 5) create remaining frozen module headers with
+#    ``./_bootstrap_python Programs/_freeze_module.py``. The pure Python
+#    script is used to test the cross compile code path.
+#
+# Cross compile process:
+# 1) create all frozen module headers with external build Python and
+#    Programs/_freeze_module.py script.
+#
+
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
+FROZEN_FILES_IN = \
+		Lib/importlib/_bootstrap.py \
+		Lib/importlib/_bootstrap_external.py \
+		Lib/zipimport.py \
+		Lib/abc.py \
+		Lib/codecs.py \
+		Lib/io.py \
+		Lib/_collections_abc.py \
+		Lib/_sitebuiltins.py \
+		Lib/genericpath.py \
+		Lib/ntpath.py \
+		Lib/posixpath.py \
+		Lib/os.py \
+		Lib/site.py \
+		Lib/stat.py \
+		Lib/importlib/util.py \
+		Lib/importlib/machinery.py \
+		Lib/runpy.py \
+		Lib/__hello__.py \
+		Lib/__phello__/__init__.py \
+		Lib/__phello__/ham/__init__.py \
+		Lib/__phello__/ham/eggs.py \
+		Lib/__phello__/spam.py \
+		Tools/freeze/flag.py
+# End FROZEN_FILES_IN
+FROZEN_FILES_OUT = \
+		Python/frozen_modules/importlib._bootstrap.h \
+		Python/frozen_modules/importlib._bootstrap_external.h \
+		Python/frozen_modules/zipimport.h \
+		Python/frozen_modules/abc.h \
+		Python/frozen_modules/codecs.h \
+		Python/frozen_modules/io.h \
+		Python/frozen_modules/_collections_abc.h \
+		Python/frozen_modules/_sitebuiltins.h \
+		Python/frozen_modules/genericpath.h \
+		Python/frozen_modules/ntpath.h \
+		Python/frozen_modules/posixpath.h \
+		Python/frozen_modules/os.h \
+		Python/frozen_modules/site.h \
+		Python/frozen_modules/stat.h \
+		Python/frozen_modules/importlib.util.h \
+		Python/frozen_modules/importlib.machinery.h \
+		Python/frozen_modules/runpy.h \
+		Python/frozen_modules/__hello__.h \
+		Python/frozen_modules/__phello__.h \
+		Python/frozen_modules/__phello__.ham.h \
+		Python/frozen_modules/__phello__.ham.eggs.h \
+		Python/frozen_modules/__phello__.spam.h \
+		Python/frozen_modules/frozen_only.h
+# End FROZEN_FILES_OUT
+
+Programs/_freeze_module.o: Programs/_freeze_module.c Makefile
+
+Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile
+
+Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+# We manually freeze getpath.py rather than through freeze_modules
+Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) getpath $(srcdir)/Modules/getpath.py Python/frozen_modules/getpath.h
+
+# BEGIN: freezing modules
+
+Python/frozen_modules/importlib._bootstrap.h: Lib/importlib/_bootstrap.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap $(srcdir)/Lib/importlib/_bootstrap.py Python/frozen_modules/importlib._bootstrap.h
+
+Python/frozen_modules/importlib._bootstrap_external.h: Lib/importlib/_bootstrap_external.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap_external $(srcdir)/Lib/importlib/_bootstrap_external.py Python/frozen_modules/importlib._bootstrap_external.h
+
+Python/frozen_modules/zipimport.h: Lib/zipimport.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) zipimport $(srcdir)/Lib/zipimport.py Python/frozen_modules/zipimport.h
+
+Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) abc $(srcdir)/Lib/abc.py Python/frozen_modules/abc.h
+
+Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
+
+Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
+
+Python/frozen_modules/_collections_abc.h: Lib/_collections_abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _collections_abc $(srcdir)/Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
+
+Python/frozen_modules/_sitebuiltins.h: Lib/_sitebuiltins.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _sitebuiltins $(srcdir)/Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
+
+Python/frozen_modules/genericpath.h: Lib/genericpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) genericpath $(srcdir)/Lib/genericpath.py Python/frozen_modules/genericpath.h
+
+Python/frozen_modules/ntpath.h: Lib/ntpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) ntpath $(srcdir)/Lib/ntpath.py Python/frozen_modules/ntpath.h
+
+Python/frozen_modules/posixpath.h: Lib/posixpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) posixpath $(srcdir)/Lib/posixpath.py Python/frozen_modules/posixpath.h
+
+Python/frozen_modules/os.h: Lib/os.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) os $(srcdir)/Lib/os.py Python/frozen_modules/os.h
+
+Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) site $(srcdir)/Lib/site.py Python/frozen_modules/site.h
+
+Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
+
+Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
+
+Python/frozen_modules/importlib.machinery.h: Lib/importlib/machinery.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.machinery $(srcdir)/Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
+
+Python/frozen_modules/runpy.h: Lib/runpy.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) runpy $(srcdir)/Lib/runpy.py Python/frozen_modules/runpy.h
+
+Python/frozen_modules/__hello__.h: Lib/__hello__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __hello__ $(srcdir)/Lib/__hello__.py Python/frozen_modules/__hello__.h
+
+Python/frozen_modules/__phello__.h: Lib/__phello__/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__ $(srcdir)/Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
+
+Python/frozen_modules/__phello__.ham.h: Lib/__phello__/ham/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham $(srcdir)/Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
+
+Python/frozen_modules/__phello__.ham.eggs.h: Lib/__phello__/ham/eggs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham.eggs $(srcdir)/Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
+
+Python/frozen_modules/__phello__.spam.h: Lib/__phello__/spam.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.spam $(srcdir)/Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
+
+Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) frozen_only $(srcdir)/Tools/freeze/flag.py Python/frozen_modules/frozen_only.h
+
+# END: freezing modules
+
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
+
+.PHONY: regen-frozen
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py --frozen-modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+# We keep this renamed target around for folks with muscle memory.
+.PHONY: regen-importlib
+regen-importlib: regen-frozen
+
+############################################################################
+# Global objects
+
+# Dependencies which can add and/or remove _Py_ID() identifiers:
+# - "make clinic"
+.PHONY: regen-global-objects
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py clinic
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
+
+############################################################################
+# ABI
+
+.PHONY: regen-abidump
+regen-abidump: all
+	@$(MKDIR_P) $(srcdir)/Doc/data/
+	abidw "libpython$(LDVERSION).so" --no-architecture --out-file $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+	@$(UPDATE_FILE) --create $(srcdir)/Doc/data/python$(LDVERSION).abi $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+
+.PHONY: check-abidump
+check-abidump: all
+	abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
+
+.PHONY: regen-limited-abi
+regen-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+
+############################################################################
+# Regenerate Unicode Data
+
+.PHONY: regen-unicodedata
+regen-unicodedata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/unicode/makeunicodedata.py
+
+
+############################################################################
+# Regenerate all generated files
+
+# "clinic" is regenerated implicitly via "regen-global-objects".
+.PHONY: regen-all
+regen-all: regen-cases regen-typeslots \
+	regen-token regen-ast regen-keyword regen-sre regen-frozen \
+	regen-pegen-metaparser regen-pegen regen-test-frozenmain \
+	regen-test-levenshtein regen-global-objects
+	@echo
+	@echo "Note: make regen-stdlib-module-names, make regen-limited-abi, "
+	@echo "make regen-configure, make regen-sbom, and make regen-unicodedata should be run manually"
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-DPLATLIBDIR='"$(PLATLIBDIR)"' \
+		-DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h
+
+Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_common.h
+
+Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		$(if $(MULTIARCH),-DMULTIARCH='"$(MULTIARCH)"') \
+		-DSOABI='"$(SOABI)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-pegen-metaparser
+regen-pegen-metaparser:
+	@$(MKDIR_P) $(srcdir)/Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q python \
+	$(srcdir)/Tools/peg_generator/pegen/metagrammar.gram \
+	-o $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+	$(UPDATE_FILE) $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py \
+	$(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+
+.PHONY: regen-pegen
+regen-pegen:
+	@$(MKDIR_P) $(srcdir)/Parser
+	@$(MKDIR_P) $(srcdir)/Parser/tokenizer
+	@$(MKDIR_P) $(srcdir)/Parser/lexer
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q c \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		-o $(srcdir)/Parser/parser.c.new
+	$(UPDATE_FILE) $(srcdir)/Parser/parser.c $(srcdir)/Parser/parser.c.new
+
+.PHONY: regen-ast
+regen-ast:
+	# Regenerate 3 files using Parser/asdl_c.py:
+	# - Include/internal/pycore_ast.h
+	# - Include/internal/pycore_ast_state.h
+	# - Python/Python-ast.c
+	$(MKDIR_P) $(srcdir)/Include
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		$(srcdir)/Parser/Python.asdl \
+		-H $(srcdir)/Include/internal/pycore_ast.h.new \
+		-I $(srcdir)/Include/internal/pycore_ast_state.h.new \
+		-C $(srcdir)/Python/Python-ast.c.new
+
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast_state.h $(srcdir)/Include/internal/pycore_ast_state.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc \
+		$(srcdir)/Doc/library/token.rst
+	# Regenerate Include/internal/pycore_token.h from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/internal/pycore_token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/python.gram and Grammar/Tokens
+	# using Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen.keywordgen \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: all Programs/_testembed
+	# Regenerate Python/stdlib_module_names.h
+	# using Tools/build/generate_stdlib_module_names.py
+	$(RUNSHARED) ./$(BUILDPYTHON) \
+		$(srcdir)/Tools/build/generate_stdlib_module_names.py \
+		> $(srcdir)/Python/stdlib_module_names.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
+
+.PHONY: regen-sre
+regen-sre:
+	# Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
+	# from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
+		$(srcdir)/Lib/re/_constants.py \
+		$(srcdir)/Modules/_sre/sre_constants.h \
+		$(srcdir)/Modules/_sre/sre_targets.h
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+		$(srcdir)/Objects/mimalloc/alloc-aligned.c \
+		$(srcdir)/Objects/mimalloc/alloc-posix.c \
+		$(srcdir)/Objects/mimalloc/arena.c \
+		$(srcdir)/Objects/mimalloc/bitmap.c \
+		$(srcdir)/Objects/mimalloc/heap.c \
+		$(srcdir)/Objects/mimalloc/init.c \
+		$(srcdir)/Objects/mimalloc/options.c \
+		$(srcdir)/Objects/mimalloc/os.c \
+		$(srcdir)/Objects/mimalloc/page.c \
+		$(srcdir)/Objects/mimalloc/random.c \
+		$(srcdir)/Objects/mimalloc/segment.c \
+		$(srcdir)/Objects/mimalloc/segment-map.c \
+		$(srcdir)/Objects/mimalloc/stats.c \
+		$(srcdir)/Objects/mimalloc/prim/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/osx/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/unix/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/wasi/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
+
+
+# Regenerate various files from Python/bytecodes.c
+# Pass CASESFLAG=-l to insert #line directives in the output
+
+.PHONY: regen-cases
+regen-cases: \
+        regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
+		regen-generated-cases regen-executor-cases regen-optimizer-cases \
+		regen-opcode-metadata regen-uop-metadata
+
+.PHONY: regen-opcode-ids
+regen-opcode-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_id_generator.py \
+	    -o $(srcdir)/Include/opcode_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/opcode_ids.h $(srcdir)/Include/opcode_ids.h.new
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/target_generator.py \
+	    -o $(srcdir)/Python/opcode_targets.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+.PHONY: regen-uop-ids
+regen-uop-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_id_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_uop_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_ids.h $(srcdir)/Include/internal/pycore_uop_ids.h.new
+
+.PHONY: regen-opcode-metadata-py
+regen-opcode-metadata-py:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/py_metadata_generator.py \
+	    -o $(srcdir)/Lib/_opcode_metadata.py.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Lib/_opcode_metadata.py $(srcdir)/Lib/_opcode_metadata.py.new
+
+.PHONY: regen-generated-cases
+regen-generated-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier1_generator.py \
+	    -o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new
+
+.PHONY: regen-executor-cases
+regen-executor-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
+	    -o $(srcdir)/Python/executor_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/executor_cases.c.h $(srcdir)/Python/executor_cases.c.h.new
+
+.PHONY: regen-optimizer-cases
+regen-optimizer-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/optimizer_generator.py \
+	    -o $(srcdir)/Python/optimizer_cases.c.h.new \
+	    $(srcdir)/Python/optimizer_bytecodes.c \
+	    $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
+
+.PHONY: regen-opcode-metadata
+regen-opcode-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_opcode_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_opcode_metadata.h $(srcdir)/Include/internal/pycore_opcode_metadata.h.new
+
+.PHONY: regen-uop-metadata
+regen-uop-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_metadata_generator.py -o \
+	    $(srcdir)/Include/internal/pycore_uop_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_metadata.h $(srcdir)/Include/internal/pycore_uop_metadata.h.new
+
+Python/compile.o Python/assemble.o Python/flowgraph.o Python/instruction_sequence.o: \
+                $(srcdir)/Include/internal/pycore_compile.h \
+                $(srcdir)/Include/internal/pycore_flowgraph.h \
+                $(srcdir)/Include/internal/pycore_instruction_sequence.h \
+                $(srcdir)/Include/internal/pycore_opcode_metadata.h \
+                $(srcdir)/Include/internal/pycore_opcode_utils.h
+
+Python/ceval.o: \
+		$(srcdir)/Python/ceval_macros.h \
+		$(srcdir)/Python/condvar.h \
+		$(srcdir)/Python/generated_cases.c.h \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Python/opcode_targets.h
+
+Python/flowgraph.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h
+
+Python/optimizer.o: \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h
+
+Python/optimizer_analysis.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Python/optimizer_cases.c.h
+
+Python/frozen.o: $(FROZEN_FILES_OUT)
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/gc.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) -m test
+TESTTIMEOUT=
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+.PHONY: cleantest
+cleantest: all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+# Similar to buildbottest, but use --fast-ci option, instead of --slow-ci.
+.PHONY: test
+test: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+.PHONY: testuniversal
+testuniversal: all
+	@if [ `arch` != 'i386' ]; then \
+		echo "This can only be used on OSX/i386" ;\
+		exit 1 ;\
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+	$(RUNSHARED) /usr/libexec/oah/translate \
+		./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Run the test suite on the iOS simulator. Must be run on a macOS machine with
+# a full Xcode install that has an iPhone SE (3rd edition) simulator available.
+# This must be run *after* a `make install` has completed the build. The
+# `--with-framework-name` argument *cannot* be used when configuring the build.
+XCFOLDER:=iOSTestbed.$(MULTIARCH).$(shell date +%s).$$PPID
+.PHONY: testios
+testios:
+	@if test "$(MACHDEP)" != "ios"; then \
+		echo "Cannot run the iOS testbed for a non-iOS build."; \
+		exit 1;\
+	fi
+	@if test "$(findstring -iphonesimulator,$(MULTIARCH))" != "-iphonesimulator"; then \
+		echo "Cannot run the iOS testbed for non-simulator builds."; \
+		exit 1;\
+	fi
+	@if test $(PYTHONFRAMEWORK) != "Python"; then \
+		echo "Cannot run the iOS testbed with a non-default framework name."; \
+		exit 1;\
+	fi
+	@if ! test -d $(PYTHONFRAMEWORKPREFIX); then \
+		echo "Cannot find a finalized iOS Python.framework. Have you run 'make install' to finalize the framework build?"; \
+		exit 1;\
+	fi
+
+	# Clone the testbed project into the XCFOLDER
+	$(PYTHON_FOR_BUILD) $(srcdir)/iOS/testbed clone --framework $(PYTHONFRAMEWORKPREFIX) "$(XCFOLDER)"
+
+	# Run the testbed project
+	$(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W
+
+# Like test, but using --slow-ci which enables all test resources and use
+# longer timeout. Run an optional pybuildbot.identify script to include
+# information about the build environment.
+.PHONY: buildbottest
+buildbottest: all
+	-@if which pybuildbot.identify >/dev/null 2>&1; then \
+		pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+.PHONY: pythoninfo
+pythoninfo: all
+		$(RUNSHARED) $(HOSTRUNNER) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	-x test_subprocess test_io \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+
+.PHONY: quicktest
+quicktest: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile
+multisslcompile: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py --steps=modules
+
+.PHONY: multissltest
+multissltest: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
+.PHONY: install
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: altinstall
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: commoninstall
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall altmaninstall 
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+.PHONY: sharedinstall
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			if test -d "$$i.dSYM"; then \
+				echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+				$(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			fi; \
+		  fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+.PHONY: altbininstall
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	@if test "$(PY_ENABLE_SHARED)" = 1 -o "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+			if test -n "$(DLLLIBRARY)" ; then \
+				$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+			else \
+				$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+				if test $(LDLIBRARY) != $(INSTSONAME); then \
+					(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+				fi \
+			fi; \
+			if test -n "$(PY3LIBRARY)"; then \
+				$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+			fi; \
+		else	true; \
+		fi; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE); \
+		lipo $(LIPO_INTEL64_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	# Install macOS debug information (if available)
+	if test -d "$(BUILDPYTHON).dSYM"; then \
+		echo $(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+		$(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			$(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+		fi \
+	else \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+      $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+		fi \
+	fi
+
+.PHONY: bininstall
+# We depend on commoninstall here to make sure the installation is already usable
+# before we possibly overwrite the global 'python3' symlink to avoid causing
+# problems for anything else trying to run 'python3' while we install, particularly
+# if we're installing in parallel with -j.
+bininstall: commoninstall altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION).pc python-$(VERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION)-embed.pc python-$(VERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-intel64$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-intel64$(EXE) python3-intel64$(EXE)) \
+	fi
+
+# Install the versioned manual page
+.PHONY: altmaninstall
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+.PHONY: maninstall
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	asyncio \
+		collections \
+		concurrent concurrent/futures \
+		csv \
+		ctypes ctypes/macholib \
+		curses \
+		dbm \
+		email email/mime \
+		encodings \
+		ensurepip ensurepip/_bundled \
+		html \
+		http \
+		idlelib idlelib/Icons \
+		importlib importlib/resources importlib/metadata \
+		json \
+		logging \
+		multiprocessing multiprocessing/dummy \
+		pathlib \
+		pydoc_data \
+		re \
+		site-packages \
+		sqlite3 \
+		sysconfig \
+		tkinter \
+		tomllib \
+		turtledemo \
+		unittest \
+		urllib \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		wsgiref \
+		$(XMLLIBSUBDIRS) \
+		xmlrpc \
+		zipfile zipfile/_path \
+		zoneinfo \
+		_pyrepl \
+		__phello__
+TESTSUBDIRS=	idlelib/idle_test \
+		test \
+		test/test_ast \
+		test/archivetestdata \
+		test/audiodata \
+		test/certdata \
+		test/certdata/capath \
+		test/cjkencodings \
+		test/configdata \
+		test/crashers \
+		test/data \
+		test/decimaltestdata \
+		test/dtracedata \
+		test/encoded_modules \
+		test/leakers \
+		test/libregrtest \
+		test/mathdata \
+		test/regrtestdata \
+		test/regrtestdata/import_from_tests \
+		test/regrtestdata/import_from_tests/test_regrtest_b \
+		test/subprocessdata \
+		test/support \
+		test/support/_hypothesis_stubs \
+		test/support/interpreters \
+		test/test_asyncio \
+		test/test_capi \
+		test/test_cext \
+		test/test_concurrent_futures \
+		test/test_cppext \
+		test/test_ctypes \
+		test/test_dataclasses \
+		test/test_doctest \
+		test/test_email \
+		test/test_email/data \
+		test/test_free_threading \
+		test/test_future_stmt \
+		test/test_gdb \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/circular_imports/subpkg2 \
+		test/test_import/data/circular_imports/subpkg2/parent \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		test/test_import/data/package3 \
+		test/test_import/data/package4 \
+		test/test_import/data/unwritable \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/metadata \
+		test/test_importlib/metadata/data \
+		test/test_importlib/metadata/data/sources \
+		test/test_importlib/metadata/data/sources/example \
+		test/test_importlib/metadata/data/sources/example/example \
+		test/test_importlib/metadata/data/sources/example2 \
+		test/test_importlib/metadata/data/sources/example2/example2 \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/partial \
+		test/test_importlib/resources \
+		test/test_importlib/source \
+		test/test_inspect \
+		test/test_interpreters \
+		test/test_json \
+		test/test_module \
+		test/test_multiprocessing_fork \
+		test/test_multiprocessing_forkserver \
+		test/test_multiprocessing_spawn \
+		test/test_pathlib \
+		test/test_peg_generator \
+		test/test_pydoc \
+		test/test_pyrepl \
+		test/test_sqlite3 \
+		test/test_tkinter \
+		test/test_tomllib \
+		test/test_tomllib/data \
+		test/test_tomllib/data/invalid \
+		test/test_tomllib/data/invalid/array \
+		test/test_tomllib/data/invalid/array-of-tables \
+		test/test_tomllib/data/invalid/boolean \
+		test/test_tomllib/data/invalid/dates-and-times \
+		test/test_tomllib/data/invalid/dotted-keys \
+		test/test_tomllib/data/invalid/inline-table \
+		test/test_tomllib/data/invalid/keys-and-vals \
+		test/test_tomllib/data/invalid/literal-str \
+		test/test_tomllib/data/invalid/multiline-basic-str \
+		test/test_tomllib/data/invalid/multiline-literal-str \
+		test/test_tomllib/data/invalid/table \
+		test/test_tomllib/data/valid \
+		test/test_tomllib/data/valid/array \
+		test/test_tomllib/data/valid/dates-and-times \
+		test/test_tomllib/data/valid/multiline-basic-str \
+		test/test_tools \
+		test/test_tools/i18n_data \
+		test/test_tools/msgfmt_data \
+		test/test_ttk \
+		test/test_unittest \
+		test/test_unittest/testmock \
+		test/test_warnings \
+		test/test_warnings/data \
+		test/test_zipfile \
+		test/test_zipfile/_path \
+		test/test_zoneinfo \
+		test/test_zoneinfo/data \
+		test/tkinterdata \
+		test/tokenizedata \
+		test/tracedmodules \
+		test/translationdata \
+		test/translationdata/argparse \
+		test/translationdata/getopt \
+		test/translationdata/optparse \
+		test/typinganndata \
+		test/wheeldata \
+		test/xmltestdata \
+		test/xmltestdata/c14n-20 \
+		test/zipimport_data
+
+COMPILEALL_OPTS=-j0
+
+TEST_MODULES=yes
+
+.PHONY: libinstall
+libinstall:	all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	@ # If app store compliance has been configured, apply the patch to the
+	@ # installed library code. The patch has been previously validated against
+	@ # the original source tree, so we can ignore any errors that are raised
+	@ # due to files that are missing because of --disable-test-modules etc.
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		echo "Applying app store compliance patch"; \
+		patch --force --reject-file "$(abs_builddir)/app-store-compliance.rej" --strip 2 --directory "$(DESTDIR)$(LIBDEST)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)" || true ; \
+	fi
+	@ # Build PYC files for the 3 optimization levels (0, 1, 2)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+# macOS' make seems to ignore a dependency on a
+# "$(BUILD_SCRIPTS_DIR): $(MKDIR_P) $@" rule.
+BUILD_SCRIPTS_DIR=build/scripts-$(VERSION)
+SCRIPT_IDLE=$(BUILD_SCRIPTS_DIR)/idle$(VERSION)
+SCRIPT_PYDOC=$(BUILD_SCRIPTS_DIR)/pydoc$(VERSION)
+
+$(SCRIPT_IDLE): $(srcdir)/Tools/scripts/idle3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/idle3 > $@
+	@chmod +x $@
+
+$(SCRIPT_PYDOC): $(srcdir)/Tools/scripts/pydoc3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/pydoc3 > $@
+	@chmod +x $@
+
+.PHONY: scripts
+scripts: $(SCRIPT_IDLE) $(SCRIPT_PYDOC) python-config
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+
+.PHONY: inclinstall
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		if test ! -d $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; then \
+			echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		fi; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		echo $(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		$(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		for i in $(srcdir)/Include/internal/mimalloc/mimalloc/*.h; \
+		do \
+			echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal/mimalloc/mimalloc; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		done; \
+	fi
+	echo $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.13/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+.PHONY: libainstall
+libainstall: all scripts
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -d $(LIBRARY); then :; else \
+			if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+				if test "$(SHLIB_SUFFIX)" = .dll; then \
+					$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+				else \
+					$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+				fi; \
+			else \
+				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+			fi; \
+		fi; \
+		$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.bootstrap $(DESTDIR)$(LIBPL)/Setup.bootstrap
+	$(INSTALL_DATA) Modules/Setup.stdlib $(DESTDIR)$(LIBPL)/Setup.stdlib
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	$(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION)
+	$(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION)
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/README.AIX for details.";	\
+	else true; \
+	fi
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+.PHONY: frameworkinstall
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+.PHONY: frameworkinstallframework
+frameworkinstallframework:  install frameworkinstallmaclib
+
+# macOS uses a versioned frameworks structure that includes a full install
+.PHONY: frameworkinstallversionedstructure
+frameworkinstallversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# iOS/tvOS/watchOS uses a non-versioned framework with Info.plist in the
+# framework root, no .lproj data, and only stub compilation assistance binaries
+.PHONY: frameworkinstallunversionedstructure
+frameworkinstallunversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; then \
+		echo "Clearing stale header symlink directory"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; \
+	fi
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)
+	sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR)
+	for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \
+		$(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \
+	done
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+.PHONY: frameworkinstallmaclib
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+.PHONY: frameworkinstallapps
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+.PHONY: frameworkpythonw
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+.PHONY: frameworkinstallunixtools
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+.PHONY: frameworkaltinstallunixtools
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+.PHONY: frameworkinstallextras
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# On iOS, bin/lib can't live inside the framework; include needs to be called
+# "Headers", but *must* be in the framework, and *not* include the `python3.X`
+# subdirectory. The install has put these folders in the same folder as
+# Python.framework; Move the headers to their final framework-compatible home.
+.PHONY: frameworkinstallmobileheaders
+frameworkinstallmobileheaders: frameworkinstallunversionedstructure inclinstall
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; then \
+		echo "Removing old framework headers"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; \
+	fi
+	mv "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)" "$(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers"
+	$(LN) -fs "../$(PYTHONFRAMEWORKDIR)/Headers" "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+
+JIT_DEPS = \
+		$(srcdir)/Tools/jit/*.c \
+		$(srcdir)/Tools/jit/*.py \
+		$(srcdir)/Python/executor_cases.c.h \
+		pyconfig.h
+
+jit_stencils.h: $(JIT_DEPS)
+	
+
+Python/jit.o: $(srcdir)/Python/jit.c 
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+.PHONY: regen-jit
+regen-jit:
+	
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+.PHONY: reindent
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+.PHONY: recheck
+recheck:
+	./config.status --recheck
+	./config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	(cd $(srcdir); autoreconf -ivf -Werror)
+
+.PHONY: regen-configure
+regen-configure:
+	$(srcdir)/Tools/build/regen-configure.sh
+
+.PHONY: regen-sbom
+regen-sbom:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+.PHONY: pycremoval
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+.PHONY: rmtestturds
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+.PHONY: docclean
+docclean:
+	$(MAKE) -C $(srcdir)/Doc clean
+
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+.PHONY: clean-retain-profile
+clean-retain-profile: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find . -name '*.lto' -exec rm -f {} ';'
+	find . -name '*.wasm' -exec rm -f {} ';'
+	find . -name '*.lst' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f _bootstrap_python
+	-rm -f python.html python*.js python.data python*.symbols python*.map
+	-rm -f $(WASM_STDLIB)
+	-rm -f Programs/_testembed Programs/_freeze_module
+	-rm -rf Python/deepfreeze
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/bin
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/lib
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/include
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/Python.framework
+
+.PHONY: profile-removal
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+	rm -f profile-bolt-stamp
+
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
+	@if test build_all = profile-opt -o build_all = bolt-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+	-rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
+.PHONY: clobber
+clobber: clean
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -rf iOS/Frameworks
+	-rm -rf iOSTestbed.*
+	-rm -f python-config.py python-config
+	-rm -rf cross-build
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+.PHONY: distclean
+distclean: clobber docclean
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+	    Modules/Setup.bootstrap Modules/Setup.stdlib \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+.PHONY: smelly
+smelly: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
+
+# Check if any unsupported C global variables have been added.
+.PHONY: check-c-globals
+check-c-globals:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/c-analyzer/check-c-globals.py \
+		--format summary \
+		--traceback
+
+# Check for undocumented C APIs.
+.PHONY: check-c-api-docs
+check-c-api-docs:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/check-c-api-docs/main.py
+
+# Find files with funny names
+.PHONY: funny
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+.PHONY: patchcheck
+patchcheck: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
+
+.PHONY: check-limited-abi
+check-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+
+.PHONY: update-config
+update-config:
+	curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
+	curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
+	chmod +x config.guess config.sub
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_pthread_stubs.h $(srcdir)/Python/condvar.h
+
+##########################################################################
+# Module dependencies and platform-specific files
+
+# force rebuild when header file or module build flavor (static/shared) is changed
+MODULE_DEPS_STATIC=Modules/config.c
+MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS)
+
+MODULE__CURSES_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__CURSES_PANEL_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__DATETIME_DEPS=$(srcdir)/Include/datetime.h
+MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_PYEXPAT_DEPS=$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE_UNICODEDATA_DEPS=$(srcdir)/Modules/unicodedata_db.h $(srcdir)/Modules/unicodename_db.h
+MODULE__BLAKE2_DEPS=$(srcdir)/Modules/_blake2/impl/blake2-config.h $(srcdir)/Modules/_blake2/impl/blake2-impl.h $(srcdir)/Modules/_blake2/impl/blake2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2b-ref.c $(srcdir)/Modules/_blake2/impl/blake2b-round.h $(srcdir)/Modules/_blake2/impl/blake2b.c $(srcdir)/Modules/_blake2/impl/blake2s-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2s-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2s-load-xop.h $(srcdir)/Modules/_blake2/impl/blake2s-ref.c $(srcdir)/Modules/_blake2/impl/blake2s-round.h $(srcdir)/Modules/_blake2/impl/blake2s.c $(srcdir)/Modules/_blake2/blake2module.h $(srcdir)/Modules/hashlib.h
+MODULE__CTYPES_DEPS=$(srcdir)/Modules/_ctypes/ctypes.h
+MODULE__CTYPES_MALLOC_CLOSURE=
+MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h $(LIBMPDEC_HEADERS) $(LIBMPDEC_A)
+MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c $(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h
+MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h
+MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c
+MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c
+MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_A)
+MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c
+MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c
+MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h
+MODULE__TESTCAPI_DEPS=$(srcdir)/Modules/_testcapi/parts.h $(srcdir)/Modules/_testcapi/util.h
+MODULE__TESTLIMITEDCAPI_DEPS=$(srcdir)/Modules/_testlimitedcapi/testcapi_long.h $(srcdir)/Modules/_testlimitedcapi/parts.h $(srcdir)/Modules/_testlimitedcapi/util.h
+MODULE__TESTINTERNALCAPI_DEPS=$(srcdir)/Modules/_testinternalcapi/parts.h
+MODULE__SQLITE3_DEPS=$(srcdir)/Modules/_sqlite/connection.h $(srcdir)/Modules/_sqlite/cursor.h $(srcdir)/Modules/_sqlite/microprotocols.h $(srcdir)/Modules/_sqlite/module.h $(srcdir)/Modules/_sqlite/prepare_protocol.h $(srcdir)/Modules/_sqlite/row.h $(srcdir)/Modules/_sqlite/util.h
+
+CODECS_COMMON_HEADERS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h $(srcdir)/Modules/cjkcodecs/cjkcodecs.h
+MODULE__CODECS_CN_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_cn.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_HK_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_hk.h  $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_ISO2022_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_JP_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(srcdir)/Modules/cjkcodecs/mappings_jp.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_KR_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_kr.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_TW_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_tw.h $(CODECS_COMMON_HEADERS)
+MODULE__MULTIBYTECODEC_DEPS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
--- a/Misc/python-config.sh	1970-01-01 04:00:00.000000000 +0400
+++ b/Misc/python-config.sh	2026-05-12 21:33:31.657683585 +0400
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Keep this script in sync with python-config.in
+
+exit_with_usage ()
+{
+    local usage
+    usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
+    if [ "$1" -eq 0 ]; then
+        echo "$usage"
+    else
+        echo "$usage" >&2
+    fi
+    exit $1
+}
+
+if [ "$1" = "" ] ; then
+    exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)

[truncated 1586375 bytes]

failed patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. The diagnosis was captured, but the patch proposal did not complete cleanly.

state: failedcreated: 2026-05-12 16:26 UTCvalidation: failed

Why it stopped

timeout

Failure details

  • Failure kind: timeout
  • Exit status: 124
  • Error: Codex stage timed out after 900 second(s).

stderr excerpt

Codex stage timed out after 900 second(s).

Collected context

  • Subsystem: runaway-process
  • Diagnosis family: busy-poll
  • Hot path: _raw_spin_lock_irqsave
  • Command: /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
  • Thread backtrace summary: thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
  • Source package: python3.13
  • Workspace source: debian-source
  • Workspace acquisition: Fetched Debian source package via apt-get source.
  • Implicated packages: linux-image-6.17.10+deb14-amd64
  • Contention signals: gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory.

The trace repeatedly returns to a poll-family syscall without meaningful blocking, which suggests a busy event-loop wakeup.

Representative threads

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? () -> 0x0000000000a56c88 in _PyRuntime ()

Common frame clusters

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? ()

Raw thread backtrace

Thread 1 (Thread 0x7f1c6e75d200 (LWP 2799720) "supervisord"):
#0  0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
#1  0x0000000000b7ddf3 in ?? ()
#2  0x00000000313fd7e7 in ?? ()
#3  0x0000000000a56c88 in _PyRuntime ()
#4  0x00007f1c6e7efead in ?? () from target:<path>
#5  0x0000000000000007 in ?? ()
#6  0x000000000054aeb0 in PyMem_Realloc ()
#7  0x000000000067ca5b in ?? ()
#8  0x000000000056e19a in _PyEval_EvalFrameDefault ()
#9  0x0000000000569544 in PyEval_EvalCode ()
#10 0x00000000006c1c44 in ?? ()
#11 0x00000000006bebdf in ?? ()
#12 0x00000000006d0454 in ?? ()
#13 0x00000000006cfee9 in ?? ()
#14 0x00000000006cfd1e in ?? ()
#15 0x00000000006ceeac in Py_RunMain ()
#16 0x000000000069caa9 in Py_BytesMain ()
#17 0x00007f1c6e787f75 in ?? () from target:<path>
#18 0x00007ffd14a827e8 in ?? ()
#19 0x000000000069ca70 in ?? ()
#20 0x000000056eaef000 in ?? ()
#21 0x00007ffd14a827e8 in ?? ()
#22 0x0000000000000000 in ?? ()
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3.13` running `supervisord`, but the embedded evidence does not prove a CPython runtime bug. The strace excerpt shows `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000)` returning after about one second, while `/proc` state is sleeping in `poll_schedule_timeout`. That is not a tight busy loop in the interpreter.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch in this pass. The maintainer-facing subject should be a diagnosis: “Do not patch CPython for supervisord one-second poll cadence without a CPython reproducer.” No prior Fixer patch for this finding was found in the Debian patch stack or workspace search.

## Patch Plan
Do not edit CPython based on the current evidence. The entrypoint evidence points to `supervisord`, so the next investigation should start in supervisor’s event loop/configuration, not in CPython.

If extra evidence later proves a CPython runtime issue, inspect the exact touched subsystem first. Relevant CPython conventions found: `README.rst` points contributors to the CPython Developer Guide; `.editorconfig` uses 4-space C/Python indentation; `Modules/selectmodule.c` uses `_PyTime_*`, `_PyDeadline_*`, `Py_BEGIN_ALLOW_THREADS`, and `PyErr_SetFromErrno`; `Modules/posixmodule.c` wraps `waitpid/wait4` with `Py_BEGIN_ALLOW_THREADS` and `posix_error()`; threading code uses `PyThread_*` and `PyMem_Raw*`. No relevant local helper applies to the current supervisord-level evidence.

Avoid an awkward runtime patch or speculative control flow change. In particular, do not add sleeps, throttling, or `goto` cleanup paths to CPython unless a bounded runtime reproducer proves CPython is spinning.

## Risks
The main risk is misclassifying an intermittent runtime bug as application behavior because the raw artifact files referenced by the bundle are not present. The opposite risk is worse for an upstream patch: changing CPython `poll`, `waitpid`, memory allocation, or pthread code from a profiler-only supervisord trace could introduce regressions without addressing the observed process.

## Validation
If a source patch is later justified, first run the project-level entrypoint from the workspace root: `./configure && make`. If that fails due to missing dependencies or generated files, record the exact command and failure before any focused check.

For a runtime patch, follow with the narrowest relevant tests, for example `./python -m test test_poll test_select test_os test_wait4 test_subprocess`. As a cheap independent reproduction attempt for the current signal, run a minimal Python script or supervisord instance under `strace -tt -T` to confirm whether `wait4(..., WNOHANG)` plus one-second `poll(..., 1000)` sleeps rather than consumes CPU. Do not claim reproduced unless that command actually shows the reported failure.

## Patch Pass



## Workflow Note

Codex stage timed out after 900 second(s).

failed patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. The diagnosis was captured, but the patch proposal did not complete cleanly.

state: failedcreated: 2026-05-12 11:07 UTCvalidation: failed

Why it stopped

timeout

Failure details

  • Failure kind: timeout
  • Exit status: 124
  • Error: Codex stage timed out after 900 second(s).

stderr excerpt

Codex stage timed out after 900 second(s).

Collected context

  • Subsystem: runaway-process
  • Diagnosis family: busy-poll
  • Hot path: _raw_spin_lock_irqsave
  • Command: /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
  • Thread backtrace summary: thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
  • Source package: python3.13
  • Workspace source: debian-source
  • Workspace acquisition: Fetched Debian source package via apt-get source.
  • Implicated packages: linux-image-6.17.10+deb14-amd64
  • Contention signals: gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory.

The trace repeatedly returns to a poll-family syscall without meaningful blocking, which suggests a busy event-loop wakeup.

Representative threads

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? () -> 0x0000000000a56c88 in _PyRuntime ()

Common frame clusters

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? ()

Raw thread backtrace

Thread 1 (Thread 0x7f1c6e75d200 (LWP 2799720) "supervisord"):
#0  0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
#1  0x0000000000b7ddf3 in ?? ()
#2  0x00000000313fd7e7 in ?? ()
#3  0x0000000000a56c88 in _PyRuntime ()
#4  0x00007f1c6e7efead in ?? () from target:<path>
#5  0x0000000000000007 in ?? ()
#6  0x000000000054aeb0 in PyMem_Realloc ()
#7  0x000000000067ca5b in ?? ()
#8  0x000000000056e19a in _PyEval_EvalFrameDefault ()
#9  0x0000000000569544 in PyEval_EvalCode ()
#10 0x00000000006c1c44 in ?? ()
#11 0x00000000006bebdf in ?? ()
#12 0x00000000006d0454 in ?? ()
#13 0x00000000006cfee9 in ?? ()
#14 0x00000000006cfd1e in ?? ()
#15 0x00000000006ceeac in Py_RunMain ()
#16 0x000000000069caa9 in Py_BytesMain ()
#17 0x00007f1c6e787f75 in ?? () from target:<path>
#18 0x00007ffd14a827e8 in ?? ()
#19 0x000000000069ca70 in ?? ()
#20 0x000000056eaef000 in ?? ()
#21 0x00007ffd14a827e8 in ?? ()
#22 0x0000000000000000 in ?? ()
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem

Fixer attributed a high-CPU “busy-poll” investigation to `python3.13`, but the command line is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The syscall evidence shows a one-second supervisor loop: `wait4(-1, ..., WNOHANG) = -1 ECHILD`, then `poll(..., 1000)` timing out. That pattern does not currently identify a CPython runtime bug.

## Evidence Confidence

observed

Fixer observed the process/profile/syscall signal, but I have not independently reproduced a CPython failure. The raw artifact paths named in `evidence.json` are not present here, so the available evidence is the embedded JSON excerpts.

## Proposed Subject

No CPython source patch yet. Prepare a no-patch diagnosis unless extra evidence shows that CPython itself is driving the loop incorrectly. The likely maintainer-facing subject would be:

`Diagnose supervisord polling report as not actionable for CPython`

No prior Fixer patch for this opportunity was found in the workspace or Debian quilt patches.

## Patch Plan

1. Do not edit files in this pass.
2. Treat `/usr/bin/supervisord` as the primary investigation target because it is the script/application entrypoint in the evidence; inspect CPython runtime code only as a secondary target.
3. Confirm whether the observed `wait4(-1, WNOHANG)` can come from CPython-owned helpers. Nearby CPython helpers checked so far:
   - `Lib/subprocess.py` uses `_waitpid_lock`, `_try_wait()`, and waits on a tracked child pid, not `-1`.
   - `Lib/asyncio/unix_events.py` and `Lib/multiprocessing/forkserver.py` do use `waitpid(-1, WNOHANG)`, but they handle `ChildProcessError`/no-child termination and do not explain a supervisor one-second poll by themselves.
   - `Modules/selectmodule.c` uses CPython timeout/deadline conventions for `poll()`, but the evidence shows a normal 1000 ms blocking timeout, not a tight zero-timeout loop.
4. If later evidence does implicate CPython, follow CPython conventions from `README.rst`/devguide and local helpers rather than generic ad hoc logic. Avoid awkward control flow such as a new `goto` where a bounded early return or existing helper path is cleaner.
5. Current likely outcome: report that the evidence is application-level supervisor polling or a misattribution to the Python interpreter package, not an upstream-ready CPython patch.

## Risks

The profiler label says high CPU, but the syscall excerpt shows sleeping one-second polls, so the evidence may be internally inconsistent or sampled from another process/thread interval. Without the missing raw artifacts or a reproducible workload, a CPython patch would be speculative.

A real bug could still exist in `supervisor`, its configuration, a third-party extension, or kernel accounting, but that belongs outside this `python3.13` source package unless new evidence ties it to CPython.

## Validation

Before reporting any focused check, try the project-level entrypoint from the workspace root:

`./configure && make`

If that fails due to missing dependencies or generated files, record the exact command and failure reason, then run the narrowest relevant CPython checks available, such as `./python -m test test_subprocess test_asyncio test_select -j1` after any successful partial build, or a focused compile/syntax check if no interpreter is built.

Bounded independent signal check: run a small Python script that repeatedly calls `os.waitpid(-1, os.WNOHANG)` with no children and then `select.poll().poll(1000)` on an idle fd under `/usr/bin/time`. This should show the observed syscall shape without reproducing runaway CPU; I would not claim `reproduced` unless that command actually demonstrates the failure.

## Patch Pass



## Workflow Note

Codex stage timed out after 900 second(s).

Diff

--- a/Makefile.pre	1970-01-01 04:00:00.000000000 +0400
+++ b/Makefile.pre	2026-05-12 14:52:48.669412042 +0400
@@ -0,0 +1,3297 @@
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=    _MODBUILT_NAMES_
+MODSHARED_NAMES=   _MODSHARED_NAMES_
+MODDISABLED_NAMES= _MODDISABLED_NAMES_
+MODOBJS=           _MODOBJS_
+MODLIBS=           _MODLIBS_
+
+# === Variables set by configure
+VERSION=	3.13
+srcdir=		.
+
+abs_srcdir=	b
+abs_builddir=	b
+
+
+CC=		gcc
+CXX=		g++
+LINKCC=		$(PURIFY) $(CC)
+AR=		ar
+READELF=	@READELF@
+SOABI=		cpython-313-x86_64-linux-gnu
+ABIFLAGS=	
+ABI_THREAD=	
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=
+GITVERSION=	git --git-dir $(srcdir)/.git rev-parse --short HEAD
+GITTAG=		git --git-dir $(srcdir)/.git describe --all --always --dirty
+GITBRANCH=	git --git-dir $(srcdir)/.git name-rev --name-only HEAD
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+DSYMUTIL=       
+DSYMUTIL_PATH=  
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh -e
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -O3 -Wall
+BASECFLAGS=	 -fno-strict-overflow -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+# LDFLAGS_NOLTO is an extra flag to disable lto. It is used to speed up building
+# of _bootstrap_python and _freeze_module tools, which don't need LTO.
+CONFIGURE_LDFLAGS_NOLTO=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+PLATLIBDIR=	lib
+SCRIPTDIR=	$(prefix)/$(PLATLIBDIR)
+# executable name for shebangs
+EXENAME=	$(BINDIR)/python$(LDVERSION)$(EXE)
+# Variable used by ensurepip
+WHEEL_PKG_DIR=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)$(ABI_THREAD)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)$(ABI_THREAD)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-313-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared $(PY_LDFLAGS)
+DESTSHARED=	$(LIBDEST)/lib-dynload
+
+# List of exported symbols for AIX
+EXPORTSYMS=	
+EXPORTSFROM=	
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Name of the patch file to apply for app store compliance
+APP_STORE_COMPLIANCE_PATCH=
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= 
+RESSRCDIR= 
+# macOS deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# iOS Deployment target selected during configure. Unlike macOS, the iOS
+# deployment target is controlled using `-mios-version-min` arguments added to
+# CFLAGS and LDFLAGS by the configure script. This variable is not used during
+# the build, and is only listed here so it will be included in sysconfigdata.
+IPHONEOS_DEPLOYMENT_TARGET=
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Flags to lipo to produce an intel-64-only universal executable
+LIPO_INTEL64_FLAGS=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      upgrade
+
+# Internal static libraries
+LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
+LIBEXPAT_A= Modules/expat/libexpat.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
+
+# Module state, compiler flags and linker flags
+# Empty CFLAGS and LDFLAGS are omitted.
+# states:
+#   * yes: module is available
+#   * missing: build dependency is missing
+#   * disabled: module is disabled
+#   * n/a: module is not available on the current platform
+# MODULE_EGG_STATE=yes  # yes, missing, disabled, n/a
+# MODULE_EGG_CFLAGS=
+# MODULE_EGG_LDFLAGS=
+MODULE__IO_STATE=yes
+MODULE__IO_CFLAGS=-I$(srcdir)/Modules/_io
+MODULE_TIME_STATE=yes
+MODULE_TIME_LDFLAGS=
+MODULE_ARRAY_STATE=yes
+MODULE__ASYNCIO_STATE=yes
+MODULE__BISECT_STATE=yes
+MODULE__CONTEXTVARS_STATE=yes
+MODULE__CSV_STATE=yes
+MODULE__HEAPQ_STATE=yes
+MODULE__JSON_STATE=yes
+MODULE__LSPROF_STATE=yes
+MODULE__OPCODE_STATE=yes
+MODULE__PICKLE_STATE=yes
+MODULE__POSIXSUBPROCESS_STATE=yes
+MODULE__QUEUE_STATE=yes
+MODULE__RANDOM_STATE=yes
+MODULE_SELECT_STATE=yes
+MODULE__STRUCT_STATE=yes
+MODULE__TYPING_STATE=yes
+MODULE__INTERPRETERS_STATE=yes
+MODULE__INTERPCHANNELS_STATE=yes
+MODULE__INTERPQUEUES_STATE=yes
+MODULE__ZONEINFO_STATE=yes
+MODULE__MULTIPROCESSING_STATE=yes
+MODULE__MULTIPROCESSING_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_STATE=yes
+MODULE__POSIXSHMEM_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_LDFLAGS=
+MODULE__STATISTICS_STATE=yes
+MODULE__STATISTICS_LDFLAGS=-lm
+MODULE_CMATH_STATE=yes
+MODULE_CMATH_LDFLAGS=-lm
+MODULE_MATH_STATE=yes
+MODULE_MATH_LDFLAGS=-lm
+MODULE__DATETIME_STATE=yes
+MODULE__DATETIME_LDFLAGS= -lm
+MODULE_FCNTL_STATE=yes
+MODULE_FCNTL_LDFLAGS=
+MODULE_MMAP_STATE=yes
+MODULE__SOCKET_STATE=yes
+MODULE_GRP_STATE=yes
+MODULE_PWD_STATE=yes
+MODULE_RESOURCE_STATE=yes
+MODULE__SCPROXY_STATE=n/a
+MODULE_SYSLOG_STATE=yes
+MODULE_TERMIOS_STATE=yes
+MODULE_PYEXPAT_STATE=yes
+MODULE_PYEXPAT_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE_PYEXPAT_LDFLAGS=-lm $(LIBEXPAT_A)
+MODULE__ELEMENTTREE_STATE=yes
+MODULE__ELEMENTTREE_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE__CODECS_CN_STATE=yes
+MODULE__CODECS_HK_STATE=yes
+MODULE__CODECS_ISO2022_STATE=yes
+MODULE__CODECS_JP_STATE=yes
+MODULE__CODECS_KR_STATE=yes
+MODULE__CODECS_TW_STATE=yes
+MODULE__MULTIBYTECODEC_STATE=yes
+MODULE_UNICODEDATA_STATE=yes
+MODULE__MD5_STATE=yes
+MODULE__MD5_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA1_STATE=yes
+MODULE__SHA1_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA2_STATE=yes
+MODULE__SHA2_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA3_STATE=yes
+MODULE__BLAKE2_STATE=yes
+MODULE__BLAKE2_CFLAGS=
+MODULE__BLAKE2_LDFLAGS=
+MODULE__CTYPES_STATE=yes
+MODULE__CTYPES_CFLAGS=-fno-strict-overflow 
+MODULE__CTYPES_LDFLAGS=-lffi -ldl
+MODULE__CURSES_STATE=yes
+MODULE__CURSES_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE__CURSES_LDFLAGS=-lncursesw -ltinfo
+
+MODULE__CURSES_PANEL_STATE=yes
+MODULE__CURSES_PANEL_CFLAGS=-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE 
+MODULE__CURSES_PANEL_LDFLAGS=-lpanelw -lncursesw -ltinfo
+
+MODULE__DECIMAL_STATE=yes
+MODULE__DECIMAL_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1
+MODULE__DECIMAL_LDFLAGS=-lm $(LIBMPDEC_A)
+MODULE__DBM_STATE=missing
+MODULE__GDBM_STATE=missing
+MODULE_READLINE_STATE=yes
+MODULE_READLINE_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE_READLINE_LDFLAGS=-lreadline
+MODULE__SQLITE3_STATE=yes
+MODULE__SQLITE3_CFLAGS= -I$(srcdir)/Modules/_sqlite
+MODULE__SQLITE3_LDFLAGS=-lsqlite3
+MODULE__TKINTER_STATE=missing
+MODULE__UUID_STATE=yes
+MODULE__UUID_CFLAGS=-I/usr/include/uuid
+MODULE__UUID_LDFLAGS=-luuid
+MODULE_ZLIB_STATE=yes
+MODULE_ZLIB_CFLAGS=
+MODULE_ZLIB_LDFLAGS=-lz
+MODULE_BINASCII_STATE=yes
+MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 
+MODULE_BINASCII_LDFLAGS=-lz
+MODULE__BZ2_STATE=yes
+MODULE__BZ2_CFLAGS=
+MODULE__BZ2_LDFLAGS=-lbz2
+MODULE__LZMA_STATE=yes
+MODULE__LZMA_CFLAGS=
+MODULE__LZMA_LDFLAGS=-llzma
+MODULE__SSL_STATE=yes
+MODULE__SSL_CFLAGS=
+MODULE__SSL_LDFLAGS=  -lssl -lcrypto
+MODULE__HASHLIB_STATE=yes
+MODULE__HASHLIB_CFLAGS=
+MODULE__HASHLIB_LDFLAGS=   -lcrypto
+MODULE__TESTCAPI_STATE=yes
+MODULE__TESTCAPI_LDFLAGS=
+MODULE__TESTCLINIC_STATE=yes
+MODULE__TESTCLINIC_LIMITED_STATE=yes
+MODULE__TESTLIMITEDCAPI_STATE=yes
+MODULE__TESTINTERNALCAPI_STATE=yes
+MODULE__TESTBUFFER_STATE=yes
+MODULE__TESTIMPORTMULTIPLE_STATE=yes
+MODULE__TESTMULTIPHASE_STATE=yes
+MODULE__TESTSINGLEPHASE_STATE=yes
+MODULE__TESTEXTERNALINSPECTION_STATE=yes
+MODULE_XXSUBTYPE_STATE=yes
+MODULE__XXTESTFUZZ_STATE=yes
+MODULE__CTYPES_TEST_STATE=yes
+MODULE__CTYPES_TEST_LDFLAGS=-lm
+MODULE_XXLIMITED_STATE=yes
+MODULE_XXLIMITED_35_STATE=yes
+
+
+# Default zoneinfo.TZPATH. Added here to expose it in sysconfig.get_config_var
+TZPATH=/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
+
+# If to install mimalloc headers
+INSTALL_MIMALLOC=yes
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	
+
+
+# Subdirectories with code
+SRCDIRS= 	  Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# assets for Emscripten browser builds
+WASM_ASSETS_DIR=.$(prefix)
+WASM_STDLIB=$(WASM_ASSETS_DIR)/lib/python$(VERSION)/os.py
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+LIBRARY_DEPS=	$(LIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+LINK_PYTHON_DEPS=$(LIBRARY_DEPS)
+PY_ENABLE_SHARED=	0
+STATIC_LIBPYTHON=	1
+
+
+LIBS=		-ldl 
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+HOSTRUNNER= 
+
+PYTHON_FOR_REGEN?=python3.13
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+# Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
+# external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
+PYTHON_FOR_BUILD_DEPS=$(BUILDPYTHON)
+
+# Single-platform builds use Programs/_freeze_module.c for bootstrapping and
+# ./_bootstrap_python Programs/_freeze_module.py for remaining modules
+# Cross builds use an external "build Python" for all modules.
+PYTHON_FOR_FREEZE=./_bootstrap_python
+FREEZE_MODULE_BOOTSTRAP=./Programs/_freeze_module
+FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
+FREEZE_MODULE=$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py
+FREEZE_MODULE_DEPS=_bootstrap_python $(srcdir)/Programs/_freeze_module.py
+
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo --timeout=$(TESTTIMEOUT)
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
+
+
+# === Definitions added by makesetup ===
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+	$(srcdir)/Include/internal/pycore_mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
+##########################################################################
+# Parser
+
+PEGEN_OBJS=		\
+		Parser/pegen.o \
+		Parser/pegen_errors.o \
+		Parser/action_helpers.o \
+		Parser/parser.o \
+		Parser/string_parser.o \
+		Parser/peg_api.o
+
+TOKENIZER_OBJS=		\
+		Parser/lexer/buffer.o \
+		Parser/lexer/lexer.o \
+		Parser/lexer/state.o \
+		Parser/tokenizer/file_tokenizer.o \
+		Parser/tokenizer/readline_tokenizer.o \
+		Parser/tokenizer/string_tokenizer.o \
+		Parser/tokenizer/utf8_tokenizer.o \
+		Parser/tokenizer/helpers.o
+
+PEGEN_HEADERS= \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Parser/pegen.h \
+		$(srcdir)/Parser/string_parser.h
+
+TOKENIZER_HEADERS= \
+		Parser/lexer/buffer.h \
+		Parser/lexer/lexer.h \
+		Parser/lexer/state.h \
+		Parser/tokenizer/tokenizer.h \
+		Parser/tokenizer/helpers.h
+
+POBJS=		\
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) $(PEGEN_OBJS) $(TOKENIZER_OBJS) Parser/myreadline.o
+
+PARSER_HEADERS= \
+		$(PEGEN_HEADERS) \
+		$(TOKENIZER_HEADERS)
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/Python-tokenize.o \
+		Python/asdl.o \
+		Python/assemble.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/brc.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/critical_section.o \
+		Python/crossinterp.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/flowgraph.o \
+		Python/frame.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/gc.o \
+		Python/gc_free_threading.o \
+		Python/gc_gil.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/ceval_gil.o \
+		Python/hamt.o \
+		Python/hashtable.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/interpconfig.o \
+		Python/instrumentation.o \
+		Python/instruction_sequence.o \
+		Python/intrinsics.o \
+		Python/jit.o \
+		Python/legacy_tracing.o \
+		Python/lock.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/object_stack.o \
+		Python/optimizer.o \
+		Python/optimizer_analysis.o \
+		Python/optimizer_symbols.o \
+		Python/parking_lot.o \
+		Python/pathconfig.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/qsbr.o \
+		Python/bootstrap_hash.o \
+		Python/specialize.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/tracemalloc.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/suggestions.o \
+		Python/perf_trampoline.o \
+		Python/perf_jit_trampoline.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS) \
+		
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genericaliasobject.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/typevarobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/unionobject.o \
+		Objects/weakrefobject.o \
+		Python/asm_trampoline.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Modules/getpath.o \
+		Python/frozen.o
+
+LINK_PYTHON_OBJS=$(LIBRARY_OBJS)
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/gc.o Python/import.o Python/sysmodule.o
+
+##########################################################################
+# decimal's libmpdec
+
+LIBMPDEC_OBJS= \
+		Modules/_decimal/libmpdec/basearith.o \
+		Modules/_decimal/libmpdec/constants.o \
+		Modules/_decimal/libmpdec/context.o \
+		Modules/_decimal/libmpdec/convolute.o \
+		Modules/_decimal/libmpdec/crt.o \
+		Modules/_decimal/libmpdec/difradix2.o \
+		Modules/_decimal/libmpdec/fnt.o \
+		Modules/_decimal/libmpdec/fourstep.o \
+		Modules/_decimal/libmpdec/io.o \
+		Modules/_decimal/libmpdec/mpalloc.o \
+		Modules/_decimal/libmpdec/mpdecimal.o \
+		Modules/_decimal/libmpdec/numbertheory.o \
+		Modules/_decimal/libmpdec/sixstep.o \
+		Modules/_decimal/libmpdec/transpose.o
+		# _decimal does not use signaling API
+		# Modules/_decimal/libmpdec/mpsignal.o
+
+LIBMPDEC_HEADERS= \
+		$(srcdir)/Modules/_decimal/libmpdec/basearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/bits.h \
+		$(srcdir)/Modules/_decimal/libmpdec/constants.h \
+		$(srcdir)/Modules/_decimal/libmpdec/convolute.h \
+		$(srcdir)/Modules/_decimal/libmpdec/crt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/difradix2.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fnt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fourstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/io.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpalloc.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpdecimal.h \
+		$(srcdir)/Modules/_decimal/libmpdec/numbertheory.h \
+		$(srcdir)/Modules/_decimal/libmpdec/sixstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/transpose.h \
+		$(srcdir)/Modules/_decimal/libmpdec/typearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/umodarith.h
+
+##########################################################################
+# pyexpat's expat library
+
+LIBEXPAT_OBJS= \
+		Modules/expat/xmlparse.o \
+		Modules/expat/xmlrole.o \
+		Modules/expat/xmltok.o
+
+LIBEXPAT_HEADERS= \
+		Modules/expat/ascii.h \
+		Modules/expat/asciitab.h \
+		Modules/expat/expat.h \
+		Modules/expat/expat_config.h \
+		Modules/expat/expat_external.h \
+		Modules/expat/iasciitab.h \
+		Modules/expat/internal.h \
+		Modules/expat/latin1tab.h \
+		Modules/expat/nametab.h \
+		Modules/expat/pyexpatns.h \
+		Modules/expat/siphash.h \
+		Modules/expat/utf8tab.h \
+		Modules/expat/xmlrole.h \
+		Modules/expat/xmltok.h \
+		Modules/expat/xmltok_impl.h \
+		Modules/expat/xmltok_impl.c \
+		Modules/expat/xmltok_ns.c
+
+##########################################################################
+# hashlib's HACL* library
+
+LIBHACL_SHA2_OBJS= \
+                Modules/_hacl/Hacl_Hash_SHA2.o
+
+LIBHACL_HEADERS= \
+                Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
+                Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h \
+                Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h \
+                Modules/_hacl/include/krml/internal/target.h \
+                Modules/_hacl/include/krml/lowstar_endianness.h \
+                Modules/_hacl/include/krml/types.h \
+		Modules/_hacl/Hacl_Streaming_Types.h \
+                Modules/_hacl/python_hacl_namespaces.h
+
+LIBHACL_SHA2_HEADERS= \
+                Modules/_hacl/Hacl_Hash_SHA2.h \
+                Modules/_hacl/internal/Hacl_Hash_SHA2.h \
+		$(LIBHACL_HEADERS)
+
+#########################################################################
+# Rules
+
+# Default target
+all:		build_all
+
+# First target in Makefile is implicit default. So .PHONY needs to come after
+# all.
+.PHONY: all
+
+# Provide quick help for common Makefile targets.
+.PHONY: help
+help:
+	@echo "Run 'make' to build the Python executable and extension modules"
+	@echo ""
+	@echo "or 'make <target>' where <target> is one of:"
+	@echo "  test         run the test suite"
+	@echo "  install      install built files"
+	@echo "  regen-all    regenerate a number of generated source files"
+	@echo "  clinic       run Argument Clinic over source files"
+	@echo ""
+	@echo "  clean        to remove build files"
+	@echo "  distclean    'clean' + remove other generated files (patch, exe, etc)"
+	@echo ""
+	@echo "  recheck      rerun configure with last cmdline options"
+	@echo "  reindent     reindent .py files in Lib directory"
+	@echo "  tags         build a tags file (useful for Emacs and other editors)"
+	@echo "  list-targets list all targets in the Makefile"
+
+# Display a full list of Makefile targets
+.PHONY: list-targets
+list-targets:
+	@grep -E '^[A-Za-z][-A-Za-z0-9]+:' Makefile | awk -F : '{print $$1}'
+
+.PHONY: build_all
+build_all:	check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \
+		gdbhooks Programs/_testembed scripts checksharedmods rundsymutil
+
+.PHONY: build_wasm
+build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \
+		python-config checksharedmods
+
+# Check that the source is clean when building out of source.
+.PHONY: check-clean-src
+check-clean-src:
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/$(BUILDPYTHON)" \
+	    -o -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \
+		echo "Try to run:" ; \
+		echo "  (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \
+		exit 1; \
+	fi
+
+# Check that the app store compliance patch can be applied (if configured).
+# This is checked as a dry-run against the original library sources;
+# the patch will be actually applied during the install phase.
+.PHONY: check-app-store-compliance
+check-app-store-compliance:
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		patch --dry-run --quiet --force --strip 1 --directory "$(abs_srcdir)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)"; \
+		echo "App store compliance patch can be applied."; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean-profile
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	@ # FIXME: can't run for a cross build
+	task="$(PROFILE_TASK)"; \
+	case "$$task" in \
+	*-s\ *) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  while [ -f $(abs_builddir)/build/pynexttest ]; do \
+	    $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  done;; \
+	*) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	esac || true
+	$(LLVM_PROF_MERGER)
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean-retain-profile
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+.PHONY: profile-opt
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# List of binaries that BOLT runs on.
+BOLT_BINARIES := $(BUILDPYTHON)
+
+BOLT_INSTRUMENT_FLAGS :=  -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1 
+BOLT_APPLY_FLAGS :=   -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1  -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot 
+
+.PHONY: clean-bolt
+clean-bolt:
+	# Profile data.
+	rm -f *.fdata
+	# Pristine binaries before BOLT optimization.
+	rm -f *.prebolt
+	# BOLT instrumented binaries.
+	rm -f *.bolt_inst
+
+profile-bolt-stamp: $(BUILDPYTHON)
+	# Ensure a pristine, pre-BOLT copy of the binary and no profile data from last run.
+	for bin in $(BOLT_BINARIES); do \
+	  prebolt="$${bin}.prebolt"; \
+	  if [ -e "$${prebolt}" ]; then \
+	    echo "Restoring pre-BOLT binary $${prebolt}"; \
+	    mv "$${bin}.prebolt" "$${bin}"; \
+	  fi; \
+	  cp "$${bin}" "$${prebolt}"; \
+	  rm -f $${bin}.bolt.*.fdata $${bin}.fdata; \
+	done
+	# Instrument each binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}" -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $${bin}.bolt) -o $${bin}.bolt_inst $(BOLT_INSTRUMENT_FLAGS); \
+	  mv "$${bin}.bolt_inst" "$${bin}"; \
+	done
+	# Run instrumented binaries to collect data.
+	$(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
+	# Merge all the data files together.
+	for bin in $(BOLT_BINARIES); do \
+	   $${bin}.*.fdata > "$${bin}.fdata"; \
+	  rm -f $${bin}.*.fdata; \
+	done
+	# Run bolt against the merged data to produce an optimized binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}.prebolt" -o "$${bin}.bolt" -data="$${bin}.fdata" $(BOLT_APPLY_FLAGS); \
+	  mv "$${bin}.bolt" "$${bin}"; \
+	done
+	touch $@
+
+.PHONY: bolt-opt
+bolt-opt:
+	$(MAKE) 
+	$(MAKE) profile-bolt-stamp
+
+# Compile and run with gcov
+.PHONY: coverage
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean
+	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
+
+.PHONY: coverage-lcov
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and frozen modules
+.PHONY: coverage-report
+coverage-report: regen-token regen-frozen
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY: clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --exclude Lib/test/clinic.test.c --srcdir $(srcdir)
+
+.PHONY: clinic-tests
+clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $(srcdir)/Lib/test/clinic.test.c
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(PYTHON_FOR_BUILD_DEPS)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	# AIX Linker don't support "-h" option
+	if test "$(MACHDEP)" != "aix"; then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+	if test $(INSTSONAME) != $@; then \
+		$(LN) -f $(INSTSONAME) $@; \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# List of exported symbols for AIX
+Modules/python.exp: $(LIBRARY)
+	$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+.PHONY: gdbhooks
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule is for iOS, which requires an annoyingly just slightly different
+# format for frameworks to macOS. It *doesn't* use a versioned framework, and
+# the Info.plist must be in the root of the framework.
+$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(PYTHONFRAMEWORKDIR)/Info.plist
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+# wasm32-emscripten browser build
+# wasm assets directory is relative to current build dir, e.g. "./usr/local".
+# --preload-file turns a relative asset path into an absolute path.
+
+.PHONY: wasm_stdlib
+wasm_stdlib: $(WASM_STDLIB)
+$(WASM_STDLIB): $(srcdir)/Lib/*.py $(srcdir)/Lib/*/*.py \
+	    $(srcdir)/Tools/wasm/wasm_assets.py \
+	    Makefile pybuilddir.txt Modules/Setup.local
+	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/wasm/wasm_assets.py \
+	    --buildroot . --prefix $(prefix)
+
+python.html: $(srcdir)/Tools/wasm/python.html python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.html $@
+
+python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.worker.js $@
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/critical_section.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/exports.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/genericaliasobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/lock.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/monitoring.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/opcode_ids.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/pyatomic.h \
+		$(srcdir)/Include/pybuffer.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyexpat.h \
+		$(srcdir)/Include/pyframe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystats.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytypedefs.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/typeslots.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/bytearrayobject.h \
+		$(srcdir)/Include/cpython/bytesobject.h \
+		$(srcdir)/Include/cpython/cellobject.h \
+		$(srcdir)/Include/cpython/ceval.h \
+		$(srcdir)/Include/cpython/classobject.h \
+		$(srcdir)/Include/cpython/code.h \
+		$(srcdir)/Include/cpython/compile.h \
+		$(srcdir)/Include/cpython/complexobject.h \
+		$(srcdir)/Include/cpython/context.h \
+		$(srcdir)/Include/cpython/critical_section.h \
+		$(srcdir)/Include/cpython/descrobject.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/fileutils.h \
+		$(srcdir)/Include/cpython/floatobject.h \
+		$(srcdir)/Include/cpython/frameobject.h \
+		$(srcdir)/Include/cpython/funcobject.h \
+		$(srcdir)/Include/cpython/genobject.h \
+		$(srcdir)/Include/cpython/import.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/listobject.h \
+		$(srcdir)/Include/cpython/lock.h \
+		$(srcdir)/Include/cpython/longintrepr.h \
+		$(srcdir)/Include/cpython/longobject.h \
+		$(srcdir)/Include/cpython/memoryobject.h \
+		$(srcdir)/Include/cpython/methodobject.h \
+		$(srcdir)/Include/cpython/modsupport.h \
+		$(srcdir)/Include/cpython/monitoring.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/odictobject.h \
+		$(srcdir)/Include/cpython/picklebufobject.h \
+		$(srcdir)/Include/cpython/pthread_stubs.h \
+		$(srcdir)/Include/cpython/pyatomic.h \
+		$(srcdir)/Include/cpython/pyatomic_gcc.h \
+		$(srcdir)/Include/cpython/pyatomic_std.h \
+		$(srcdir)/Include/cpython/pyctype.h \
+		$(srcdir)/Include/cpython/pydebug.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pyfpe.h \
+		$(srcdir)/Include/cpython/pyframe.h \
+		$(srcdir)/Include/cpython/pyhash.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/pystats.h \
+		$(srcdir)/Include/cpython/pythonrun.h \
+		$(srcdir)/Include/cpython/pythread.h \
+		$(srcdir)/Include/cpython/setobject.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tracemalloc.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		$(srcdir)/Include/cpython/warnings.h \
+		$(srcdir)/Include/cpython/weakrefobject.h \
+		\
+		$(MIMALLOC_HEADERS) \
+		\
+		$(srcdir)/Include/internal/pycore_abstract.h \
+		$(srcdir)/Include/internal/pycore_asdl.h \
+		$(srcdir)/Include/internal/pycore_ast.h \
+		$(srcdir)/Include/internal/pycore_ast_state.h \
+		$(srcdir)/Include/internal/pycore_atexit.h \
+		$(srcdir)/Include/internal/pycore_backoff.h \
+		$(srcdir)/Include/internal/pycore_bitutils.h \
+		$(srcdir)/Include/internal/pycore_blocks_output_buffer.h \
+		$(srcdir)/Include/internal/pycore_brc.h \
+		$(srcdir)/Include/internal/pycore_bytes_methods.h \
+		$(srcdir)/Include/internal/pycore_bytesobject.h \
+		$(srcdir)/Include/internal/pycore_call.h \
+		$(srcdir)/Include/internal/pycore_capsule.h \
+		$(srcdir)/Include/internal/pycore_cell.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_ceval_state.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_codecs.h \
+		$(srcdir)/Include/internal/pycore_compile.h \
+		$(srcdir)/Include/internal/pycore_complexobject.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_critical_section.h \
+		$(srcdir)/Include/internal/pycore_crossinterp.h \
+		$(srcdir)/Include/internal/pycore_descrobject.h \
+		$(srcdir)/Include/internal/pycore_dict.h \
+		$(srcdir)/Include/internal/pycore_dict_state.h \
+		$(srcdir)/Include/internal/pycore_dtoa.h \
+		$(srcdir)/Include/internal/pycore_exceptions.h \
+		$(srcdir)/Include/internal/pycore_faulthandler.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_floatobject.h \
+		$(srcdir)/Include/internal/pycore_flowgraph.h \
+		$(srcdir)/Include/internal/pycore_format.h \
+		$(srcdir)/Include/internal/pycore_frame.h \
+		$(srcdir)/Include/internal/pycore_freelist.h \
+		$(srcdir)/Include/internal/pycore_function.h \
+		$(srcdir)/Include/internal/pycore_gc.h \
+		$(srcdir)/Include/internal/pycore_genobject.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_global_objects.h \
+		$(srcdir)/Include/internal/pycore_global_objects_fini_generated.h \
+		$(srcdir)/Include/internal/pycore_global_strings.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_hashtable.h \
+		$(srcdir)/Include/internal/pycore_identifier.h \
+		$(srcdir)/Include/internal/pycore_import.h \
+		$(srcdir)/Include/internal/pycore_importdl.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_instruments.h \
+		$(srcdir)/Include/internal/pycore_instruction_sequence.h \
+		$(srcdir)/Include/internal/pycore_interp.h \
+		$(srcdir)/Include/internal/pycore_intrinsics.h \
+		$(srcdir)/Include/internal/pycore_jit.h \
+		$(srcdir)/Include/internal/pycore_list.h \
+		$(srcdir)/Include/internal/pycore_llist.h \
+		$(srcdir)/Include/internal/pycore_lock.h \
+		$(srcdir)/Include/internal/pycore_long.h \
+		$(srcdir)/Include/internal/pycore_memoryobject.h \
+		$(srcdir)/Include/internal/pycore_mimalloc.h \
+		$(srcdir)/Include/internal/pycore_modsupport.h \
+		$(srcdir)/Include/internal/pycore_moduleobject.h \
+		$(srcdir)/Include/internal/pycore_namespace.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_object_alloc.h \
+		$(srcdir)/Include/internal/pycore_object_stack.h \
+		$(srcdir)/Include/internal/pycore_object_state.h \
+		$(srcdir)/Include/internal/pycore_obmalloc.h \
+		$(srcdir)/Include/internal/pycore_obmalloc_init.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_opcode_utils.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Include/internal/pycore_parking_lot.h \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyarena.h \
+		$(srcdir)/Include/internal/pycore_pyatomic_ft_wrappers.h \
+		$(srcdir)/Include/internal/pycore_pybuffer.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymath.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pymem_init.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_pystats.h \
+		$(srcdir)/Include/internal/pycore_pythonrun.h \
+		$(srcdir)/Include/internal/pycore_pythread.h \
+		$(srcdir)/Include/internal/pycore_qsbr.h \
+		$(srcdir)/Include/internal/pycore_range.h \
+		$(srcdir)/Include/internal/pycore_runtime.h \
+		$(srcdir)/Include/internal/pycore_runtime_init.h \
+		$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
+		$(srcdir)/Include/internal/pycore_semaphore.h \
+		$(srcdir)/Include/internal/pycore_setobject.h \
+		$(srcdir)/Include/internal/pycore_signal.h \
+		$(srcdir)/Include/internal/pycore_sliceobject.h \
+		$(srcdir)/Include/internal/pycore_strhex.h \
+		$(srcdir)/Include/internal/pycore_structseq.h \
+		$(srcdir)/Include/internal/pycore_symtable.h \
+		$(srcdir)/Include/internal/pycore_sysmodule.h \
+		$(srcdir)/Include/internal/pycore_stackref.h \
+		$(srcdir)/Include/internal/pycore_time.h \
+		$(srcdir)/Include/internal/pycore_token.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tracemalloc.h \
+		$(srcdir)/Include/internal/pycore_tstate.h \
+		$(srcdir)/Include/internal/pycore_tuple.h \
+		$(srcdir)/Include/internal/pycore_typeobject.h \
+		$(srcdir)/Include/internal/pycore_typevarobject.h \
+		$(srcdir)/Include/internal/pycore_ucnhash.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject_generated.h \
+		$(srcdir)/Include/internal/pycore_unionobject.h \
+		$(srcdir)/Include/internal/pycore_uop_ids.h \
+		$(srcdir)/Include/internal/pycore_uop_metadata.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(srcdir)/Include/internal/pycore_weakref.h \
+		$(DTRACE_HEADERS) \
+		 \
+		\
+		$(srcdir)/Python/stdlib_module_names.h
+
+##########################################################################
+# Build static libmpdec.a
+LIBMPDEC_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+# "%.o: %c" is not portable
+Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c
+
+Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c
+
+Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c
+
+Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c
+
+Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c
+
+Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c
+
+Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c
+
+Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c
+
+Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c
+
+Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c
+
+Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c
+
+Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c
+
+Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c
+
+Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c
+
+Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c
+
+$(LIBMPDEC_A): $(LIBMPDEC_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS)
+
+##########################################################################
+# Build static libexpat.a
+LIBEXPAT_CFLAGS=-I$(srcdir)/Modules/expat $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c
+
+Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c
+
+Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c
+
+$(LIBEXPAT_A): $(LIBEXPAT_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
+
+##########################################################################
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
+LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+	$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
+
+$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS)
+
+# create relative links from build/lib.platform/egg.so to Modules/egg.so
+# pybuilddir.txt is created too late. We cannot use it in Makefile
+# targets. ln --relative is not portable.
+.PHONY: sharedmods
+sharedmods: $(SHAREDMODS) pybuilddir.txt
+	@target=`cat pybuilddir.txt`; \
+	$(MKDIR_P) $$target; \
+	for mod in X $(SHAREDMODS); do \
+		if test $$mod != X; then \
+			$(LN) -sf ../../$$mod $$target/`basename $$mod`; \
+		fi; \
+	done
+
+# dependency on BUILDPYTHON ensures that the target is run last
+.PHONY: checksharedmods
+checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
+
+.PHONY: rundsymutil
+rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@if [ ! -z $(DSYMUTIL) ] ; then \
+		echo $(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		$(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		if test -f $(LDLIBRARY); then \
+			echo $(DSYMUTIL_PATH) $(LDLIBRARY); \
+			$(DSYMUTIL_PATH) $(LDLIBRARY); \
+		fi; \
+		for mod in X $(SHAREDMODS); do \
+			if test $$mod != X; then \
+				echo $(DSYMUTIL_PATH) $$mod; \
+				$(DSYMUTIL_PATH) $$mod; \
+			fi; \
+		done \
+	fi
+
+Modules/Setup.local:
+	@# Create empty Setup.local when file was deleted by user
+	echo "# Edit this file for local setup changes" > $@
+
+Modules/Setup.bootstrap: $(srcdir)/Modules/Setup.bootstrap.in config.status
+	./config.status $@
+
+Modules/Setup.stdlib: $(srcdir)/Modules/Setup.stdlib.in config.status
+	./config.status $@
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local \
+				Modules/Setup.bootstrap \
+				Modules/Setup.stdlib
+	$(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				Modules/Setup.stdlib \
+				Modules/Setup.bootstrap \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+.PHONY: regen-test-frozenmain
+regen-test-frozenmain: $(BUILDPYTHON)
+	# Regenerate Programs/test_frozenmain.h
+	# from Programs/test_frozenmain.py
+	# using Programs/freeze_test_frozenmain.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h
+
+.PHONY: regen-test-levenshtein
+regen-test-levenshtein:
+	# Regenerate Lib/test/levenshtein_examples.json
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py $(srcdir)/Lib/test/levenshtein_examples.json
+
+.PHONY: regen-re
+regen-re: $(BUILDPYTHON)
+	# Regenerate Lib/re/_casefix.py
+	# using Tools/build/generate_re_casefix.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+
+Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# "Bootstrap Python" used to run Programs/_freeze_module.py
+
+BOOTSTRAP_HEADERS = \
+	Python/frozen_modules/importlib._bootstrap.h \
+	Python/frozen_modules/importlib._bootstrap_external.h \
+	Python/frozen_modules/zipimport.h
+
+Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS)
+
+_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local
+	$(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \
+		Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+
+############################################################################
+# frozen modules (including importlib)
+#
+# Freezing is a multi step process. It works differently for standard builds
+# and cross builds. Standard builds use Programs/_freeze_module and
+# _bootstrap_python for freezing, so users can build Python
+# without an existing Python installation. Cross builds cannot execute
+# compiled binaries and therefore rely on an external build Python
+# interpreter. The build interpreter must have same version and same bytecode
+# as the host (target) binary.
+#
+# Standard build process:
+# 1) compile minimal core objects for Py_Compile*() and PyMarshal_Write*().
+# 2) build Programs/_freeze_module binary.
+# 3) create frozen module headers for importlib and getpath.
+# 4) build _bootstrap_python binary.
+# 5) create remaining frozen module headers with
+#    ``./_bootstrap_python Programs/_freeze_module.py``. The pure Python
+#    script is used to test the cross compile code path.
+#
+# Cross compile process:
+# 1) create all frozen module headers with external build Python and
+#    Programs/_freeze_module.py script.
+#
+
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
+FROZEN_FILES_IN = \
+		Lib/importlib/_bootstrap.py \
+		Lib/importlib/_bootstrap_external.py \
+		Lib/zipimport.py \
+		Lib/abc.py \
+		Lib/codecs.py \
+		Lib/io.py \
+		Lib/_collections_abc.py \
+		Lib/_sitebuiltins.py \
+		Lib/genericpath.py \
+		Lib/ntpath.py \
+		Lib/posixpath.py \
+		Lib/os.py \
+		Lib/site.py \
+		Lib/stat.py \
+		Lib/importlib/util.py \
+		Lib/importlib/machinery.py \
+		Lib/runpy.py \
+		Lib/__hello__.py \
+		Lib/__phello__/__init__.py \
+		Lib/__phello__/ham/__init__.py \
+		Lib/__phello__/ham/eggs.py \
+		Lib/__phello__/spam.py \
+		Tools/freeze/flag.py
+# End FROZEN_FILES_IN
+FROZEN_FILES_OUT = \
+		Python/frozen_modules/importlib._bootstrap.h \
+		Python/frozen_modules/importlib._bootstrap_external.h \
+		Python/frozen_modules/zipimport.h \
+		Python/frozen_modules/abc.h \
+		Python/frozen_modules/codecs.h \
+		Python/frozen_modules/io.h \
+		Python/frozen_modules/_collections_abc.h \
+		Python/frozen_modules/_sitebuiltins.h \
+		Python/frozen_modules/genericpath.h \
+		Python/frozen_modules/ntpath.h \
+		Python/frozen_modules/posixpath.h \
+		Python/frozen_modules/os.h \
+		Python/frozen_modules/site.h \
+		Python/frozen_modules/stat.h \
+		Python/frozen_modules/importlib.util.h \
+		Python/frozen_modules/importlib.machinery.h \
+		Python/frozen_modules/runpy.h \
+		Python/frozen_modules/__hello__.h \
+		Python/frozen_modules/__phello__.h \
+		Python/frozen_modules/__phello__.ham.h \
+		Python/frozen_modules/__phello__.ham.eggs.h \
+		Python/frozen_modules/__phello__.spam.h \
+		Python/frozen_modules/frozen_only.h
+# End FROZEN_FILES_OUT
+
+Programs/_freeze_module.o: Programs/_freeze_module.c Makefile
+
+Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile
+
+Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+# We manually freeze getpath.py rather than through freeze_modules
+Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) getpath $(srcdir)/Modules/getpath.py Python/frozen_modules/getpath.h
+
+# BEGIN: freezing modules
+
+Python/frozen_modules/importlib._bootstrap.h: Lib/importlib/_bootstrap.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap $(srcdir)/Lib/importlib/_bootstrap.py Python/frozen_modules/importlib._bootstrap.h
+
+Python/frozen_modules/importlib._bootstrap_external.h: Lib/importlib/_bootstrap_external.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap_external $(srcdir)/Lib/importlib/_bootstrap_external.py Python/frozen_modules/importlib._bootstrap_external.h
+
+Python/frozen_modules/zipimport.h: Lib/zipimport.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) zipimport $(srcdir)/Lib/zipimport.py Python/frozen_modules/zipimport.h
+
+Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) abc $(srcdir)/Lib/abc.py Python/frozen_modules/abc.h
+
+Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
+
+Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
+
+Python/frozen_modules/_collections_abc.h: Lib/_collections_abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _collections_abc $(srcdir)/Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
+
+Python/frozen_modules/_sitebuiltins.h: Lib/_sitebuiltins.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _sitebuiltins $(srcdir)/Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
+
+Python/frozen_modules/genericpath.h: Lib/genericpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) genericpath $(srcdir)/Lib/genericpath.py Python/frozen_modules/genericpath.h
+
+Python/frozen_modules/ntpath.h: Lib/ntpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) ntpath $(srcdir)/Lib/ntpath.py Python/frozen_modules/ntpath.h
+
+Python/frozen_modules/posixpath.h: Lib/posixpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) posixpath $(srcdir)/Lib/posixpath.py Python/frozen_modules/posixpath.h
+
+Python/frozen_modules/os.h: Lib/os.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) os $(srcdir)/Lib/os.py Python/frozen_modules/os.h
+
+Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) site $(srcdir)/Lib/site.py Python/frozen_modules/site.h
+
+Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
+
+Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
+
+Python/frozen_modules/importlib.machinery.h: Lib/importlib/machinery.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.machinery $(srcdir)/Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
+
+Python/frozen_modules/runpy.h: Lib/runpy.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) runpy $(srcdir)/Lib/runpy.py Python/frozen_modules/runpy.h
+
+Python/frozen_modules/__hello__.h: Lib/__hello__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __hello__ $(srcdir)/Lib/__hello__.py Python/frozen_modules/__hello__.h
+
+Python/frozen_modules/__phello__.h: Lib/__phello__/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__ $(srcdir)/Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
+
+Python/frozen_modules/__phello__.ham.h: Lib/__phello__/ham/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham $(srcdir)/Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
+
+Python/frozen_modules/__phello__.ham.eggs.h: Lib/__phello__/ham/eggs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham.eggs $(srcdir)/Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
+
+Python/frozen_modules/__phello__.spam.h: Lib/__phello__/spam.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.spam $(srcdir)/Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
+
+Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) frozen_only $(srcdir)/Tools/freeze/flag.py Python/frozen_modules/frozen_only.h
+
+# END: freezing modules
+
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
+
+.PHONY: regen-frozen
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py --frozen-modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+# We keep this renamed target around for folks with muscle memory.
+.PHONY: regen-importlib
+regen-importlib: regen-frozen
+
+############################################################################
+# Global objects
+
+# Dependencies which can add and/or remove _Py_ID() identifiers:
+# - "make clinic"
+.PHONY: regen-global-objects
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py clinic
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
+
+############################################################################
+# ABI
+
+.PHONY: regen-abidump
+regen-abidump: all
+	@$(MKDIR_P) $(srcdir)/Doc/data/
+	abidw "libpython$(LDVERSION).so" --no-architecture --out-file $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+	@$(UPDATE_FILE) --create $(srcdir)/Doc/data/python$(LDVERSION).abi $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+
+.PHONY: check-abidump
+check-abidump: all
+	abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
+
+.PHONY: regen-limited-abi
+regen-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+
+############################################################################
+# Regenerate Unicode Data
+
+.PHONY: regen-unicodedata
+regen-unicodedata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/unicode/makeunicodedata.py
+
+
+############################################################################
+# Regenerate all generated files
+
+# "clinic" is regenerated implicitly via "regen-global-objects".
+.PHONY: regen-all
+regen-all: regen-cases regen-typeslots \
+	regen-token regen-ast regen-keyword regen-sre regen-frozen \
+	regen-pegen-metaparser regen-pegen regen-test-frozenmain \
+	regen-test-levenshtein regen-global-objects
+	@echo
+	@echo "Note: make regen-stdlib-module-names, make regen-limited-abi, "
+	@echo "make regen-configure, make regen-sbom, and make regen-unicodedata should be run manually"
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-DPLATLIBDIR='"$(PLATLIBDIR)"' \
+		-DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h
+
+Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_common.h
+
+Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		$(if $(MULTIARCH),-DMULTIARCH='"$(MULTIARCH)"') \
+		-DSOABI='"$(SOABI)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-pegen-metaparser
+regen-pegen-metaparser:
+	@$(MKDIR_P) $(srcdir)/Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q python \
+	$(srcdir)/Tools/peg_generator/pegen/metagrammar.gram \
+	-o $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+	$(UPDATE_FILE) $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py \
+	$(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+
+.PHONY: regen-pegen
+regen-pegen:
+	@$(MKDIR_P) $(srcdir)/Parser
+	@$(MKDIR_P) $(srcdir)/Parser/tokenizer
+	@$(MKDIR_P) $(srcdir)/Parser/lexer
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q c \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		-o $(srcdir)/Parser/parser.c.new
+	$(UPDATE_FILE) $(srcdir)/Parser/parser.c $(srcdir)/Parser/parser.c.new
+
+.PHONY: regen-ast
+regen-ast:
+	# Regenerate 3 files using Parser/asdl_c.py:
+	# - Include/internal/pycore_ast.h
+	# - Include/internal/pycore_ast_state.h
+	# - Python/Python-ast.c
+	$(MKDIR_P) $(srcdir)/Include
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		$(srcdir)/Parser/Python.asdl \
+		-H $(srcdir)/Include/internal/pycore_ast.h.new \
+		-I $(srcdir)/Include/internal/pycore_ast_state.h.new \
+		-C $(srcdir)/Python/Python-ast.c.new
+
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast_state.h $(srcdir)/Include/internal/pycore_ast_state.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc \
+		$(srcdir)/Doc/library/token.rst
+	# Regenerate Include/internal/pycore_token.h from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/internal/pycore_token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/python.gram and Grammar/Tokens
+	# using Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen.keywordgen \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: all Programs/_testembed
+	# Regenerate Python/stdlib_module_names.h
+	# using Tools/build/generate_stdlib_module_names.py
+	$(RUNSHARED) ./$(BUILDPYTHON) \
+		$(srcdir)/Tools/build/generate_stdlib_module_names.py \
+		> $(srcdir)/Python/stdlib_module_names.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
+
+.PHONY: regen-sre
+regen-sre:
+	# Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
+	# from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
+		$(srcdir)/Lib/re/_constants.py \
+		$(srcdir)/Modules/_sre/sre_constants.h \
+		$(srcdir)/Modules/_sre/sre_targets.h
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+		$(srcdir)/Objects/mimalloc/alloc-aligned.c \
+		$(srcdir)/Objects/mimalloc/alloc-posix.c \
+		$(srcdir)/Objects/mimalloc/arena.c \
+		$(srcdir)/Objects/mimalloc/bitmap.c \
+		$(srcdir)/Objects/mimalloc/heap.c \
+		$(srcdir)/Objects/mimalloc/init.c \
+		$(srcdir)/Objects/mimalloc/options.c \
+		$(srcdir)/Objects/mimalloc/os.c \
+		$(srcdir)/Objects/mimalloc/page.c \
+		$(srcdir)/Objects/mimalloc/random.c \
+		$(srcdir)/Objects/mimalloc/segment.c \
+		$(srcdir)/Objects/mimalloc/segment-map.c \
+		$(srcdir)/Objects/mimalloc/stats.c \
+		$(srcdir)/Objects/mimalloc/prim/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/osx/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/unix/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/wasi/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
+
+
+# Regenerate various files from Python/bytecodes.c
+# Pass CASESFLAG=-l to insert #line directives in the output
+
+.PHONY: regen-cases
+regen-cases: \
+        regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
+		regen-generated-cases regen-executor-cases regen-optimizer-cases \
+		regen-opcode-metadata regen-uop-metadata
+
+.PHONY: regen-opcode-ids
+regen-opcode-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_id_generator.py \
+	    -o $(srcdir)/Include/opcode_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/opcode_ids.h $(srcdir)/Include/opcode_ids.h.new
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/target_generator.py \
+	    -o $(srcdir)/Python/opcode_targets.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+.PHONY: regen-uop-ids
+regen-uop-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_id_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_uop_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_ids.h $(srcdir)/Include/internal/pycore_uop_ids.h.new
+
+.PHONY: regen-opcode-metadata-py
+regen-opcode-metadata-py:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/py_metadata_generator.py \
+	    -o $(srcdir)/Lib/_opcode_metadata.py.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Lib/_opcode_metadata.py $(srcdir)/Lib/_opcode_metadata.py.new
+
+.PHONY: regen-generated-cases
+regen-generated-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier1_generator.py \
+	    -o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new
+
+.PHONY: regen-executor-cases
+regen-executor-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
+	    -o $(srcdir)/Python/executor_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/executor_cases.c.h $(srcdir)/Python/executor_cases.c.h.new
+
+.PHONY: regen-optimizer-cases
+regen-optimizer-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/optimizer_generator.py \
+	    -o $(srcdir)/Python/optimizer_cases.c.h.new \
+	    $(srcdir)/Python/optimizer_bytecodes.c \
+	    $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
+
+.PHONY: regen-opcode-metadata
+regen-opcode-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_opcode_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_opcode_metadata.h $(srcdir)/Include/internal/pycore_opcode_metadata.h.new
+
+.PHONY: regen-uop-metadata
+regen-uop-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_metadata_generator.py -o \
+	    $(srcdir)/Include/internal/pycore_uop_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_metadata.h $(srcdir)/Include/internal/pycore_uop_metadata.h.new
+
+Python/compile.o Python/assemble.o Python/flowgraph.o Python/instruction_sequence.o: \
+                $(srcdir)/Include/internal/pycore_compile.h \
+                $(srcdir)/Include/internal/pycore_flowgraph.h \
+                $(srcdir)/Include/internal/pycore_instruction_sequence.h \
+                $(srcdir)/Include/internal/pycore_opcode_metadata.h \
+                $(srcdir)/Include/internal/pycore_opcode_utils.h
+
+Python/ceval.o: \
+		$(srcdir)/Python/ceval_macros.h \
+		$(srcdir)/Python/condvar.h \
+		$(srcdir)/Python/generated_cases.c.h \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Python/opcode_targets.h
+
+Python/flowgraph.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h
+
+Python/optimizer.o: \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h
+
+Python/optimizer_analysis.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Python/optimizer_cases.c.h
+
+Python/frozen.o: $(FROZEN_FILES_OUT)
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/gc.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) -m test
+TESTTIMEOUT=
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+.PHONY: cleantest
+cleantest: all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+# Similar to buildbottest, but use --fast-ci option, instead of --slow-ci.
+.PHONY: test
+test: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+.PHONY: testuniversal
+testuniversal: all
+	@if [ `arch` != 'i386' ]; then \
+		echo "This can only be used on OSX/i386" ;\
+		exit 1 ;\
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+	$(RUNSHARED) /usr/libexec/oah/translate \
+		./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Run the test suite on the iOS simulator. Must be run on a macOS machine with
+# a full Xcode install that has an iPhone SE (3rd edition) simulator available.
+# This must be run *after* a `make install` has completed the build. The
+# `--with-framework-name` argument *cannot* be used when configuring the build.
+XCFOLDER:=iOSTestbed.$(MULTIARCH).$(shell date +%s).$$PPID
+.PHONY: testios
+testios:
+	@if test "$(MACHDEP)" != "ios"; then \
+		echo "Cannot run the iOS testbed for a non-iOS build."; \
+		exit 1;\
+	fi
+	@if test "$(findstring -iphonesimulator,$(MULTIARCH))" != "-iphonesimulator"; then \
+		echo "Cannot run the iOS testbed for non-simulator builds."; \
+		exit 1;\
+	fi
+	@if test $(PYTHONFRAMEWORK) != "Python"; then \
+		echo "Cannot run the iOS testbed with a non-default framework name."; \
+		exit 1;\
+	fi
+	@if ! test -d $(PYTHONFRAMEWORKPREFIX); then \
+		echo "Cannot find a finalized iOS Python.framework. Have you run 'make install' to finalize the framework build?"; \
+		exit 1;\
+	fi
+
+	# Clone the testbed project into the XCFOLDER
+	$(PYTHON_FOR_BUILD) $(srcdir)/iOS/testbed clone --framework $(PYTHONFRAMEWORKPREFIX) "$(XCFOLDER)"
+
+	# Run the testbed project
+	$(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W
+
+# Like test, but using --slow-ci which enables all test resources and use
+# longer timeout. Run an optional pybuildbot.identify script to include
+# information about the build environment.
+.PHONY: buildbottest
+buildbottest: all
+	-@if which pybuildbot.identify >/dev/null 2>&1; then \
+		pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+.PHONY: pythoninfo
+pythoninfo: all
+		$(RUNSHARED) $(HOSTRUNNER) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	-x test_subprocess test_io \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+
+.PHONY: quicktest
+quicktest: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile
+multisslcompile: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py --steps=modules
+
+.PHONY: multissltest
+multissltest: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
+.PHONY: install
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: altinstall
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: commoninstall
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall altmaninstall 
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+.PHONY: sharedinstall
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			if test -d "$$i.dSYM"; then \
+				echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+				$(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			fi; \
+		  fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+.PHONY: altbininstall
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	@if test "$(PY_ENABLE_SHARED)" = 1 -o "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+			if test -n "$(DLLLIBRARY)" ; then \
+				$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+			else \
+				$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+				if test $(LDLIBRARY) != $(INSTSONAME); then \
+					(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+				fi \
+			fi; \
+			if test -n "$(PY3LIBRARY)"; then \
+				$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+			fi; \
+		else	true; \
+		fi; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE); \
+		lipo $(LIPO_INTEL64_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	# Install macOS debug information (if available)
+	if test -d "$(BUILDPYTHON).dSYM"; then \
+		echo $(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+		$(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			$(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+		fi \
+	else \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+      $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+		fi \
+	fi
+
+.PHONY: bininstall
+# We depend on commoninstall here to make sure the installation is already usable
+# before we possibly overwrite the global 'python3' symlink to avoid causing
+# problems for anything else trying to run 'python3' while we install, particularly
+# if we're installing in parallel with -j.
+bininstall: commoninstall altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION).pc python-$(VERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION)-embed.pc python-$(VERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-intel64$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-intel64$(EXE) python3-intel64$(EXE)) \
+	fi
+
+# Install the versioned manual page
+.PHONY: altmaninstall
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+.PHONY: maninstall
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	asyncio \
+		collections \
+		concurrent concurrent/futures \
+		csv \
+		ctypes ctypes/macholib \
+		curses \
+		dbm \
+		email email/mime \
+		encodings \
+		ensurepip ensurepip/_bundled \
+		html \
+		http \
+		idlelib idlelib/Icons \
+		importlib importlib/resources importlib/metadata \
+		json \
+		logging \
+		multiprocessing multiprocessing/dummy \
+		pathlib \
+		pydoc_data \
+		re \
+		site-packages \
+		sqlite3 \
+		sysconfig \
+		tkinter \
+		tomllib \
+		turtledemo \
+		unittest \
+		urllib \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		wsgiref \
+		$(XMLLIBSUBDIRS) \
+		xmlrpc \
+		zipfile zipfile/_path \
+		zoneinfo \
+		_pyrepl \
+		__phello__
+TESTSUBDIRS=	idlelib/idle_test \
+		test \
+		test/test_ast \
+		test/archivetestdata \
+		test/audiodata \
+		test/certdata \
+		test/certdata/capath \
+		test/cjkencodings \
+		test/configdata \
+		test/crashers \
+		test/data \
+		test/decimaltestdata \
+		test/dtracedata \
+		test/encoded_modules \
+		test/leakers \
+		test/libregrtest \
+		test/mathdata \
+		test/regrtestdata \
+		test/regrtestdata/import_from_tests \
+		test/regrtestdata/import_from_tests/test_regrtest_b \
+		test/subprocessdata \
+		test/support \
+		test/support/_hypothesis_stubs \
+		test/support/interpreters \
+		test/test_asyncio \
+		test/test_capi \
+		test/test_cext \
+		test/test_concurrent_futures \
+		test/test_cppext \
+		test/test_ctypes \
+		test/test_dataclasses \
+		test/test_doctest \
+		test/test_email \
+		test/test_email/data \
+		test/test_free_threading \
+		test/test_future_stmt \
+		test/test_gdb \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/circular_imports/subpkg2 \
+		test/test_import/data/circular_imports/subpkg2/parent \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		test/test_import/data/package3 \
+		test/test_import/data/package4 \
+		test/test_import/data/unwritable \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/metadata \
+		test/test_importlib/metadata/data \
+		test/test_importlib/metadata/data/sources \
+		test/test_importlib/metadata/data/sources/example \
+		test/test_importlib/metadata/data/sources/example/example \
+		test/test_importlib/metadata/data/sources/example2 \
+		test/test_importlib/metadata/data/sources/example2/example2 \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/partial \
+		test/test_importlib/resources \
+		test/test_importlib/source \
+		test/test_inspect \
+		test/test_interpreters \
+		test/test_json \
+		test/test_module \
+		test/test_multiprocessing_fork \
+		test/test_multiprocessing_forkserver \
+		test/test_multiprocessing_spawn \
+		test/test_pathlib \
+		test/test_peg_generator \
+		test/test_pydoc \
+		test/test_pyrepl \
+		test/test_sqlite3 \
+		test/test_tkinter \
+		test/test_tomllib \
+		test/test_tomllib/data \
+		test/test_tomllib/data/invalid \
+		test/test_tomllib/data/invalid/array \
+		test/test_tomllib/data/invalid/array-of-tables \
+		test/test_tomllib/data/invalid/boolean \
+		test/test_tomllib/data/invalid/dates-and-times \
+		test/test_tomllib/data/invalid/dotted-keys \
+		test/test_tomllib/data/invalid/inline-table \
+		test/test_tomllib/data/invalid/keys-and-vals \
+		test/test_tomllib/data/invalid/literal-str \
+		test/test_tomllib/data/invalid/multiline-basic-str \
+		test/test_tomllib/data/invalid/multiline-literal-str \
+		test/test_tomllib/data/invalid/table \
+		test/test_tomllib/data/valid \
+		test/test_tomllib/data/valid/array \
+		test/test_tomllib/data/valid/dates-and-times \
+		test/test_tomllib/data/valid/multiline-basic-str \
+		test/test_tools \
+		test/test_tools/i18n_data \
+		test/test_tools/msgfmt_data \
+		test/test_ttk \
+		test/test_unittest \
+		test/test_unittest/testmock \
+		test/test_warnings \
+		test/test_warnings/data \
+		test/test_zipfile \
+		test/test_zipfile/_path \
+		test/test_zoneinfo \
+		test/test_zoneinfo/data \
+		test/tkinterdata \
+		test/tokenizedata \
+		test/tracedmodules \
+		test/translationdata \
+		test/translationdata/argparse \
+		test/translationdata/getopt \
+		test/translationdata/optparse \
+		test/typinganndata \
+		test/wheeldata \
+		test/xmltestdata \
+		test/xmltestdata/c14n-20 \
+		test/zipimport_data
+
+COMPILEALL_OPTS=-j0
+
+TEST_MODULES=yes
+
+.PHONY: libinstall
+libinstall:	all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	@ # If app store compliance has been configured, apply the patch to the
+	@ # installed library code. The patch has been previously validated against
+	@ # the original source tree, so we can ignore any errors that are raised
+	@ # due to files that are missing because of --disable-test-modules etc.
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		echo "Applying app store compliance patch"; \
+		patch --force --reject-file "$(abs_builddir)/app-store-compliance.rej" --strip 2 --directory "$(DESTDIR)$(LIBDEST)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)" || true ; \
+	fi
+	@ # Build PYC files for the 3 optimization levels (0, 1, 2)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+# macOS' make seems to ignore a dependency on a
+# "$(BUILD_SCRIPTS_DIR): $(MKDIR_P) $@" rule.
+BUILD_SCRIPTS_DIR=build/scripts-$(VERSION)
+SCRIPT_IDLE=$(BUILD_SCRIPTS_DIR)/idle$(VERSION)
+SCRIPT_PYDOC=$(BUILD_SCRIPTS_DIR)/pydoc$(VERSION)
+
+$(SCRIPT_IDLE): $(srcdir)/Tools/scripts/idle3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/idle3 > $@
+	@chmod +x $@
+
+$(SCRIPT_PYDOC): $(srcdir)/Tools/scripts/pydoc3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/pydoc3 > $@
+	@chmod +x $@
+
+.PHONY: scripts
+scripts: $(SCRIPT_IDLE) $(SCRIPT_PYDOC) python-config
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+
+.PHONY: inclinstall
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		if test ! -d $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; then \
+			echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		fi; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		echo $(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		$(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		for i in $(srcdir)/Include/internal/mimalloc/mimalloc/*.h; \
+		do \
+			echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal/mimalloc/mimalloc; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		done; \
+	fi
+	echo $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.13/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+.PHONY: libainstall
+libainstall: all scripts
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -d $(LIBRARY); then :; else \
+			if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+				if test "$(SHLIB_SUFFIX)" = .dll; then \
+					$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+				else \
+					$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+				fi; \
+			else \
+				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+			fi; \
+		fi; \
+		$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.bootstrap $(DESTDIR)$(LIBPL)/Setup.bootstrap
+	$(INSTALL_DATA) Modules/Setup.stdlib $(DESTDIR)$(LIBPL)/Setup.stdlib
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	$(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION)
+	$(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION)
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/README.AIX for details.";	\
+	else true; \
+	fi
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+.PHONY: frameworkinstall
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+.PHONY: frameworkinstallframework
+frameworkinstallframework:  install frameworkinstallmaclib
+
+# macOS uses a versioned frameworks structure that includes a full install
+.PHONY: frameworkinstallversionedstructure
+frameworkinstallversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# iOS/tvOS/watchOS uses a non-versioned framework with Info.plist in the
+# framework root, no .lproj data, and only stub compilation assistance binaries
+.PHONY: frameworkinstallunversionedstructure
+frameworkinstallunversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; then \
+		echo "Clearing stale header symlink directory"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; \
+	fi
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)
+	sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR)
+	for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \
+		$(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \
+	done
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+.PHONY: frameworkinstallmaclib
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+.PHONY: frameworkinstallapps
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+.PHONY: frameworkpythonw
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+.PHONY: frameworkinstallunixtools
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+.PHONY: frameworkaltinstallunixtools
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+.PHONY: frameworkinstallextras
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# On iOS, bin/lib can't live inside the framework; include needs to be called
+# "Headers", but *must* be in the framework, and *not* include the `python3.X`
+# subdirectory. The install has put these folders in the same folder as
+# Python.framework; Move the headers to their final framework-compatible home.
+.PHONY: frameworkinstallmobileheaders
+frameworkinstallmobileheaders: frameworkinstallunversionedstructure inclinstall
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; then \
+		echo "Removing old framework headers"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; \
+	fi
+	mv "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)" "$(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers"
+	$(LN) -fs "../$(PYTHONFRAMEWORKDIR)/Headers" "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+
+JIT_DEPS = \
+		$(srcdir)/Tools/jit/*.c \
+		$(srcdir)/Tools/jit/*.py \
+		$(srcdir)/Python/executor_cases.c.h \
+		pyconfig.h
+
+jit_stencils.h: $(JIT_DEPS)
+	
+
+Python/jit.o: $(srcdir)/Python/jit.c 
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+.PHONY: regen-jit
+regen-jit:
+	
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+.PHONY: reindent
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+.PHONY: recheck
+recheck:
+	./config.status --recheck
+	./config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	(cd $(srcdir); autoreconf -ivf -Werror)
+
+.PHONY: regen-configure
+regen-configure:
+	$(srcdir)/Tools/build/regen-configure.sh
+
+.PHONY: regen-sbom
+regen-sbom:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+.PHONY: pycremoval
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+.PHONY: rmtestturds
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+.PHONY: docclean
+docclean:
+	$(MAKE) -C $(srcdir)/Doc clean
+
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+.PHONY: clean-retain-profile
+clean-retain-profile: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find . -name '*.lto' -exec rm -f {} ';'
+	find . -name '*.wasm' -exec rm -f {} ';'
+	find . -name '*.lst' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f _bootstrap_python
+	-rm -f python.html python*.js python.data python*.symbols python*.map
+	-rm -f $(WASM_STDLIB)
+	-rm -f Programs/_testembed Programs/_freeze_module
+	-rm -rf Python/deepfreeze
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/bin
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/lib
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/include
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/Python.framework
+
+.PHONY: profile-removal
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+	rm -f profile-bolt-stamp
+
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
+	@if test build_all = profile-opt -o build_all = bolt-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+	-rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
+.PHONY: clobber
+clobber: clean
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -rf iOS/Frameworks
+	-rm -rf iOSTestbed.*
+	-rm -f python-config.py python-config
+	-rm -rf cross-build
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+.PHONY: distclean
+distclean: clobber docclean
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+	    Modules/Setup.bootstrap Modules/Setup.stdlib \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+.PHONY: smelly
+smelly: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
+
+# Check if any unsupported C global variables have been added.
+.PHONY: check-c-globals
+check-c-globals:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/c-analyzer/check-c-globals.py \
+		--format summary \
+		--traceback
+
+# Check for undocumented C APIs.
+.PHONY: check-c-api-docs
+check-c-api-docs:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/check-c-api-docs/main.py
+
+# Find files with funny names
+.PHONY: funny
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+.PHONY: patchcheck
+patchcheck: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
+
+.PHONY: check-limited-abi
+check-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+
+.PHONY: update-config
+update-config:
+	curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
+	curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
+	chmod +x config.guess config.sub
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_pthread_stubs.h $(srcdir)/Python/condvar.h
+
+##########################################################################
+# Module dependencies and platform-specific files
+
+# force rebuild when header file or module build flavor (static/shared) is changed
+MODULE_DEPS_STATIC=Modules/config.c
+MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS)
+
+MODULE__CURSES_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__CURSES_PANEL_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__DATETIME_DEPS=$(srcdir)/Include/datetime.h
+MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_PYEXPAT_DEPS=$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE_UNICODEDATA_DEPS=$(srcdir)/Modules/unicodedata_db.h $(srcdir)/Modules/unicodename_db.h
+MODULE__BLAKE2_DEPS=$(srcdir)/Modules/_blake2/impl/blake2-config.h $(srcdir)/Modules/_blake2/impl/blake2-impl.h $(srcdir)/Modules/_blake2/impl/blake2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2b-ref.c $(srcdir)/Modules/_blake2/impl/blake2b-round.h $(srcdir)/Modules/_blake2/impl/blake2b.c $(srcdir)/Modules/_blake2/impl/blake2s-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2s-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2s-load-xop.h $(srcdir)/Modules/_blake2/impl/blake2s-ref.c $(srcdir)/Modules/_blake2/impl/blake2s-round.h $(srcdir)/Modules/_blake2/impl/blake2s.c $(srcdir)/Modules/_blake2/blake2module.h $(srcdir)/Modules/hashlib.h
+MODULE__CTYPES_DEPS=$(srcdir)/Modules/_ctypes/ctypes.h
+MODULE__CTYPES_MALLOC_CLOSURE=
+MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h $(LIBMPDEC_HEADERS) $(LIBMPDEC_A)
+MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c $(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h
+MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h
+MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c
+MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c
+MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_A)
+MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c
+MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c
+MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h
+MODULE__TESTCAPI_DEPS=$(srcdir)/Modules/_testcapi/parts.h $(srcdir)/Modules/_testcapi/util.h
+MODULE__TESTLIMITEDCAPI_DEPS=$(srcdir)/Modules/_testlimitedcapi/testcapi_long.h $(srcdir)/Modules/_testlimitedcapi/parts.h $(srcdir)/Modules/_testlimitedcapi/util.h
+MODULE__TESTINTERNALCAPI_DEPS=$(srcdir)/Modules/_testinternalcapi/parts.h
+MODULE__SQLITE3_DEPS=$(srcdir)/Modules/_sqlite/connection.h $(srcdir)/Modules/_sqlite/cursor.h $(srcdir)/Modules/_sqlite/microprotocols.h $(srcdir)/Modules/_sqlite/module.h $(srcdir)/Modules/_sqlite/prepare_protocol.h $(srcdir)/Modules/_sqlite/row.h $(srcdir)/Modules/_sqlite/util.h
+
+CODECS_COMMON_HEADERS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h $(srcdir)/Modules/cjkcodecs/cjkcodecs.h
+MODULE__CODECS_CN_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_cn.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_HK_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_hk.h  $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_ISO2022_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_JP_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(srcdir)/Modules/cjkcodecs/mappings_jp.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_KR_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_kr.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_TW_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_tw.h $(CODECS_COMMON_HEADERS)
+MODULE__MULTIBYTECODEC_DEPS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
--- a/Misc/python-config.sh	1970-01-01 04:00:00.000000000 +0400
+++ b/Misc/python-config.sh	2026-05-12 14:52:48.695269192 +0400
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Keep this script in sync with python-config.in
+
+exit_with_usage ()
+{
+    local usage
+    usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
+    if [ "$1" -eq 0 ]; then
+        echo "$usage"
+    else
+        echo "$usage" >&2
+    fi
+    exit $1
+}
+
+if [ "$1" = "" ] ; then
+    exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)

[truncated 1586375 bytes]

failed patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. The diagnosis was captured, but the patch proposal did not complete cleanly.

state: failedcreated: 2026-05-12 09:37 UTCvalidation: failed

Why it stopped

execution

Failure details

  • Failure kind: execution
  • Exit status: 1
  • Error: {"type":"item.completed","item":{"id":"item_16","type":"agent_message","text":"The project-level command completed with exit code 0, though the build reported optional module issues: `_ssl` failed to import with undefined symbol `TLSv1_method`, and `_dbm`, `_gdbm`, `_tkinter` were missing. I’m doing a final tree check now; there are build artifacts from validation, but no source patch was made because the evidence does not support a CPython change. \n"}} {"type":"error","message":"Reconnecting... 1/5 (stream disconnected before completion: Transport error: network error: error decoding response body)"} {"type":"error","message":"Reconnecting... 2/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"} {"type":"error","message":"Reconnecting... 3/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"} {"type":"error","message":"Reconnecting... 4/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"} {"type":"error","message":"Reconnecting... 5/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"} {"type":"error","message":"stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses)"} {"type":"turn.failed","error":{"message":"stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses)"}}

Collected context

  • Subsystem: runaway-process
  • Diagnosis family: busy-poll
  • Hot path: _raw_spin_lock_irqsave
  • Command: /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
  • Thread backtrace summary: thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
  • Source package: python3.13
  • Workspace source: debian-source
  • Workspace acquisition: Fetched Debian source package via apt-get source.
  • Implicated packages: linux-image-6.17.10+deb14-amd64
  • Contention signals: gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory.

The trace repeatedly returns to a poll-family syscall without meaningful blocking, which suggests a busy event-loop wakeup.

Representative threads

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? () -> 0x0000000000a56c88 in _PyRuntime ()

Common frame clusters

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? ()

Raw thread backtrace

Thread 1 (Thread 0x7f1c6e75d200 (LWP 2799720) "supervisord"):
#0  0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
#1  0x0000000000b7ddf3 in ?? ()
#2  0x00000000313fd7e7 in ?? ()
#3  0x0000000000a56c88 in _PyRuntime ()
#4  0x00007f1c6e7efead in ?? () from target:<path>
#5  0x0000000000000007 in ?? ()
#6  0x000000000054aeb0 in PyMem_Realloc ()
#7  0x000000000067ca5b in ?? ()
#8  0x000000000056e19a in _PyEval_EvalFrameDefault ()
#9  0x0000000000569544 in PyEval_EvalCode ()
#10 0x00000000006c1c44 in ?? ()
#11 0x00000000006bebdf in ?? ()
#12 0x00000000006d0454 in ?? ()
#13 0x00000000006cfee9 in ?? ()
#14 0x00000000006cfd1e in ?? ()
#15 0x00000000006ceeac in Py_RunMain ()
#16 0x000000000069caa9 in Py_BytesMain ()
#17 0x00007f1c6e787f75 in ?? () from target:<path>
#18 0x00007ffd14a827e8 in ?? ()
#19 0x000000000069ca70 in ?? ()
#20 0x000000056eaef000 in ?? ()
#21 0x00007ffd14a827e8 in ?? ()
#22 0x0000000000000000 in ?? ()
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3.13` running `/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with high reported CPU, but the captured syscall excerpt shows a one-second `poll()` timeout followed by `wait4(..., WNOHANG)` returning `ECHILD`. The process state was `S (sleeping)`, and the raw artifact files referenced by `evidence.json` are not available in this workspace. This looks like an application event loop signal, not yet a demonstrated CPython runtime defect.

## Evidence Confidence
observed

## Proposed Subject
No CPython source patch in this pass. Prepare a no-patch upstream-style diagnosis unless an independent, bounded reproducer can show CPython itself incorrectly spins in `select.poll()`, `os.wait4()`, or thread teardown.

## Patch Plan
- Start from the application entrypoint evidence: `python3 /usr/bin/supervisord ...`, not `pthread_attr_destroy()` or `PyMem_Realloc()` alone.
- Treat the current backtrace as weak: it lacks useful symbols and conflicts with the syscall/process-state evidence showing timed blocking.
- Do not add awkward control flow or speculative throttling around CPython’s `select.poll()` or `os.wait4()` wrappers. Nearby code already uses CPython conventions: `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, EINTR retry with `PyErr_CheckSignals()`, `_PyDeadline_Init()` / `_PyDeadline_Get()` for poll timeouts, and `posix_error()` for errno reporting.
- No prior Fixer patch was found in the workspace or Debian patch series for this issue.
- If later evidence proves a CPython bug, patch only the implicated wrapper or runtime helper and follow the local helper conventions above; otherwise report that the observed loop is consistent with supervisord polling once per second with no children.

## Risks
- A source patch based only on this evidence would likely misattribute supervisord behavior to CPython.
- Adding sleeps or suppressing `ECHILD` in CPython would change documented `os.wait4()` behavior and could break legitimate callers.
- The 3-second profile and missing raw artifacts are too thin to distinguish real runaway CPU from sampling or attribution noise.

## Validation
- First try the project-level entrypoint from the workspace root: `./configure && make`.
- If that fails due to missing Debian build dependencies or generated files, record the exact failure and then run the narrowest relevant compile, likely rebuilding `Modules/selectmodule.o`, `Modules/posixmodule.o`, or `Python/thread.o` depending on any later patch target.
- Bounded independent reproduction attempt before editing: run a short Python script that performs repeated `select.poll().poll(1000)` and `os.wait4(-1, os.WNOHANG)` with no children, then confirm it blocks about one second per loop and does not consume runaway CPU. If that cannot reproduce the failure, final `## Issue Connection` should state the failure was observed by Fixer and not independently reproduced.

## Patch Pass



## Workflow Note

{"type":"item.completed","item":{"id":"item_16","type":"agent_message","text":"The project-level command completed with exit code 0, though the build reported optional module issues: `_ssl` failed to import with undefined symbol `TLSv1_method`, and `_dbm`, `_gdbm`, `_tkinter` were missing. I’m doing a final tree check now; there are build artifacts from validation, but no source patch was made because the evidence does not support a CPython change. \n"}}
{"type":"error","message":"Reconnecting... 1/5 (stream disconnected before completion: Transport error: network error: error decoding response body)"}
{"type":"error","message":"Reconnecting... 2/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"}
{"type":"error","message":"Reconnecting... 3/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"}
{"type":"error","message":"Reconnecting... 4/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"}
{"type":"error","message":"Reconnecting... 5/5 (stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses))"}
{"type":"error","message":"stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses)"}
{"type":"turn.failed","error":{"message":"stream disconnected before completion: error sending request for url (http://127.0.0.1:2455/backend-api/codex/responses)"}}

Diff

--- a/Makefile.pre	1970-01-01 04:00:00.000000000 +0400
+++ b/Makefile.pre	2026-05-12 13:28:53.690365075 +0400
@@ -0,0 +1,3297 @@
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=    _MODBUILT_NAMES_
+MODSHARED_NAMES=   _MODSHARED_NAMES_
+MODDISABLED_NAMES= _MODDISABLED_NAMES_
+MODOBJS=           _MODOBJS_
+MODLIBS=           _MODLIBS_
+
+# === Variables set by configure
+VERSION=	3.13
+srcdir=		.
+
+abs_srcdir=	b
+abs_builddir=	b
+
+
+CC=		gcc
+CXX=		g++
+LINKCC=		$(PURIFY) $(CC)
+AR=		ar
+READELF=	@READELF@
+SOABI=		cpython-313-x86_64-linux-gnu
+ABIFLAGS=	
+ABI_THREAD=	
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=
+GITVERSION=	git --git-dir $(srcdir)/.git rev-parse --short HEAD
+GITTAG=		git --git-dir $(srcdir)/.git describe --all --always --dirty
+GITBRANCH=	git --git-dir $(srcdir)/.git name-rev --name-only HEAD
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+DSYMUTIL=       
+DSYMUTIL_PATH=  
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh -e
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -O3 -Wall
+BASECFLAGS=	 -fno-strict-overflow -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+# LDFLAGS_NOLTO is an extra flag to disable lto. It is used to speed up building
+# of _bootstrap_python and _freeze_module tools, which don't need LTO.
+CONFIGURE_LDFLAGS_NOLTO=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+PLATLIBDIR=	lib
+SCRIPTDIR=	$(prefix)/$(PLATLIBDIR)
+# executable name for shebangs
+EXENAME=	$(BINDIR)/python$(LDVERSION)$(EXE)
+# Variable used by ensurepip
+WHEEL_PKG_DIR=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)$(ABI_THREAD)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)$(ABI_THREAD)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-313-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared $(PY_LDFLAGS)
+DESTSHARED=	$(LIBDEST)/lib-dynload
+
+# List of exported symbols for AIX
+EXPORTSYMS=	
+EXPORTSFROM=	
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Name of the patch file to apply for app store compliance
+APP_STORE_COMPLIANCE_PATCH=
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= 
+RESSRCDIR= 
+# macOS deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# iOS Deployment target selected during configure. Unlike macOS, the iOS
+# deployment target is controlled using `-mios-version-min` arguments added to
+# CFLAGS and LDFLAGS by the configure script. This variable is not used during
+# the build, and is only listed here so it will be included in sysconfigdata.
+IPHONEOS_DEPLOYMENT_TARGET=
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Flags to lipo to produce an intel-64-only universal executable
+LIPO_INTEL64_FLAGS=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      upgrade
+
+# Internal static libraries
+LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
+LIBEXPAT_A= Modules/expat/libexpat.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
+
+# Module state, compiler flags and linker flags
+# Empty CFLAGS and LDFLAGS are omitted.
+# states:
+#   * yes: module is available
+#   * missing: build dependency is missing
+#   * disabled: module is disabled
+#   * n/a: module is not available on the current platform
+# MODULE_EGG_STATE=yes  # yes, missing, disabled, n/a
+# MODULE_EGG_CFLAGS=
+# MODULE_EGG_LDFLAGS=
+MODULE__IO_STATE=yes
+MODULE__IO_CFLAGS=-I$(srcdir)/Modules/_io
+MODULE_TIME_STATE=yes
+MODULE_TIME_LDFLAGS=
+MODULE_ARRAY_STATE=yes
+MODULE__ASYNCIO_STATE=yes
+MODULE__BISECT_STATE=yes
+MODULE__CONTEXTVARS_STATE=yes
+MODULE__CSV_STATE=yes
+MODULE__HEAPQ_STATE=yes
+MODULE__JSON_STATE=yes
+MODULE__LSPROF_STATE=yes
+MODULE__OPCODE_STATE=yes
+MODULE__PICKLE_STATE=yes
+MODULE__POSIXSUBPROCESS_STATE=yes
+MODULE__QUEUE_STATE=yes
+MODULE__RANDOM_STATE=yes
+MODULE_SELECT_STATE=yes
+MODULE__STRUCT_STATE=yes
+MODULE__TYPING_STATE=yes
+MODULE__INTERPRETERS_STATE=yes
+MODULE__INTERPCHANNELS_STATE=yes
+MODULE__INTERPQUEUES_STATE=yes
+MODULE__ZONEINFO_STATE=yes
+MODULE__MULTIPROCESSING_STATE=yes
+MODULE__MULTIPROCESSING_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_STATE=yes
+MODULE__POSIXSHMEM_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_LDFLAGS=
+MODULE__STATISTICS_STATE=yes
+MODULE__STATISTICS_LDFLAGS=-lm
+MODULE_CMATH_STATE=yes
+MODULE_CMATH_LDFLAGS=-lm
+MODULE_MATH_STATE=yes
+MODULE_MATH_LDFLAGS=-lm
+MODULE__DATETIME_STATE=yes
+MODULE__DATETIME_LDFLAGS= -lm
+MODULE_FCNTL_STATE=yes
+MODULE_FCNTL_LDFLAGS=
+MODULE_MMAP_STATE=yes
+MODULE__SOCKET_STATE=yes
+MODULE_GRP_STATE=yes
+MODULE_PWD_STATE=yes
+MODULE_RESOURCE_STATE=yes
+MODULE__SCPROXY_STATE=n/a
+MODULE_SYSLOG_STATE=yes
+MODULE_TERMIOS_STATE=yes
+MODULE_PYEXPAT_STATE=yes
+MODULE_PYEXPAT_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE_PYEXPAT_LDFLAGS=-lm $(LIBEXPAT_A)
+MODULE__ELEMENTTREE_STATE=yes
+MODULE__ELEMENTTREE_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE__CODECS_CN_STATE=yes
+MODULE__CODECS_HK_STATE=yes
+MODULE__CODECS_ISO2022_STATE=yes
+MODULE__CODECS_JP_STATE=yes
+MODULE__CODECS_KR_STATE=yes
+MODULE__CODECS_TW_STATE=yes
+MODULE__MULTIBYTECODEC_STATE=yes
+MODULE_UNICODEDATA_STATE=yes
+MODULE__MD5_STATE=yes
+MODULE__MD5_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA1_STATE=yes
+MODULE__SHA1_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA2_STATE=yes
+MODULE__SHA2_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA3_STATE=yes
+MODULE__BLAKE2_STATE=yes
+MODULE__BLAKE2_CFLAGS=
+MODULE__BLAKE2_LDFLAGS=
+MODULE__CTYPES_STATE=yes
+MODULE__CTYPES_CFLAGS=-fno-strict-overflow 
+MODULE__CTYPES_LDFLAGS=-lffi -ldl
+MODULE__CURSES_STATE=yes
+MODULE__CURSES_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE__CURSES_LDFLAGS=-lncursesw -ltinfo
+
+MODULE__CURSES_PANEL_STATE=yes
+MODULE__CURSES_PANEL_CFLAGS=-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE 
+MODULE__CURSES_PANEL_LDFLAGS=-lpanelw -lncursesw -ltinfo
+
+MODULE__DECIMAL_STATE=yes
+MODULE__DECIMAL_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1
+MODULE__DECIMAL_LDFLAGS=-lm $(LIBMPDEC_A)
+MODULE__DBM_STATE=missing
+MODULE__GDBM_STATE=missing
+MODULE_READLINE_STATE=yes
+MODULE_READLINE_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE_READLINE_LDFLAGS=-lreadline
+MODULE__SQLITE3_STATE=yes
+MODULE__SQLITE3_CFLAGS= -I$(srcdir)/Modules/_sqlite
+MODULE__SQLITE3_LDFLAGS=-lsqlite3
+MODULE__TKINTER_STATE=missing
+MODULE__UUID_STATE=yes
+MODULE__UUID_CFLAGS=-I/usr/include/uuid
+MODULE__UUID_LDFLAGS=-luuid
+MODULE_ZLIB_STATE=yes
+MODULE_ZLIB_CFLAGS=
+MODULE_ZLIB_LDFLAGS=-lz
+MODULE_BINASCII_STATE=yes
+MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 
+MODULE_BINASCII_LDFLAGS=-lz
+MODULE__BZ2_STATE=yes
+MODULE__BZ2_CFLAGS=
+MODULE__BZ2_LDFLAGS=-lbz2
+MODULE__LZMA_STATE=yes
+MODULE__LZMA_CFLAGS=
+MODULE__LZMA_LDFLAGS=-llzma
+MODULE__SSL_STATE=yes
+MODULE__SSL_CFLAGS=
+MODULE__SSL_LDFLAGS=  -lssl -lcrypto
+MODULE__HASHLIB_STATE=yes
+MODULE__HASHLIB_CFLAGS=
+MODULE__HASHLIB_LDFLAGS=   -lcrypto
+MODULE__TESTCAPI_STATE=yes
+MODULE__TESTCAPI_LDFLAGS=
+MODULE__TESTCLINIC_STATE=yes
+MODULE__TESTCLINIC_LIMITED_STATE=yes
+MODULE__TESTLIMITEDCAPI_STATE=yes
+MODULE__TESTINTERNALCAPI_STATE=yes
+MODULE__TESTBUFFER_STATE=yes
+MODULE__TESTIMPORTMULTIPLE_STATE=yes
+MODULE__TESTMULTIPHASE_STATE=yes
+MODULE__TESTSINGLEPHASE_STATE=yes
+MODULE__TESTEXTERNALINSPECTION_STATE=yes
+MODULE_XXSUBTYPE_STATE=yes
+MODULE__XXTESTFUZZ_STATE=yes
+MODULE__CTYPES_TEST_STATE=yes
+MODULE__CTYPES_TEST_LDFLAGS=-lm
+MODULE_XXLIMITED_STATE=yes
+MODULE_XXLIMITED_35_STATE=yes
+
+
+# Default zoneinfo.TZPATH. Added here to expose it in sysconfig.get_config_var
+TZPATH=/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
+
+# If to install mimalloc headers
+INSTALL_MIMALLOC=yes
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	
+
+
+# Subdirectories with code
+SRCDIRS= 	  Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# assets for Emscripten browser builds
+WASM_ASSETS_DIR=.$(prefix)
+WASM_STDLIB=$(WASM_ASSETS_DIR)/lib/python$(VERSION)/os.py
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+LIBRARY_DEPS=	$(LIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+LINK_PYTHON_DEPS=$(LIBRARY_DEPS)
+PY_ENABLE_SHARED=	0
+STATIC_LIBPYTHON=	1
+
+
+LIBS=		-ldl 
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+HOSTRUNNER= 
+
+PYTHON_FOR_REGEN?=python3.13
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+# Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
+# external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
+PYTHON_FOR_BUILD_DEPS=$(BUILDPYTHON)
+
+# Single-platform builds use Programs/_freeze_module.c for bootstrapping and
+# ./_bootstrap_python Programs/_freeze_module.py for remaining modules
+# Cross builds use an external "build Python" for all modules.
+PYTHON_FOR_FREEZE=./_bootstrap_python
+FREEZE_MODULE_BOOTSTRAP=./Programs/_freeze_module
+FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
+FREEZE_MODULE=$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py
+FREEZE_MODULE_DEPS=_bootstrap_python $(srcdir)/Programs/_freeze_module.py
+
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo --timeout=$(TESTTIMEOUT)
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
+
+
+# === Definitions added by makesetup ===
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+	$(srcdir)/Include/internal/pycore_mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
+##########################################################################
+# Parser
+
+PEGEN_OBJS=		\
+		Parser/pegen.o \
+		Parser/pegen_errors.o \
+		Parser/action_helpers.o \
+		Parser/parser.o \
+		Parser/string_parser.o \
+		Parser/peg_api.o
+
+TOKENIZER_OBJS=		\
+		Parser/lexer/buffer.o \
+		Parser/lexer/lexer.o \
+		Parser/lexer/state.o \
+		Parser/tokenizer/file_tokenizer.o \
+		Parser/tokenizer/readline_tokenizer.o \
+		Parser/tokenizer/string_tokenizer.o \
+		Parser/tokenizer/utf8_tokenizer.o \
+		Parser/tokenizer/helpers.o
+
+PEGEN_HEADERS= \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Parser/pegen.h \
+		$(srcdir)/Parser/string_parser.h
+
+TOKENIZER_HEADERS= \
+		Parser/lexer/buffer.h \
+		Parser/lexer/lexer.h \
+		Parser/lexer/state.h \
+		Parser/tokenizer/tokenizer.h \
+		Parser/tokenizer/helpers.h
+
+POBJS=		\
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) $(PEGEN_OBJS) $(TOKENIZER_OBJS) Parser/myreadline.o
+
+PARSER_HEADERS= \
+		$(PEGEN_HEADERS) \
+		$(TOKENIZER_HEADERS)
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/Python-tokenize.o \
+		Python/asdl.o \
+		Python/assemble.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/brc.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/critical_section.o \
+		Python/crossinterp.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/flowgraph.o \
+		Python/frame.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/gc.o \
+		Python/gc_free_threading.o \
+		Python/gc_gil.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/ceval_gil.o \
+		Python/hamt.o \
+		Python/hashtable.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/interpconfig.o \
+		Python/instrumentation.o \
+		Python/instruction_sequence.o \
+		Python/intrinsics.o \
+		Python/jit.o \
+		Python/legacy_tracing.o \
+		Python/lock.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/object_stack.o \
+		Python/optimizer.o \
+		Python/optimizer_analysis.o \
+		Python/optimizer_symbols.o \
+		Python/parking_lot.o \
+		Python/pathconfig.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/qsbr.o \
+		Python/bootstrap_hash.o \
+		Python/specialize.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/tracemalloc.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/suggestions.o \
+		Python/perf_trampoline.o \
+		Python/perf_jit_trampoline.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS) \
+		
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genericaliasobject.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/typevarobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/unionobject.o \
+		Objects/weakrefobject.o \
+		Python/asm_trampoline.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Modules/getpath.o \
+		Python/frozen.o
+
+LINK_PYTHON_OBJS=$(LIBRARY_OBJS)
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/gc.o Python/import.o Python/sysmodule.o
+
+##########################################################################
+# decimal's libmpdec
+
+LIBMPDEC_OBJS= \
+		Modules/_decimal/libmpdec/basearith.o \
+		Modules/_decimal/libmpdec/constants.o \
+		Modules/_decimal/libmpdec/context.o \
+		Modules/_decimal/libmpdec/convolute.o \
+		Modules/_decimal/libmpdec/crt.o \
+		Modules/_decimal/libmpdec/difradix2.o \
+		Modules/_decimal/libmpdec/fnt.o \
+		Modules/_decimal/libmpdec/fourstep.o \
+		Modules/_decimal/libmpdec/io.o \
+		Modules/_decimal/libmpdec/mpalloc.o \
+		Modules/_decimal/libmpdec/mpdecimal.o \
+		Modules/_decimal/libmpdec/numbertheory.o \
+		Modules/_decimal/libmpdec/sixstep.o \
+		Modules/_decimal/libmpdec/transpose.o
+		# _decimal does not use signaling API
+		# Modules/_decimal/libmpdec/mpsignal.o
+
+LIBMPDEC_HEADERS= \
+		$(srcdir)/Modules/_decimal/libmpdec/basearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/bits.h \
+		$(srcdir)/Modules/_decimal/libmpdec/constants.h \
+		$(srcdir)/Modules/_decimal/libmpdec/convolute.h \
+		$(srcdir)/Modules/_decimal/libmpdec/crt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/difradix2.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fnt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fourstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/io.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpalloc.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpdecimal.h \
+		$(srcdir)/Modules/_decimal/libmpdec/numbertheory.h \
+		$(srcdir)/Modules/_decimal/libmpdec/sixstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/transpose.h \
+		$(srcdir)/Modules/_decimal/libmpdec/typearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/umodarith.h
+
+##########################################################################
+# pyexpat's expat library
+
+LIBEXPAT_OBJS= \
+		Modules/expat/xmlparse.o \
+		Modules/expat/xmlrole.o \
+		Modules/expat/xmltok.o
+
+LIBEXPAT_HEADERS= \
+		Modules/expat/ascii.h \
+		Modules/expat/asciitab.h \
+		Modules/expat/expat.h \
+		Modules/expat/expat_config.h \
+		Modules/expat/expat_external.h \
+		Modules/expat/iasciitab.h \
+		Modules/expat/internal.h \
+		Modules/expat/latin1tab.h \
+		Modules/expat/nametab.h \
+		Modules/expat/pyexpatns.h \
+		Modules/expat/siphash.h \
+		Modules/expat/utf8tab.h \
+		Modules/expat/xmlrole.h \
+		Modules/expat/xmltok.h \
+		Modules/expat/xmltok_impl.h \
+		Modules/expat/xmltok_impl.c \
+		Modules/expat/xmltok_ns.c
+
+##########################################################################
+# hashlib's HACL* library
+
+LIBHACL_SHA2_OBJS= \
+                Modules/_hacl/Hacl_Hash_SHA2.o
+
+LIBHACL_HEADERS= \
+                Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
+                Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h \
+                Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h \
+                Modules/_hacl/include/krml/internal/target.h \
+                Modules/_hacl/include/krml/lowstar_endianness.h \
+                Modules/_hacl/include/krml/types.h \
+		Modules/_hacl/Hacl_Streaming_Types.h \
+                Modules/_hacl/python_hacl_namespaces.h
+
+LIBHACL_SHA2_HEADERS= \
+                Modules/_hacl/Hacl_Hash_SHA2.h \
+                Modules/_hacl/internal/Hacl_Hash_SHA2.h \
+		$(LIBHACL_HEADERS)
+
+#########################################################################
+# Rules
+
+# Default target
+all:		build_all
+
+# First target in Makefile is implicit default. So .PHONY needs to come after
+# all.
+.PHONY: all
+
+# Provide quick help for common Makefile targets.
+.PHONY: help
+help:
+	@echo "Run 'make' to build the Python executable and extension modules"
+	@echo ""
+	@echo "or 'make <target>' where <target> is one of:"
+	@echo "  test         run the test suite"
+	@echo "  install      install built files"
+	@echo "  regen-all    regenerate a number of generated source files"
+	@echo "  clinic       run Argument Clinic over source files"
+	@echo ""
+	@echo "  clean        to remove build files"
+	@echo "  distclean    'clean' + remove other generated files (patch, exe, etc)"
+	@echo ""
+	@echo "  recheck      rerun configure with last cmdline options"
+	@echo "  reindent     reindent .py files in Lib directory"
+	@echo "  tags         build a tags file (useful for Emacs and other editors)"
+	@echo "  list-targets list all targets in the Makefile"
+
+# Display a full list of Makefile targets
+.PHONY: list-targets
+list-targets:
+	@grep -E '^[A-Za-z][-A-Za-z0-9]+:' Makefile | awk -F : '{print $$1}'
+
+.PHONY: build_all
+build_all:	check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \
+		gdbhooks Programs/_testembed scripts checksharedmods rundsymutil
+
+.PHONY: build_wasm
+build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \
+		python-config checksharedmods
+
+# Check that the source is clean when building out of source.
+.PHONY: check-clean-src
+check-clean-src:
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/$(BUILDPYTHON)" \
+	    -o -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \
+		echo "Try to run:" ; \
+		echo "  (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \
+		exit 1; \
+	fi
+
+# Check that the app store compliance patch can be applied (if configured).
+# This is checked as a dry-run against the original library sources;
+# the patch will be actually applied during the install phase.
+.PHONY: check-app-store-compliance
+check-app-store-compliance:
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		patch --dry-run --quiet --force --strip 1 --directory "$(abs_srcdir)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)"; \
+		echo "App store compliance patch can be applied."; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean-profile
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	@ # FIXME: can't run for a cross build
+	task="$(PROFILE_TASK)"; \
+	case "$$task" in \
+	*-s\ *) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  while [ -f $(abs_builddir)/build/pynexttest ]; do \
+	    $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  done;; \
+	*) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	esac || true
+	$(LLVM_PROF_MERGER)
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean-retain-profile
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+.PHONY: profile-opt
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# List of binaries that BOLT runs on.
+BOLT_BINARIES := $(BUILDPYTHON)
+
+BOLT_INSTRUMENT_FLAGS :=  -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1 
+BOLT_APPLY_FLAGS :=   -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1  -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot 
+
+.PHONY: clean-bolt
+clean-bolt:
+	# Profile data.
+	rm -f *.fdata
+	# Pristine binaries before BOLT optimization.
+	rm -f *.prebolt
+	# BOLT instrumented binaries.
+	rm -f *.bolt_inst
+
+profile-bolt-stamp: $(BUILDPYTHON)
+	# Ensure a pristine, pre-BOLT copy of the binary and no profile data from last run.
+	for bin in $(BOLT_BINARIES); do \
+	  prebolt="$${bin}.prebolt"; \
+	  if [ -e "$${prebolt}" ]; then \
+	    echo "Restoring pre-BOLT binary $${prebolt}"; \
+	    mv "$${bin}.prebolt" "$${bin}"; \
+	  fi; \
+	  cp "$${bin}" "$${prebolt}"; \
+	  rm -f $${bin}.bolt.*.fdata $${bin}.fdata; \
+	done
+	# Instrument each binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}" -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $${bin}.bolt) -o $${bin}.bolt_inst $(BOLT_INSTRUMENT_FLAGS); \
+	  mv "$${bin}.bolt_inst" "$${bin}"; \
+	done
+	# Run instrumented binaries to collect data.
+	$(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
+	# Merge all the data files together.
+	for bin in $(BOLT_BINARIES); do \
+	   $${bin}.*.fdata > "$${bin}.fdata"; \
+	  rm -f $${bin}.*.fdata; \
+	done
+	# Run bolt against the merged data to produce an optimized binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}.prebolt" -o "$${bin}.bolt" -data="$${bin}.fdata" $(BOLT_APPLY_FLAGS); \
+	  mv "$${bin}.bolt" "$${bin}"; \
+	done
+	touch $@
+
+.PHONY: bolt-opt
+bolt-opt:
+	$(MAKE) 
+	$(MAKE) profile-bolt-stamp
+
+# Compile and run with gcov
+.PHONY: coverage
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean
+	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
+
+.PHONY: coverage-lcov
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and frozen modules
+.PHONY: coverage-report
+coverage-report: regen-token regen-frozen
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY: clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --exclude Lib/test/clinic.test.c --srcdir $(srcdir)
+
+.PHONY: clinic-tests
+clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $(srcdir)/Lib/test/clinic.test.c
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(PYTHON_FOR_BUILD_DEPS)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	# AIX Linker don't support "-h" option
+	if test "$(MACHDEP)" != "aix"; then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+	if test $(INSTSONAME) != $@; then \
+		$(LN) -f $(INSTSONAME) $@; \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# List of exported symbols for AIX
+Modules/python.exp: $(LIBRARY)
+	$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+.PHONY: gdbhooks
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule is for iOS, which requires an annoyingly just slightly different
+# format for frameworks to macOS. It *doesn't* use a versioned framework, and
+# the Info.plist must be in the root of the framework.
+$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(PYTHONFRAMEWORKDIR)/Info.plist
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+# wasm32-emscripten browser build
+# wasm assets directory is relative to current build dir, e.g. "./usr/local".
+# --preload-file turns a relative asset path into an absolute path.
+
+.PHONY: wasm_stdlib
+wasm_stdlib: $(WASM_STDLIB)
+$(WASM_STDLIB): $(srcdir)/Lib/*.py $(srcdir)/Lib/*/*.py \
+	    $(srcdir)/Tools/wasm/wasm_assets.py \
+	    Makefile pybuilddir.txt Modules/Setup.local
+	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/wasm/wasm_assets.py \
+	    --buildroot . --prefix $(prefix)
+
+python.html: $(srcdir)/Tools/wasm/python.html python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.html $@
+
+python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.worker.js $@
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/critical_section.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/exports.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/genericaliasobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/lock.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/monitoring.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/opcode_ids.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/pyatomic.h \
+		$(srcdir)/Include/pybuffer.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyexpat.h \
+		$(srcdir)/Include/pyframe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystats.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytypedefs.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/typeslots.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/bytearrayobject.h \
+		$(srcdir)/Include/cpython/bytesobject.h \
+		$(srcdir)/Include/cpython/cellobject.h \
+		$(srcdir)/Include/cpython/ceval.h \
+		$(srcdir)/Include/cpython/classobject.h \
+		$(srcdir)/Include/cpython/code.h \
+		$(srcdir)/Include/cpython/compile.h \
+		$(srcdir)/Include/cpython/complexobject.h \
+		$(srcdir)/Include/cpython/context.h \
+		$(srcdir)/Include/cpython/critical_section.h \
+		$(srcdir)/Include/cpython/descrobject.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/fileutils.h \
+		$(srcdir)/Include/cpython/floatobject.h \
+		$(srcdir)/Include/cpython/frameobject.h \
+		$(srcdir)/Include/cpython/funcobject.h \
+		$(srcdir)/Include/cpython/genobject.h \
+		$(srcdir)/Include/cpython/import.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/listobject.h \
+		$(srcdir)/Include/cpython/lock.h \
+		$(srcdir)/Include/cpython/longintrepr.h \
+		$(srcdir)/Include/cpython/longobject.h \
+		$(srcdir)/Include/cpython/memoryobject.h \
+		$(srcdir)/Include/cpython/methodobject.h \
+		$(srcdir)/Include/cpython/modsupport.h \
+		$(srcdir)/Include/cpython/monitoring.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/odictobject.h \
+		$(srcdir)/Include/cpython/picklebufobject.h \
+		$(srcdir)/Include/cpython/pthread_stubs.h \
+		$(srcdir)/Include/cpython/pyatomic.h \
+		$(srcdir)/Include/cpython/pyatomic_gcc.h \
+		$(srcdir)/Include/cpython/pyatomic_std.h \
+		$(srcdir)/Include/cpython/pyctype.h \
+		$(srcdir)/Include/cpython/pydebug.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pyfpe.h \
+		$(srcdir)/Include/cpython/pyframe.h \
+		$(srcdir)/Include/cpython/pyhash.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/pystats.h \
+		$(srcdir)/Include/cpython/pythonrun.h \
+		$(srcdir)/Include/cpython/pythread.h \
+		$(srcdir)/Include/cpython/setobject.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tracemalloc.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		$(srcdir)/Include/cpython/warnings.h \
+		$(srcdir)/Include/cpython/weakrefobject.h \
+		\
+		$(MIMALLOC_HEADERS) \
+		\
+		$(srcdir)/Include/internal/pycore_abstract.h \
+		$(srcdir)/Include/internal/pycore_asdl.h \
+		$(srcdir)/Include/internal/pycore_ast.h \
+		$(srcdir)/Include/internal/pycore_ast_state.h \
+		$(srcdir)/Include/internal/pycore_atexit.h \
+		$(srcdir)/Include/internal/pycore_backoff.h \
+		$(srcdir)/Include/internal/pycore_bitutils.h \
+		$(srcdir)/Include/internal/pycore_blocks_output_buffer.h \
+		$(srcdir)/Include/internal/pycore_brc.h \
+		$(srcdir)/Include/internal/pycore_bytes_methods.h \
+		$(srcdir)/Include/internal/pycore_bytesobject.h \
+		$(srcdir)/Include/internal/pycore_call.h \
+		$(srcdir)/Include/internal/pycore_capsule.h \
+		$(srcdir)/Include/internal/pycore_cell.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_ceval_state.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_codecs.h \
+		$(srcdir)/Include/internal/pycore_compile.h \
+		$(srcdir)/Include/internal/pycore_complexobject.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_critical_section.h \
+		$(srcdir)/Include/internal/pycore_crossinterp.h \
+		$(srcdir)/Include/internal/pycore_descrobject.h \
+		$(srcdir)/Include/internal/pycore_dict.h \
+		$(srcdir)/Include/internal/pycore_dict_state.h \
+		$(srcdir)/Include/internal/pycore_dtoa.h \
+		$(srcdir)/Include/internal/pycore_exceptions.h \
+		$(srcdir)/Include/internal/pycore_faulthandler.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_floatobject.h \
+		$(srcdir)/Include/internal/pycore_flowgraph.h \
+		$(srcdir)/Include/internal/pycore_format.h \
+		$(srcdir)/Include/internal/pycore_frame.h \
+		$(srcdir)/Include/internal/pycore_freelist.h \
+		$(srcdir)/Include/internal/pycore_function.h \
+		$(srcdir)/Include/internal/pycore_gc.h \
+		$(srcdir)/Include/internal/pycore_genobject.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_global_objects.h \
+		$(srcdir)/Include/internal/pycore_global_objects_fini_generated.h \
+		$(srcdir)/Include/internal/pycore_global_strings.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_hashtable.h \
+		$(srcdir)/Include/internal/pycore_identifier.h \
+		$(srcdir)/Include/internal/pycore_import.h \
+		$(srcdir)/Include/internal/pycore_importdl.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_instruments.h \
+		$(srcdir)/Include/internal/pycore_instruction_sequence.h \
+		$(srcdir)/Include/internal/pycore_interp.h \
+		$(srcdir)/Include/internal/pycore_intrinsics.h \
+		$(srcdir)/Include/internal/pycore_jit.h \
+		$(srcdir)/Include/internal/pycore_list.h \
+		$(srcdir)/Include/internal/pycore_llist.h \
+		$(srcdir)/Include/internal/pycore_lock.h \
+		$(srcdir)/Include/internal/pycore_long.h \
+		$(srcdir)/Include/internal/pycore_memoryobject.h \
+		$(srcdir)/Include/internal/pycore_mimalloc.h \
+		$(srcdir)/Include/internal/pycore_modsupport.h \
+		$(srcdir)/Include/internal/pycore_moduleobject.h \
+		$(srcdir)/Include/internal/pycore_namespace.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_object_alloc.h \
+		$(srcdir)/Include/internal/pycore_object_stack.h \
+		$(srcdir)/Include/internal/pycore_object_state.h \
+		$(srcdir)/Include/internal/pycore_obmalloc.h \
+		$(srcdir)/Include/internal/pycore_obmalloc_init.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_opcode_utils.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Include/internal/pycore_parking_lot.h \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyarena.h \
+		$(srcdir)/Include/internal/pycore_pyatomic_ft_wrappers.h \
+		$(srcdir)/Include/internal/pycore_pybuffer.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymath.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pymem_init.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_pystats.h \
+		$(srcdir)/Include/internal/pycore_pythonrun.h \
+		$(srcdir)/Include/internal/pycore_pythread.h \
+		$(srcdir)/Include/internal/pycore_qsbr.h \
+		$(srcdir)/Include/internal/pycore_range.h \
+		$(srcdir)/Include/internal/pycore_runtime.h \
+		$(srcdir)/Include/internal/pycore_runtime_init.h \
+		$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
+		$(srcdir)/Include/internal/pycore_semaphore.h \
+		$(srcdir)/Include/internal/pycore_setobject.h \
+		$(srcdir)/Include/internal/pycore_signal.h \
+		$(srcdir)/Include/internal/pycore_sliceobject.h \
+		$(srcdir)/Include/internal/pycore_strhex.h \
+		$(srcdir)/Include/internal/pycore_structseq.h \
+		$(srcdir)/Include/internal/pycore_symtable.h \
+		$(srcdir)/Include/internal/pycore_sysmodule.h \
+		$(srcdir)/Include/internal/pycore_stackref.h \
+		$(srcdir)/Include/internal/pycore_time.h \
+		$(srcdir)/Include/internal/pycore_token.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tracemalloc.h \
+		$(srcdir)/Include/internal/pycore_tstate.h \
+		$(srcdir)/Include/internal/pycore_tuple.h \
+		$(srcdir)/Include/internal/pycore_typeobject.h \
+		$(srcdir)/Include/internal/pycore_typevarobject.h \
+		$(srcdir)/Include/internal/pycore_ucnhash.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject_generated.h \
+		$(srcdir)/Include/internal/pycore_unionobject.h \
+		$(srcdir)/Include/internal/pycore_uop_ids.h \
+		$(srcdir)/Include/internal/pycore_uop_metadata.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(srcdir)/Include/internal/pycore_weakref.h \
+		$(DTRACE_HEADERS) \
+		 \
+		\
+		$(srcdir)/Python/stdlib_module_names.h
+
+##########################################################################
+# Build static libmpdec.a
+LIBMPDEC_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+# "%.o: %c" is not portable
+Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c
+
+Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c
+
+Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c
+
+Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c
+
+Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c
+
+Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c
+
+Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c
+
+Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c
+
+Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c
+
+Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c
+
+Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c
+
+Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c
+
+Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c
+
+Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c
+
+Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c
+
+$(LIBMPDEC_A): $(LIBMPDEC_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS)
+
+##########################################################################
+# Build static libexpat.a
+LIBEXPAT_CFLAGS=-I$(srcdir)/Modules/expat $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c
+
+Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c
+
+Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c
+
+$(LIBEXPAT_A): $(LIBEXPAT_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
+
+##########################################################################
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
+LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+	$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
+
+$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS)
+
+# create relative links from build/lib.platform/egg.so to Modules/egg.so
+# pybuilddir.txt is created too late. We cannot use it in Makefile
+# targets. ln --relative is not portable.
+.PHONY: sharedmods
+sharedmods: $(SHAREDMODS) pybuilddir.txt
+	@target=`cat pybuilddir.txt`; \
+	$(MKDIR_P) $$target; \
+	for mod in X $(SHAREDMODS); do \
+		if test $$mod != X; then \
+			$(LN) -sf ../../$$mod $$target/`basename $$mod`; \
+		fi; \
+	done
+
+# dependency on BUILDPYTHON ensures that the target is run last
+.PHONY: checksharedmods
+checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
+
+.PHONY: rundsymutil
+rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@if [ ! -z $(DSYMUTIL) ] ; then \
+		echo $(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		$(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		if test -f $(LDLIBRARY); then \
+			echo $(DSYMUTIL_PATH) $(LDLIBRARY); \
+			$(DSYMUTIL_PATH) $(LDLIBRARY); \
+		fi; \
+		for mod in X $(SHAREDMODS); do \
+			if test $$mod != X; then \
+				echo $(DSYMUTIL_PATH) $$mod; \
+				$(DSYMUTIL_PATH) $$mod; \
+			fi; \
+		done \
+	fi
+
+Modules/Setup.local:
+	@# Create empty Setup.local when file was deleted by user
+	echo "# Edit this file for local setup changes" > $@
+
+Modules/Setup.bootstrap: $(srcdir)/Modules/Setup.bootstrap.in config.status
+	./config.status $@
+
+Modules/Setup.stdlib: $(srcdir)/Modules/Setup.stdlib.in config.status
+	./config.status $@
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local \
+				Modules/Setup.bootstrap \
+				Modules/Setup.stdlib
+	$(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				Modules/Setup.stdlib \
+				Modules/Setup.bootstrap \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+.PHONY: regen-test-frozenmain
+regen-test-frozenmain: $(BUILDPYTHON)
+	# Regenerate Programs/test_frozenmain.h
+	# from Programs/test_frozenmain.py
+	# using Programs/freeze_test_frozenmain.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h
+
+.PHONY: regen-test-levenshtein
+regen-test-levenshtein:
+	# Regenerate Lib/test/levenshtein_examples.json
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py $(srcdir)/Lib/test/levenshtein_examples.json
+
+.PHONY: regen-re
+regen-re: $(BUILDPYTHON)
+	# Regenerate Lib/re/_casefix.py
+	# using Tools/build/generate_re_casefix.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+
+Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# "Bootstrap Python" used to run Programs/_freeze_module.py
+
+BOOTSTRAP_HEADERS = \
+	Python/frozen_modules/importlib._bootstrap.h \
+	Python/frozen_modules/importlib._bootstrap_external.h \
+	Python/frozen_modules/zipimport.h
+
+Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS)
+
+_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local
+	$(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \
+		Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+
+############################################################################
+# frozen modules (including importlib)
+#
+# Freezing is a multi step process. It works differently for standard builds
+# and cross builds. Standard builds use Programs/_freeze_module and
+# _bootstrap_python for freezing, so users can build Python
+# without an existing Python installation. Cross builds cannot execute
+# compiled binaries and therefore rely on an external build Python
+# interpreter. The build interpreter must have same version and same bytecode
+# as the host (target) binary.
+#
+# Standard build process:
+# 1) compile minimal core objects for Py_Compile*() and PyMarshal_Write*().
+# 2) build Programs/_freeze_module binary.
+# 3) create frozen module headers for importlib and getpath.
+# 4) build _bootstrap_python binary.
+# 5) create remaining frozen module headers with
+#    ``./_bootstrap_python Programs/_freeze_module.py``. The pure Python
+#    script is used to test the cross compile code path.
+#
+# Cross compile process:
+# 1) create all frozen module headers with external build Python and
+#    Programs/_freeze_module.py script.
+#
+
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
+FROZEN_FILES_IN = \
+		Lib/importlib/_bootstrap.py \
+		Lib/importlib/_bootstrap_external.py \
+		Lib/zipimport.py \
+		Lib/abc.py \
+		Lib/codecs.py \
+		Lib/io.py \
+		Lib/_collections_abc.py \
+		Lib/_sitebuiltins.py \
+		Lib/genericpath.py \
+		Lib/ntpath.py \
+		Lib/posixpath.py \
+		Lib/os.py \
+		Lib/site.py \
+		Lib/stat.py \
+		Lib/importlib/util.py \
+		Lib/importlib/machinery.py \
+		Lib/runpy.py \
+		Lib/__hello__.py \
+		Lib/__phello__/__init__.py \
+		Lib/__phello__/ham/__init__.py \
+		Lib/__phello__/ham/eggs.py \
+		Lib/__phello__/spam.py \
+		Tools/freeze/flag.py
+# End FROZEN_FILES_IN
+FROZEN_FILES_OUT = \
+		Python/frozen_modules/importlib._bootstrap.h \
+		Python/frozen_modules/importlib._bootstrap_external.h \
+		Python/frozen_modules/zipimport.h \
+		Python/frozen_modules/abc.h \
+		Python/frozen_modules/codecs.h \
+		Python/frozen_modules/io.h \
+		Python/frozen_modules/_collections_abc.h \
+		Python/frozen_modules/_sitebuiltins.h \
+		Python/frozen_modules/genericpath.h \
+		Python/frozen_modules/ntpath.h \
+		Python/frozen_modules/posixpath.h \
+		Python/frozen_modules/os.h \
+		Python/frozen_modules/site.h \
+		Python/frozen_modules/stat.h \
+		Python/frozen_modules/importlib.util.h \
+		Python/frozen_modules/importlib.machinery.h \
+		Python/frozen_modules/runpy.h \
+		Python/frozen_modules/__hello__.h \
+		Python/frozen_modules/__phello__.h \
+		Python/frozen_modules/__phello__.ham.h \
+		Python/frozen_modules/__phello__.ham.eggs.h \
+		Python/frozen_modules/__phello__.spam.h \
+		Python/frozen_modules/frozen_only.h
+# End FROZEN_FILES_OUT
+
+Programs/_freeze_module.o: Programs/_freeze_module.c Makefile
+
+Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile
+
+Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+# We manually freeze getpath.py rather than through freeze_modules
+Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) getpath $(srcdir)/Modules/getpath.py Python/frozen_modules/getpath.h
+
+# BEGIN: freezing modules
+
+Python/frozen_modules/importlib._bootstrap.h: Lib/importlib/_bootstrap.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap $(srcdir)/Lib/importlib/_bootstrap.py Python/frozen_modules/importlib._bootstrap.h
+
+Python/frozen_modules/importlib._bootstrap_external.h: Lib/importlib/_bootstrap_external.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap_external $(srcdir)/Lib/importlib/_bootstrap_external.py Python/frozen_modules/importlib._bootstrap_external.h
+
+Python/frozen_modules/zipimport.h: Lib/zipimport.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) zipimport $(srcdir)/Lib/zipimport.py Python/frozen_modules/zipimport.h
+
+Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) abc $(srcdir)/Lib/abc.py Python/frozen_modules/abc.h
+
+Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
+
+Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
+
+Python/frozen_modules/_collections_abc.h: Lib/_collections_abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _collections_abc $(srcdir)/Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
+
+Python/frozen_modules/_sitebuiltins.h: Lib/_sitebuiltins.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _sitebuiltins $(srcdir)/Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
+
+Python/frozen_modules/genericpath.h: Lib/genericpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) genericpath $(srcdir)/Lib/genericpath.py Python/frozen_modules/genericpath.h
+
+Python/frozen_modules/ntpath.h: Lib/ntpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) ntpath $(srcdir)/Lib/ntpath.py Python/frozen_modules/ntpath.h
+
+Python/frozen_modules/posixpath.h: Lib/posixpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) posixpath $(srcdir)/Lib/posixpath.py Python/frozen_modules/posixpath.h
+
+Python/frozen_modules/os.h: Lib/os.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) os $(srcdir)/Lib/os.py Python/frozen_modules/os.h
+
+Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) site $(srcdir)/Lib/site.py Python/frozen_modules/site.h
+
+Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
+
+Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
+
+Python/frozen_modules/importlib.machinery.h: Lib/importlib/machinery.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.machinery $(srcdir)/Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
+
+Python/frozen_modules/runpy.h: Lib/runpy.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) runpy $(srcdir)/Lib/runpy.py Python/frozen_modules/runpy.h
+
+Python/frozen_modules/__hello__.h: Lib/__hello__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __hello__ $(srcdir)/Lib/__hello__.py Python/frozen_modules/__hello__.h
+
+Python/frozen_modules/__phello__.h: Lib/__phello__/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__ $(srcdir)/Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
+
+Python/frozen_modules/__phello__.ham.h: Lib/__phello__/ham/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham $(srcdir)/Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
+
+Python/frozen_modules/__phello__.ham.eggs.h: Lib/__phello__/ham/eggs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham.eggs $(srcdir)/Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
+
+Python/frozen_modules/__phello__.spam.h: Lib/__phello__/spam.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.spam $(srcdir)/Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
+
+Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) frozen_only $(srcdir)/Tools/freeze/flag.py Python/frozen_modules/frozen_only.h
+
+# END: freezing modules
+
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
+
+.PHONY: regen-frozen
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py --frozen-modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+# We keep this renamed target around for folks with muscle memory.
+.PHONY: regen-importlib
+regen-importlib: regen-frozen
+
+############################################################################
+# Global objects
+
+# Dependencies which can add and/or remove _Py_ID() identifiers:
+# - "make clinic"
+.PHONY: regen-global-objects
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py clinic
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
+
+############################################################################
+# ABI
+
+.PHONY: regen-abidump
+regen-abidump: all
+	@$(MKDIR_P) $(srcdir)/Doc/data/
+	abidw "libpython$(LDVERSION).so" --no-architecture --out-file $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+	@$(UPDATE_FILE) --create $(srcdir)/Doc/data/python$(LDVERSION).abi $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+
+.PHONY: check-abidump
+check-abidump: all
+	abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
+
+.PHONY: regen-limited-abi
+regen-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+
+############################################################################
+# Regenerate Unicode Data
+
+.PHONY: regen-unicodedata
+regen-unicodedata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/unicode/makeunicodedata.py
+
+
+############################################################################
+# Regenerate all generated files
+
+# "clinic" is regenerated implicitly via "regen-global-objects".
+.PHONY: regen-all
+regen-all: regen-cases regen-typeslots \
+	regen-token regen-ast regen-keyword regen-sre regen-frozen \
+	regen-pegen-metaparser regen-pegen regen-test-frozenmain \
+	regen-test-levenshtein regen-global-objects
+	@echo
+	@echo "Note: make regen-stdlib-module-names, make regen-limited-abi, "
+	@echo "make regen-configure, make regen-sbom, and make regen-unicodedata should be run manually"
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-DPLATLIBDIR='"$(PLATLIBDIR)"' \
+		-DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h
+
+Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_common.h
+
+Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		$(if $(MULTIARCH),-DMULTIARCH='"$(MULTIARCH)"') \
+		-DSOABI='"$(SOABI)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-pegen-metaparser
+regen-pegen-metaparser:
+	@$(MKDIR_P) $(srcdir)/Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q python \
+	$(srcdir)/Tools/peg_generator/pegen/metagrammar.gram \
+	-o $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+	$(UPDATE_FILE) $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py \
+	$(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+
+.PHONY: regen-pegen
+regen-pegen:
+	@$(MKDIR_P) $(srcdir)/Parser
+	@$(MKDIR_P) $(srcdir)/Parser/tokenizer
+	@$(MKDIR_P) $(srcdir)/Parser/lexer
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q c \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		-o $(srcdir)/Parser/parser.c.new
+	$(UPDATE_FILE) $(srcdir)/Parser/parser.c $(srcdir)/Parser/parser.c.new
+
+.PHONY: regen-ast
+regen-ast:
+	# Regenerate 3 files using Parser/asdl_c.py:
+	# - Include/internal/pycore_ast.h
+	# - Include/internal/pycore_ast_state.h
+	# - Python/Python-ast.c
+	$(MKDIR_P) $(srcdir)/Include
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		$(srcdir)/Parser/Python.asdl \
+		-H $(srcdir)/Include/internal/pycore_ast.h.new \
+		-I $(srcdir)/Include/internal/pycore_ast_state.h.new \
+		-C $(srcdir)/Python/Python-ast.c.new
+
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast_state.h $(srcdir)/Include/internal/pycore_ast_state.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc \
+		$(srcdir)/Doc/library/token.rst
+	# Regenerate Include/internal/pycore_token.h from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/internal/pycore_token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/python.gram and Grammar/Tokens
+	# using Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen.keywordgen \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: all Programs/_testembed
+	# Regenerate Python/stdlib_module_names.h
+	# using Tools/build/generate_stdlib_module_names.py
+	$(RUNSHARED) ./$(BUILDPYTHON) \
+		$(srcdir)/Tools/build/generate_stdlib_module_names.py \
+		> $(srcdir)/Python/stdlib_module_names.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
+
+.PHONY: regen-sre
+regen-sre:
+	# Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
+	# from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
+		$(srcdir)/Lib/re/_constants.py \
+		$(srcdir)/Modules/_sre/sre_constants.h \
+		$(srcdir)/Modules/_sre/sre_targets.h
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+		$(srcdir)/Objects/mimalloc/alloc-aligned.c \
+		$(srcdir)/Objects/mimalloc/alloc-posix.c \
+		$(srcdir)/Objects/mimalloc/arena.c \
+		$(srcdir)/Objects/mimalloc/bitmap.c \
+		$(srcdir)/Objects/mimalloc/heap.c \
+		$(srcdir)/Objects/mimalloc/init.c \
+		$(srcdir)/Objects/mimalloc/options.c \
+		$(srcdir)/Objects/mimalloc/os.c \
+		$(srcdir)/Objects/mimalloc/page.c \
+		$(srcdir)/Objects/mimalloc/random.c \
+		$(srcdir)/Objects/mimalloc/segment.c \
+		$(srcdir)/Objects/mimalloc/segment-map.c \
+		$(srcdir)/Objects/mimalloc/stats.c \
+		$(srcdir)/Objects/mimalloc/prim/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/osx/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/unix/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/wasi/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
+
+
+# Regenerate various files from Python/bytecodes.c
+# Pass CASESFLAG=-l to insert #line directives in the output
+
+.PHONY: regen-cases
+regen-cases: \
+        regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
+		regen-generated-cases regen-executor-cases regen-optimizer-cases \
+		regen-opcode-metadata regen-uop-metadata
+
+.PHONY: regen-opcode-ids
+regen-opcode-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_id_generator.py \
+	    -o $(srcdir)/Include/opcode_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/opcode_ids.h $(srcdir)/Include/opcode_ids.h.new
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/target_generator.py \
+	    -o $(srcdir)/Python/opcode_targets.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+.PHONY: regen-uop-ids
+regen-uop-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_id_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_uop_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_ids.h $(srcdir)/Include/internal/pycore_uop_ids.h.new
+
+.PHONY: regen-opcode-metadata-py
+regen-opcode-metadata-py:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/py_metadata_generator.py \
+	    -o $(srcdir)/Lib/_opcode_metadata.py.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Lib/_opcode_metadata.py $(srcdir)/Lib/_opcode_metadata.py.new
+
+.PHONY: regen-generated-cases
+regen-generated-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier1_generator.py \
+	    -o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new
+
+.PHONY: regen-executor-cases
+regen-executor-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
+	    -o $(srcdir)/Python/executor_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/executor_cases.c.h $(srcdir)/Python/executor_cases.c.h.new
+
+.PHONY: regen-optimizer-cases
+regen-optimizer-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/optimizer_generator.py \
+	    -o $(srcdir)/Python/optimizer_cases.c.h.new \
+	    $(srcdir)/Python/optimizer_bytecodes.c \
+	    $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
+
+.PHONY: regen-opcode-metadata
+regen-opcode-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_opcode_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_opcode_metadata.h $(srcdir)/Include/internal/pycore_opcode_metadata.h.new
+
+.PHONY: regen-uop-metadata
+regen-uop-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_metadata_generator.py -o \
+	    $(srcdir)/Include/internal/pycore_uop_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_metadata.h $(srcdir)/Include/internal/pycore_uop_metadata.h.new
+
+Python/compile.o Python/assemble.o Python/flowgraph.o Python/instruction_sequence.o: \
+                $(srcdir)/Include/internal/pycore_compile.h \
+                $(srcdir)/Include/internal/pycore_flowgraph.h \
+                $(srcdir)/Include/internal/pycore_instruction_sequence.h \
+                $(srcdir)/Include/internal/pycore_opcode_metadata.h \
+                $(srcdir)/Include/internal/pycore_opcode_utils.h
+
+Python/ceval.o: \
+		$(srcdir)/Python/ceval_macros.h \
+		$(srcdir)/Python/condvar.h \
+		$(srcdir)/Python/generated_cases.c.h \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Python/opcode_targets.h
+
+Python/flowgraph.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h
+
+Python/optimizer.o: \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h
+
+Python/optimizer_analysis.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Python/optimizer_cases.c.h
+
+Python/frozen.o: $(FROZEN_FILES_OUT)
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/gc.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) -m test
+TESTTIMEOUT=
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+.PHONY: cleantest
+cleantest: all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+# Similar to buildbottest, but use --fast-ci option, instead of --slow-ci.
+.PHONY: test
+test: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+.PHONY: testuniversal
+testuniversal: all
+	@if [ `arch` != 'i386' ]; then \
+		echo "This can only be used on OSX/i386" ;\
+		exit 1 ;\
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+	$(RUNSHARED) /usr/libexec/oah/translate \
+		./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Run the test suite on the iOS simulator. Must be run on a macOS machine with
+# a full Xcode install that has an iPhone SE (3rd edition) simulator available.
+# This must be run *after* a `make install` has completed the build. The
+# `--with-framework-name` argument *cannot* be used when configuring the build.
+XCFOLDER:=iOSTestbed.$(MULTIARCH).$(shell date +%s).$$PPID
+.PHONY: testios
+testios:
+	@if test "$(MACHDEP)" != "ios"; then \
+		echo "Cannot run the iOS testbed for a non-iOS build."; \
+		exit 1;\
+	fi
+	@if test "$(findstring -iphonesimulator,$(MULTIARCH))" != "-iphonesimulator"; then \
+		echo "Cannot run the iOS testbed for non-simulator builds."; \
+		exit 1;\
+	fi
+	@if test $(PYTHONFRAMEWORK) != "Python"; then \
+		echo "Cannot run the iOS testbed with a non-default framework name."; \
+		exit 1;\
+	fi
+	@if ! test -d $(PYTHONFRAMEWORKPREFIX); then \
+		echo "Cannot find a finalized iOS Python.framework. Have you run 'make install' to finalize the framework build?"; \
+		exit 1;\
+	fi
+
+	# Clone the testbed project into the XCFOLDER
+	$(PYTHON_FOR_BUILD) $(srcdir)/iOS/testbed clone --framework $(PYTHONFRAMEWORKPREFIX) "$(XCFOLDER)"
+
+	# Run the testbed project
+	$(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W
+
+# Like test, but using --slow-ci which enables all test resources and use
+# longer timeout. Run an optional pybuildbot.identify script to include
+# information about the build environment.
+.PHONY: buildbottest
+buildbottest: all
+	-@if which pybuildbot.identify >/dev/null 2>&1; then \
+		pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+.PHONY: pythoninfo
+pythoninfo: all
+		$(RUNSHARED) $(HOSTRUNNER) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	-x test_subprocess test_io \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+
+.PHONY: quicktest
+quicktest: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile
+multisslcompile: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py --steps=modules
+
+.PHONY: multissltest
+multissltest: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
+.PHONY: install
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: altinstall
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: commoninstall
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall altmaninstall 
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+.PHONY: sharedinstall
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			if test -d "$$i.dSYM"; then \
+				echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+				$(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			fi; \
+		  fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+.PHONY: altbininstall
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	@if test "$(PY_ENABLE_SHARED)" = 1 -o "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+			if test -n "$(DLLLIBRARY)" ; then \
+				$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+			else \
+				$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+				if test $(LDLIBRARY) != $(INSTSONAME); then \
+					(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+				fi \
+			fi; \
+			if test -n "$(PY3LIBRARY)"; then \
+				$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+			fi; \
+		else	true; \
+		fi; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE); \
+		lipo $(LIPO_INTEL64_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	# Install macOS debug information (if available)
+	if test -d "$(BUILDPYTHON).dSYM"; then \
+		echo $(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+		$(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			$(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+		fi \
+	else \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+      $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+		fi \
+	fi
+
+.PHONY: bininstall
+# We depend on commoninstall here to make sure the installation is already usable
+# before we possibly overwrite the global 'python3' symlink to avoid causing
+# problems for anything else trying to run 'python3' while we install, particularly
+# if we're installing in parallel with -j.
+bininstall: commoninstall altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION).pc python-$(VERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION)-embed.pc python-$(VERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-intel64$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-intel64$(EXE) python3-intel64$(EXE)) \
+	fi
+
+# Install the versioned manual page
+.PHONY: altmaninstall
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+.PHONY: maninstall
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	asyncio \
+		collections \
+		concurrent concurrent/futures \
+		csv \
+		ctypes ctypes/macholib \
+		curses \
+		dbm \
+		email email/mime \
+		encodings \
+		ensurepip ensurepip/_bundled \
+		html \
+		http \
+		idlelib idlelib/Icons \
+		importlib importlib/resources importlib/metadata \
+		json \
+		logging \
+		multiprocessing multiprocessing/dummy \
+		pathlib \
+		pydoc_data \
+		re \
+		site-packages \
+		sqlite3 \
+		sysconfig \
+		tkinter \
+		tomllib \
+		turtledemo \
+		unittest \
+		urllib \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		wsgiref \
+		$(XMLLIBSUBDIRS) \
+		xmlrpc \
+		zipfile zipfile/_path \
+		zoneinfo \
+		_pyrepl \
+		__phello__
+TESTSUBDIRS=	idlelib/idle_test \
+		test \
+		test/test_ast \
+		test/archivetestdata \
+		test/audiodata \
+		test/certdata \
+		test/certdata/capath \
+		test/cjkencodings \
+		test/configdata \
+		test/crashers \
+		test/data \
+		test/decimaltestdata \
+		test/dtracedata \
+		test/encoded_modules \
+		test/leakers \
+		test/libregrtest \
+		test/mathdata \
+		test/regrtestdata \
+		test/regrtestdata/import_from_tests \
+		test/regrtestdata/import_from_tests/test_regrtest_b \
+		test/subprocessdata \
+		test/support \
+		test/support/_hypothesis_stubs \
+		test/support/interpreters \
+		test/test_asyncio \
+		test/test_capi \
+		test/test_cext \
+		test/test_concurrent_futures \
+		test/test_cppext \
+		test/test_ctypes \
+		test/test_dataclasses \
+		test/test_doctest \
+		test/test_email \
+		test/test_email/data \
+		test/test_free_threading \
+		test/test_future_stmt \
+		test/test_gdb \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/circular_imports/subpkg2 \
+		test/test_import/data/circular_imports/subpkg2/parent \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		test/test_import/data/package3 \
+		test/test_import/data/package4 \
+		test/test_import/data/unwritable \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/metadata \
+		test/test_importlib/metadata/data \
+		test/test_importlib/metadata/data/sources \
+		test/test_importlib/metadata/data/sources/example \
+		test/test_importlib/metadata/data/sources/example/example \
+		test/test_importlib/metadata/data/sources/example2 \
+		test/test_importlib/metadata/data/sources/example2/example2 \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/partial \
+		test/test_importlib/resources \
+		test/test_importlib/source \
+		test/test_inspect \
+		test/test_interpreters \
+		test/test_json \
+		test/test_module \
+		test/test_multiprocessing_fork \
+		test/test_multiprocessing_forkserver \
+		test/test_multiprocessing_spawn \
+		test/test_pathlib \
+		test/test_peg_generator \
+		test/test_pydoc \
+		test/test_pyrepl \
+		test/test_sqlite3 \
+		test/test_tkinter \
+		test/test_tomllib \
+		test/test_tomllib/data \
+		test/test_tomllib/data/invalid \
+		test/test_tomllib/data/invalid/array \
+		test/test_tomllib/data/invalid/array-of-tables \
+		test/test_tomllib/data/invalid/boolean \
+		test/test_tomllib/data/invalid/dates-and-times \
+		test/test_tomllib/data/invalid/dotted-keys \
+		test/test_tomllib/data/invalid/inline-table \
+		test/test_tomllib/data/invalid/keys-and-vals \
+		test/test_tomllib/data/invalid/literal-str \
+		test/test_tomllib/data/invalid/multiline-basic-str \
+		test/test_tomllib/data/invalid/multiline-literal-str \
+		test/test_tomllib/data/invalid/table \
+		test/test_tomllib/data/valid \
+		test/test_tomllib/data/valid/array \
+		test/test_tomllib/data/valid/dates-and-times \
+		test/test_tomllib/data/valid/multiline-basic-str \
+		test/test_tools \
+		test/test_tools/i18n_data \
+		test/test_tools/msgfmt_data \
+		test/test_ttk \
+		test/test_unittest \
+		test/test_unittest/testmock \
+		test/test_warnings \
+		test/test_warnings/data \
+		test/test_zipfile \
+		test/test_zipfile/_path \
+		test/test_zoneinfo \
+		test/test_zoneinfo/data \
+		test/tkinterdata \
+		test/tokenizedata \
+		test/tracedmodules \
+		test/translationdata \
+		test/translationdata/argparse \
+		test/translationdata/getopt \
+		test/translationdata/optparse \
+		test/typinganndata \
+		test/wheeldata \
+		test/xmltestdata \
+		test/xmltestdata/c14n-20 \
+		test/zipimport_data
+
+COMPILEALL_OPTS=-j0
+
+TEST_MODULES=yes
+
+.PHONY: libinstall
+libinstall:	all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	@ # If app store compliance has been configured, apply the patch to the
+	@ # installed library code. The patch has been previously validated against
+	@ # the original source tree, so we can ignore any errors that are raised
+	@ # due to files that are missing because of --disable-test-modules etc.
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		echo "Applying app store compliance patch"; \
+		patch --force --reject-file "$(abs_builddir)/app-store-compliance.rej" --strip 2 --directory "$(DESTDIR)$(LIBDEST)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)" || true ; \
+	fi
+	@ # Build PYC files for the 3 optimization levels (0, 1, 2)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+# macOS' make seems to ignore a dependency on a
+# "$(BUILD_SCRIPTS_DIR): $(MKDIR_P) $@" rule.
+BUILD_SCRIPTS_DIR=build/scripts-$(VERSION)
+SCRIPT_IDLE=$(BUILD_SCRIPTS_DIR)/idle$(VERSION)
+SCRIPT_PYDOC=$(BUILD_SCRIPTS_DIR)/pydoc$(VERSION)
+
+$(SCRIPT_IDLE): $(srcdir)/Tools/scripts/idle3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/idle3 > $@
+	@chmod +x $@
+
+$(SCRIPT_PYDOC): $(srcdir)/Tools/scripts/pydoc3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/pydoc3 > $@
+	@chmod +x $@
+
+.PHONY: scripts
+scripts: $(SCRIPT_IDLE) $(SCRIPT_PYDOC) python-config
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+
+.PHONY: inclinstall
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		if test ! -d $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; then \
+			echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		fi; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		echo $(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		$(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		for i in $(srcdir)/Include/internal/mimalloc/mimalloc/*.h; \
+		do \
+			echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal/mimalloc/mimalloc; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		done; \
+	fi
+	echo $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.13/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+.PHONY: libainstall
+libainstall: all scripts
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -d $(LIBRARY); then :; else \
+			if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+				if test "$(SHLIB_SUFFIX)" = .dll; then \
+					$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+				else \
+					$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+				fi; \
+			else \
+				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+			fi; \
+		fi; \
+		$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.bootstrap $(DESTDIR)$(LIBPL)/Setup.bootstrap
+	$(INSTALL_DATA) Modules/Setup.stdlib $(DESTDIR)$(LIBPL)/Setup.stdlib
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	$(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION)
+	$(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION)
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/README.AIX for details.";	\
+	else true; \
+	fi
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+.PHONY: frameworkinstall
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+.PHONY: frameworkinstallframework
+frameworkinstallframework:  install frameworkinstallmaclib
+
+# macOS uses a versioned frameworks structure that includes a full install
+.PHONY: frameworkinstallversionedstructure
+frameworkinstallversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# iOS/tvOS/watchOS uses a non-versioned framework with Info.plist in the
+# framework root, no .lproj data, and only stub compilation assistance binaries
+.PHONY: frameworkinstallunversionedstructure
+frameworkinstallunversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; then \
+		echo "Clearing stale header symlink directory"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; \
+	fi
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)
+	sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR)
+	for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \
+		$(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \
+	done
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+.PHONY: frameworkinstallmaclib
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+.PHONY: frameworkinstallapps
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+.PHONY: frameworkpythonw
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+.PHONY: frameworkinstallunixtools
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+.PHONY: frameworkaltinstallunixtools
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+.PHONY: frameworkinstallextras
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# On iOS, bin/lib can't live inside the framework; include needs to be called
+# "Headers", but *must* be in the framework, and *not* include the `python3.X`
+# subdirectory. The install has put these folders in the same folder as
+# Python.framework; Move the headers to their final framework-compatible home.
+.PHONY: frameworkinstallmobileheaders
+frameworkinstallmobileheaders: frameworkinstallunversionedstructure inclinstall
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; then \
+		echo "Removing old framework headers"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; \
+	fi
+	mv "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)" "$(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers"
+	$(LN) -fs "../$(PYTHONFRAMEWORKDIR)/Headers" "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+
+JIT_DEPS = \
+		$(srcdir)/Tools/jit/*.c \
+		$(srcdir)/Tools/jit/*.py \
+		$(srcdir)/Python/executor_cases.c.h \
+		pyconfig.h
+
+jit_stencils.h: $(JIT_DEPS)
+	
+
+Python/jit.o: $(srcdir)/Python/jit.c 
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+.PHONY: regen-jit
+regen-jit:
+	
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+.PHONY: reindent
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+.PHONY: recheck
+recheck:
+	./config.status --recheck
+	./config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	(cd $(srcdir); autoreconf -ivf -Werror)
+
+.PHONY: regen-configure
+regen-configure:
+	$(srcdir)/Tools/build/regen-configure.sh
+
+.PHONY: regen-sbom
+regen-sbom:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+.PHONY: pycremoval
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+.PHONY: rmtestturds
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+.PHONY: docclean
+docclean:
+	$(MAKE) -C $(srcdir)/Doc clean
+
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+.PHONY: clean-retain-profile
+clean-retain-profile: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find . -name '*.lto' -exec rm -f {} ';'
+	find . -name '*.wasm' -exec rm -f {} ';'
+	find . -name '*.lst' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f _bootstrap_python
+	-rm -f python.html python*.js python.data python*.symbols python*.map
+	-rm -f $(WASM_STDLIB)
+	-rm -f Programs/_testembed Programs/_freeze_module
+	-rm -rf Python/deepfreeze
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/bin
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/lib
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/include
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/Python.framework
+
+.PHONY: profile-removal
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+	rm -f profile-bolt-stamp
+
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
+	@if test build_all = profile-opt -o build_all = bolt-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+	-rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
+.PHONY: clobber
+clobber: clean
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -rf iOS/Frameworks
+	-rm -rf iOSTestbed.*
+	-rm -f python-config.py python-config
+	-rm -rf cross-build
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+.PHONY: distclean
+distclean: clobber docclean
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+	    Modules/Setup.bootstrap Modules/Setup.stdlib \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+.PHONY: smelly
+smelly: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
+
+# Check if any unsupported C global variables have been added.
+.PHONY: check-c-globals
+check-c-globals:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/c-analyzer/check-c-globals.py \
+		--format summary \
+		--traceback
+
+# Check for undocumented C APIs.
+.PHONY: check-c-api-docs
+check-c-api-docs:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/check-c-api-docs/main.py
+
+# Find files with funny names
+.PHONY: funny
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+.PHONY: patchcheck
+patchcheck: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
+
+.PHONY: check-limited-abi
+check-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+
+.PHONY: update-config
+update-config:
+	curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
+	curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
+	chmod +x config.guess config.sub
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_pthread_stubs.h $(srcdir)/Python/condvar.h
+
+##########################################################################
+# Module dependencies and platform-specific files
+
+# force rebuild when header file or module build flavor (static/shared) is changed
+MODULE_DEPS_STATIC=Modules/config.c
+MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS)
+
+MODULE__CURSES_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__CURSES_PANEL_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__DATETIME_DEPS=$(srcdir)/Include/datetime.h
+MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_PYEXPAT_DEPS=$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE_UNICODEDATA_DEPS=$(srcdir)/Modules/unicodedata_db.h $(srcdir)/Modules/unicodename_db.h
+MODULE__BLAKE2_DEPS=$(srcdir)/Modules/_blake2/impl/blake2-config.h $(srcdir)/Modules/_blake2/impl/blake2-impl.h $(srcdir)/Modules/_blake2/impl/blake2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2b-ref.c $(srcdir)/Modules/_blake2/impl/blake2b-round.h $(srcdir)/Modules/_blake2/impl/blake2b.c $(srcdir)/Modules/_blake2/impl/blake2s-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2s-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2s-load-xop.h $(srcdir)/Modules/_blake2/impl/blake2s-ref.c $(srcdir)/Modules/_blake2/impl/blake2s-round.h $(srcdir)/Modules/_blake2/impl/blake2s.c $(srcdir)/Modules/_blake2/blake2module.h $(srcdir)/Modules/hashlib.h
+MODULE__CTYPES_DEPS=$(srcdir)/Modules/_ctypes/ctypes.h
+MODULE__CTYPES_MALLOC_CLOSURE=
+MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h $(LIBMPDEC_HEADERS) $(LIBMPDEC_A)
+MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c $(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h
+MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h
+MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c
+MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c
+MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_A)
+MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c
+MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c
+MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h
+MODULE__TESTCAPI_DEPS=$(srcdir)/Modules/_testcapi/parts.h $(srcdir)/Modules/_testcapi/util.h
+MODULE__TESTLIMITEDCAPI_DEPS=$(srcdir)/Modules/_testlimitedcapi/testcapi_long.h $(srcdir)/Modules/_testlimitedcapi/parts.h $(srcdir)/Modules/_testlimitedcapi/util.h
+MODULE__TESTINTERNALCAPI_DEPS=$(srcdir)/Modules/_testinternalcapi/parts.h
+MODULE__SQLITE3_DEPS=$(srcdir)/Modules/_sqlite/connection.h $(srcdir)/Modules/_sqlite/cursor.h $(srcdir)/Modules/_sqlite/microprotocols.h $(srcdir)/Modules/_sqlite/module.h $(srcdir)/Modules/_sqlite/prepare_protocol.h $(srcdir)/Modules/_sqlite/row.h $(srcdir)/Modules/_sqlite/util.h
+
+CODECS_COMMON_HEADERS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h $(srcdir)/Modules/cjkcodecs/cjkcodecs.h
+MODULE__CODECS_CN_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_cn.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_HK_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_hk.h  $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_ISO2022_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_JP_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(srcdir)/Modules/cjkcodecs/mappings_jp.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_KR_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_kr.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_TW_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_tw.h $(CODECS_COMMON_HEADERS)
+MODULE__MULTIBYTECODEC_DEPS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
--- a/Misc/python-config.sh	1970-01-01 04:00:00.000000000 +0400
+++ b/Misc/python-config.sh	2026-05-12 13:28:53.720788021 +0400
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Keep this script in sync with python-config.in
+
+exit_with_usage ()
+{
+    local usage
+    usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
+    if [ "$1" -eq 0 ]; then
+        echo "$usage"
+    else
+        echo "$usage" >&2
+    fi
+    exit $1
+}
+
+if [ "$1" = "" ] ; then
+    exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)

[truncated 1586375 bytes]

failed patch attempt

patch

python3.13 likely remains stuck in a busy-poll loop. The diagnosis was captured, but the patch proposal did not complete cleanly.

state: failedcreated: 2026-05-12 07:41 UTCvalidation: failed

Why it stopped

timeout

Failure details

  • Failure kind: timeout
  • Exit status: 124
  • Error: Codex stage timed out after 900 second(s).

stderr excerpt

Codex stage timed out after 900 second(s).

Collected context

  • Subsystem: runaway-process
  • Diagnosis family: busy-poll
  • Hot path: _raw_spin_lock_irqsave
  • Command: /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
  • Thread backtrace summary: thread backtraces show 1 thread(s) around 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
  • Source package: python3.13
  • Workspace source: debian-source
  • Workspace acquisition: Fetched Debian source package via apt-get source.
  • Implicated packages: linux-image-6.17.10+deb14-amd64
  • Contention signals: gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory.

The trace repeatedly returns to a poll-family syscall without meaningful blocking, which suggests a busy event-loop wakeup.

Representative threads

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? () -> 0x0000000000a56c88 in _PyRuntime ()

Common frame clusters

  • 1 thread(s): 0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path> -> 0x0000000000b7ddf3 in ?? () -> 0x00000000313fd7e7 in ?? ()

Raw thread backtrace

Thread 1 (Thread 0x7f1c6e75d200 (LWP 2799720) "supervisord"):
#0  0x00007f1c6e7efe92 in pthread_attr_destroy () from target:<path>
#1  0x0000000000b7ddf3 in ?? ()
#2  0x00000000313fd7e7 in ?? ()
#3  0x0000000000a56c88 in _PyRuntime ()
#4  0x00007f1c6e7efead in ?? () from target:<path>
#5  0x0000000000000007 in ?? ()
#6  0x000000000054aeb0 in PyMem_Realloc ()
#7  0x000000000067ca5b in ?? ()
#8  0x000000000056e19a in _PyEval_EvalFrameDefault ()
#9  0x0000000000569544 in PyEval_EvalCode ()
#10 0x00000000006c1c44 in ?? ()
#11 0x00000000006bebdf in ?? ()
#12 0x00000000006d0454 in ?? ()
#13 0x00000000006cfee9 in ?? ()
#14 0x00000000006cfd1e in ?? ()
#15 0x00000000006ceeac in Py_RunMain ()
#16 0x000000000069caa9 in Py_BytesMain ()
#17 0x00007f1c6e787f75 in ?? () from target:<path>
#18 0x00007ffd14a827e8 in ?? ()
#19 0x000000000069ca70 in ?? ()
#20 0x000000056eaef000 in ?? ()
#21 0x00007ffd14a827e8 in ?? ()
#22 0x0000000000000000 in ?? ()
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `python3.13`, but the captured command line is the application entrypoint `/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, not a CPython runtime entrypoint. The syscall evidence shows a one-second `poll()` timeout followed by `wait4(-1, WNOHANG) = ECHILD`, which is consistent with an application supervisor loop checking for child exits, not enough by itself to identify a CPython bug.

## Evidence Confidence
inferred

## Proposed Subject
No upstream CPython source patch yet. Prepare a no-patch diagnosis unless additional evidence ties the CPU use to CPython’s `os.wait*`, `select.poll`, thread, or signal handling implementation rather than supervisord’s event loop.

## Patch Plan
1. Treat `/usr/bin/supervisord` as the primary investigation target and CPython runtime as secondary, per the evidence.
2. Do not patch CPython from the current evidence: process state is sleeping, `wchan` is `poll_schedule_timeout`, and `strace` shows blocking one-second polls rather than a tight CPython loop.
3. If new evidence proves a CPython issue, follow CPython conventions found in the touched areas: Argument Clinic generated wrappers, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `PyMem_*` helpers. Avoid new awkward control flow such as avoidable `goto`; keep cleanup bounded and local.
4. No prior Fixer patch for this finding was found in `debian/patches` or `.pc`, so there is nothing to replace.
5. Maintainer-facing explanation should say the observed process was a Python-hosted application loop and that the collected evidence does not currently justify a CPython runtime change.

## Risks
A CPython patch based only on this evidence would likely be speculative and upstream-unacceptable. Changing `os.waitpid`, `os.wait4`, `select.poll`, or subprocess polling behavior could alter long-standing POSIX semantics for unrelated applications.

## Validation
Before any future patch report, try the project-level build entrypoint from the workspace root: `./configure && make`. If it fails due to missing dependencies or generated files, record the exact command and failure reason, then run the narrowest relevant check such as `./python -m test test_os test_select test_subprocess`.

For bounded independent signal collection, run a small `strace` smoke check that intentionally performs `waitpid(-1, WNOHANG)` with no children plus `poll(1000)`, and confirm it reproduces only the syscall shape, not the reported runaway CPU. Do not claim `reproduced` unless a command actually shows high CPU or a failing CPython behavior.

## Patch Pass



## Workflow Note

Codex stage timed out after 900 second(s).

Diff

--- a/Makefile.pre	1970-01-01 04:00:00.000000000 +0400
+++ b/Makefile.pre	2026-05-12 11:32:22.729275377 +0400
@@ -0,0 +1,3297 @@
+# Top-level Makefile for Python
+#
+# As distributed, this file is called Makefile.pre.in; it is processed
+# into the real Makefile by running the script ./configure, which
+# replaces things like @spam@ with values appropriate for your system.
+# This means that if you edit Makefile, your changes get lost the next
+# time you run the configure script.  Ideally, you can do:
+#
+#	./configure
+#	make
+#	make test
+#	make install
+#
+# If you have a previous version of Python installed that you don't
+# want to overwrite, you can use "make altinstall" instead of "make
+# install".  Refer to the "Installing" section in the README file for
+# additional details.
+#
+# See also the section "Build instructions" in the README file.
+
+# === Variables set by makesetup ===
+
+MODBUILT_NAMES=    _MODBUILT_NAMES_
+MODSHARED_NAMES=   _MODSHARED_NAMES_
+MODDISABLED_NAMES= _MODDISABLED_NAMES_
+MODOBJS=           _MODOBJS_
+MODLIBS=           _MODLIBS_
+
+# === Variables set by configure
+VERSION=	3.13
+srcdir=		.
+
+abs_srcdir=	b
+abs_builddir=	b
+
+
+CC=		gcc
+CXX=		g++
+LINKCC=		$(PURIFY) $(CC)
+AR=		ar
+READELF=	@READELF@
+SOABI=		cpython-313-x86_64-linux-gnu
+ABIFLAGS=	
+ABI_THREAD=	
+LDVERSION=	$(VERSION)$(ABIFLAGS)
+LIBPYTHON=
+GITVERSION=	git --git-dir $(srcdir)/.git rev-parse --short HEAD
+GITTAG=		git --git-dir $(srcdir)/.git describe --all --always --dirty
+GITBRANCH=	git --git-dir $(srcdir)/.git name-rev --name-only HEAD
+PGO_PROF_GEN_FLAG=-fprofile-generate
+PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction
+LLVM_PROF_MERGER=true
+LLVM_PROF_FILE=
+LLVM_PROF_ERR=no
+DTRACE=         
+DFLAGS=         
+DTRACE_HEADERS= 
+DTRACE_OBJS=    
+DSYMUTIL=       
+DSYMUTIL_PATH=  
+
+GNULD=		yes
+
+# Shell used by make (some versions default to the login shell, which is bad)
+SHELL=		/bin/sh -e
+
+# Use this to make a link between python$(VERSION) and python in $(BINDIR)
+LN=		ln
+
+# Portable install script (configure doesn't always guess right)
+INSTALL=	/usr/bin/install -c
+INSTALL_PROGRAM=${INSTALL}
+INSTALL_SCRIPT= ${INSTALL}
+INSTALL_DATA=	${INSTALL} -m 644
+# Shared libraries must be installed with executable mode on some systems;
+# rather than figuring out exactly which, we always give them executable mode.
+INSTALL_SHARED= ${INSTALL} -m 755
+
+MKDIR_P=	/usr/bin/mkdir -p
+
+MAKESETUP=      $(srcdir)/Modules/makesetup
+
+# Compiler options
+OPT=		-DNDEBUG -g -O3 -Wall
+BASECFLAGS=	 -fno-strict-overflow -Wsign-compare
+BASECPPFLAGS=	
+CONFIGURE_CFLAGS=	
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST= -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden
+# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST.
+# Use it when a linker flag should _not_ be part of the distutils LDFLAGS
+# once Python is installed (bpo-35257)
+CONFIGURE_LDFLAGS_NODIST=
+# LDFLAGS_NOLTO is an extra flag to disable lto. It is used to speed up building
+# of _bootstrap_python and _freeze_module tools, which don't need LTO.
+CONFIGURE_LDFLAGS_NOLTO=
+CONFIGURE_CPPFLAGS=	
+CONFIGURE_LDFLAGS=	
+# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
+# command line to append to these values without stomping the pre-set
+# values.
+PY_CFLAGS=	$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
+# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
+# be able to build extension modules using the directories specified in the
+# environment variables
+PY_CPPFLAGS=	$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
+PY_LDFLAGS=	$(CONFIGURE_LDFLAGS) $(LDFLAGS)
+PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
+PY_LDFLAGS_NOLTO=$(PY_LDFLAGS) $(CONFIGURE_LDFLAGS_NOLTO) $(LDFLAGS_NODIST)
+NO_AS_NEEDED=	-Wl,--no-as-needed
+CCSHARED=	-fPIC
+# LINKFORSHARED are the flags passed to the $(CC) command that links
+# the python executable -- this is only needed for a few systems
+LINKFORSHARED=	-Xlinker -export-dynamic
+ARFLAGS=	rcs
+# Extra C flags added for building the interpreter object files.
+CFLAGSFORSHARED=
+# C flags used for building the interpreter object files
+PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
+PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
+PY_CORE_CFLAGS=	$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
+# Linker flags used for building the interpreter object files
+PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+# Strict or non-strict aliasing flags used to compile dtoa.c, see above
+CFLAGS_ALIASING=
+
+
+# Machine-dependent subdirectories
+MACHDEP=	linux
+
+# Multiarch directory (may be empty)
+MULTIARCH=	x86_64-linux-gnu
+MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\"
+
+# Install prefix for architecture-independent files
+prefix=		/usr/local
+
+# Install prefix for architecture-dependent files
+exec_prefix=	${prefix}
+
+# Install prefix for data files
+datarootdir=    ${prefix}/share
+
+# Expanded directories
+BINDIR=		${exec_prefix}/bin
+LIBDIR=		${exec_prefix}/lib
+MANDIR=		${datarootdir}/man
+INCLUDEDIR=	${prefix}/include
+CONFINCLUDEDIR=	$(exec_prefix)/include
+PLATLIBDIR=	lib
+SCRIPTDIR=	$(prefix)/$(PLATLIBDIR)
+# executable name for shebangs
+EXENAME=	$(BINDIR)/python$(LDVERSION)$(EXE)
+# Variable used by ensurepip
+WHEEL_PKG_DIR=	
+
+# Detailed destination directories
+BINLIBDEST=	$(LIBDIR)/python$(VERSION)$(ABI_THREAD)
+LIBDEST=	$(SCRIPTDIR)/python$(VERSION)$(ABI_THREAD)
+INCLUDEPY=	$(INCLUDEDIR)/python$(LDVERSION)
+CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(LDVERSION)
+
+# Symbols used for using shared libraries
+SHLIB_SUFFIX=	.so
+EXT_SUFFIX=	.cpython-313-x86_64-linux-gnu.so
+LDSHARED=	$(CC) -shared $(PY_LDFLAGS)
+BLDSHARED=	$(CC) -shared $(PY_CORE_LDFLAGS)
+LDCXXSHARED=	$(CXX) -shared $(PY_LDFLAGS)
+DESTSHARED=	$(LIBDEST)/lib-dynload
+
+# List of exported symbols for AIX
+EXPORTSYMS=	
+EXPORTSFROM=	
+
+# Executable suffix (.exe on Windows and Mac OS X)
+EXE=		
+BUILDEXE=	
+
+# Name of the patch file to apply for app store compliance
+APP_STORE_COMPLIANCE_PATCH=
+
+# Short name and location for Mac OS X Python framework
+UNIVERSALSDK=
+PYTHONFRAMEWORK=	
+PYTHONFRAMEWORKDIR=	no-framework
+PYTHONFRAMEWORKPREFIX=	
+PYTHONFRAMEWORKINSTALLDIR= 
+PYTHONFRAMEWORKINSTALLNAMEPREFIX= 
+RESSRCDIR= 
+# macOS deployment target selected during configure, to be checked
+# by distutils. The export statement is needed to ensure that the
+# deployment target is active during build.
+MACOSX_DEPLOYMENT_TARGET=
+#export MACOSX_DEPLOYMENT_TARGET
+
+# iOS Deployment target selected during configure. Unlike macOS, the iOS
+# deployment target is controlled using `-mios-version-min` arguments added to
+# CFLAGS and LDFLAGS by the configure script. This variable is not used during
+# the build, and is only listed here so it will be included in sysconfigdata.
+IPHONEOS_DEPLOYMENT_TARGET=
+
+# Option to install to strip binaries
+STRIPFLAG=-s
+
+# Flags to lipo to produce a 32-bit-only universal executable
+LIPO_32BIT_FLAGS=
+
+# Flags to lipo to produce an intel-64-only universal executable
+LIPO_INTEL64_FLAGS=
+
+# Environment to run shared python without installed libraries
+RUNSHARED=       
+
+# ensurepip options
+ENSUREPIP=      upgrade
+
+# Internal static libraries
+LIBMPDEC_A= Modules/_decimal/libmpdec/libmpdec.a
+LIBEXPAT_A= Modules/expat/libexpat.a
+LIBHACL_SHA2_A= Modules/_hacl/libHacl_Hash_SHA2.a
+
+# Module state, compiler flags and linker flags
+# Empty CFLAGS and LDFLAGS are omitted.
+# states:
+#   * yes: module is available
+#   * missing: build dependency is missing
+#   * disabled: module is disabled
+#   * n/a: module is not available on the current platform
+# MODULE_EGG_STATE=yes  # yes, missing, disabled, n/a
+# MODULE_EGG_CFLAGS=
+# MODULE_EGG_LDFLAGS=
+MODULE__IO_STATE=yes
+MODULE__IO_CFLAGS=-I$(srcdir)/Modules/_io
+MODULE_TIME_STATE=yes
+MODULE_TIME_LDFLAGS=
+MODULE_ARRAY_STATE=yes
+MODULE__ASYNCIO_STATE=yes
+MODULE__BISECT_STATE=yes
+MODULE__CONTEXTVARS_STATE=yes
+MODULE__CSV_STATE=yes
+MODULE__HEAPQ_STATE=yes
+MODULE__JSON_STATE=yes
+MODULE__LSPROF_STATE=yes
+MODULE__OPCODE_STATE=yes
+MODULE__PICKLE_STATE=yes
+MODULE__POSIXSUBPROCESS_STATE=yes
+MODULE__QUEUE_STATE=yes
+MODULE__RANDOM_STATE=yes
+MODULE_SELECT_STATE=yes
+MODULE__STRUCT_STATE=yes
+MODULE__TYPING_STATE=yes
+MODULE__INTERPRETERS_STATE=yes
+MODULE__INTERPCHANNELS_STATE=yes
+MODULE__INTERPQUEUES_STATE=yes
+MODULE__ZONEINFO_STATE=yes
+MODULE__MULTIPROCESSING_STATE=yes
+MODULE__MULTIPROCESSING_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_STATE=yes
+MODULE__POSIXSHMEM_CFLAGS=-I$(srcdir)/Modules/_multiprocessing
+MODULE__POSIXSHMEM_LDFLAGS=
+MODULE__STATISTICS_STATE=yes
+MODULE__STATISTICS_LDFLAGS=-lm
+MODULE_CMATH_STATE=yes
+MODULE_CMATH_LDFLAGS=-lm
+MODULE_MATH_STATE=yes
+MODULE_MATH_LDFLAGS=-lm
+MODULE__DATETIME_STATE=yes
+MODULE__DATETIME_LDFLAGS= -lm
+MODULE_FCNTL_STATE=yes
+MODULE_FCNTL_LDFLAGS=
+MODULE_MMAP_STATE=yes
+MODULE__SOCKET_STATE=yes
+MODULE_GRP_STATE=yes
+MODULE_PWD_STATE=yes
+MODULE_RESOURCE_STATE=yes
+MODULE__SCPROXY_STATE=n/a
+MODULE_SYSLOG_STATE=yes
+MODULE_TERMIOS_STATE=yes
+MODULE_PYEXPAT_STATE=yes
+MODULE_PYEXPAT_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE_PYEXPAT_LDFLAGS=-lm $(LIBEXPAT_A)
+MODULE__ELEMENTTREE_STATE=yes
+MODULE__ELEMENTTREE_CFLAGS=-I$(srcdir)/Modules/expat
+MODULE__CODECS_CN_STATE=yes
+MODULE__CODECS_HK_STATE=yes
+MODULE__CODECS_ISO2022_STATE=yes
+MODULE__CODECS_JP_STATE=yes
+MODULE__CODECS_KR_STATE=yes
+MODULE__CODECS_TW_STATE=yes
+MODULE__MULTIBYTECODEC_STATE=yes
+MODULE_UNICODEDATA_STATE=yes
+MODULE__MD5_STATE=yes
+MODULE__MD5_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA1_STATE=yes
+MODULE__SHA1_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA2_STATE=yes
+MODULE__SHA2_CFLAGS=-I$(srcdir)/Modules/_hacl/include -I$(srcdir)/Modules/_hacl/internal -D_BSD_SOURCE -D_DEFAULT_SOURCE
+MODULE__SHA3_STATE=yes
+MODULE__BLAKE2_STATE=yes
+MODULE__BLAKE2_CFLAGS=
+MODULE__BLAKE2_LDFLAGS=
+MODULE__CTYPES_STATE=yes
+MODULE__CTYPES_CFLAGS=-fno-strict-overflow 
+MODULE__CTYPES_LDFLAGS=-lffi -ldl
+MODULE__CURSES_STATE=yes
+MODULE__CURSES_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE__CURSES_LDFLAGS=-lncursesw -ltinfo
+
+MODULE__CURSES_PANEL_STATE=yes
+MODULE__CURSES_PANEL_CFLAGS=-D_DEFAULT_SOURCE  -D_DEFAULT_SOURCE 
+MODULE__CURSES_PANEL_LDFLAGS=-lpanelw -lncursesw -ltinfo
+
+MODULE__DECIMAL_STATE=yes
+MODULE__DECIMAL_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1
+MODULE__DECIMAL_LDFLAGS=-lm $(LIBMPDEC_A)
+MODULE__DBM_STATE=missing
+MODULE__GDBM_STATE=missing
+MODULE_READLINE_STATE=yes
+MODULE_READLINE_CFLAGS=-D_DEFAULT_SOURCE 
+MODULE_READLINE_LDFLAGS=-lreadline
+MODULE__SQLITE3_STATE=yes
+MODULE__SQLITE3_CFLAGS= -I$(srcdir)/Modules/_sqlite
+MODULE__SQLITE3_LDFLAGS=-lsqlite3
+MODULE__TKINTER_STATE=missing
+MODULE__UUID_STATE=yes
+MODULE__UUID_CFLAGS=-I/usr/include/uuid
+MODULE__UUID_LDFLAGS=-luuid
+MODULE_ZLIB_STATE=yes
+MODULE_ZLIB_CFLAGS=
+MODULE_ZLIB_LDFLAGS=-lz
+MODULE_BINASCII_STATE=yes
+MODULE_BINASCII_CFLAGS=-DUSE_ZLIB_CRC32 
+MODULE_BINASCII_LDFLAGS=-lz
+MODULE__BZ2_STATE=yes
+MODULE__BZ2_CFLAGS=
+MODULE__BZ2_LDFLAGS=-lbz2
+MODULE__LZMA_STATE=yes
+MODULE__LZMA_CFLAGS=
+MODULE__LZMA_LDFLAGS=-llzma
+MODULE__SSL_STATE=yes
+MODULE__SSL_CFLAGS=
+MODULE__SSL_LDFLAGS=  -lssl -lcrypto
+MODULE__HASHLIB_STATE=yes
+MODULE__HASHLIB_CFLAGS=
+MODULE__HASHLIB_LDFLAGS=   -lcrypto
+MODULE__TESTCAPI_STATE=yes
+MODULE__TESTCAPI_LDFLAGS=
+MODULE__TESTCLINIC_STATE=yes
+MODULE__TESTCLINIC_LIMITED_STATE=yes
+MODULE__TESTLIMITEDCAPI_STATE=yes
+MODULE__TESTINTERNALCAPI_STATE=yes
+MODULE__TESTBUFFER_STATE=yes
+MODULE__TESTIMPORTMULTIPLE_STATE=yes
+MODULE__TESTMULTIPHASE_STATE=yes
+MODULE__TESTSINGLEPHASE_STATE=yes
+MODULE__TESTEXTERNALINSPECTION_STATE=yes
+MODULE_XXSUBTYPE_STATE=yes
+MODULE__XXTESTFUZZ_STATE=yes
+MODULE__CTYPES_TEST_STATE=yes
+MODULE__CTYPES_TEST_LDFLAGS=-lm
+MODULE_XXLIMITED_STATE=yes
+MODULE_XXLIMITED_35_STATE=yes
+
+
+# Default zoneinfo.TZPATH. Added here to expose it in sysconfig.get_config_var
+TZPATH=/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
+
+# If to install mimalloc headers
+INSTALL_MIMALLOC=yes
+
+# Modes for directories, executables and data files created by the
+# install process.  Default to user-only-writable for all file types.
+DIRMODE=	755
+EXEMODE=	755
+FILEMODE=	644
+
+# configure script arguments
+CONFIG_ARGS=	
+
+
+# Subdirectories with code
+SRCDIRS= 	  Modules   Modules/_blake2   Modules/_ctypes   Modules/_decimal   Modules/_decimal/libmpdec   Modules/_hacl   Modules/_io   Modules/_multiprocessing   Modules/_sqlite   Modules/_sre   Modules/_testcapi   Modules/_testinternalcapi   Modules/_testlimitedcapi   Modules/_xxtestfuzz   Modules/cjkcodecs   Modules/expat   Objects   Objects/mimalloc   Objects/mimalloc/prim   Parser   Parser/tokenizer   Parser/lexer   Programs   Python   Python/frozen_modules
+
+# Other subdirectories
+SUBDIRSTOO=	Include Lib Misc
+
+# assets for Emscripten browser builds
+WASM_ASSETS_DIR=.$(prefix)
+WASM_STDLIB=$(WASM_ASSETS_DIR)/lib/python$(VERSION)/os.py
+
+# Files and directories to be distributed
+CONFIGFILES=	configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
+DISTFILES=	README.rst ChangeLog $(CONFIGFILES)
+DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
+DIST=		$(DISTFILES) $(DISTDIRS)
+
+
+LIBRARY=	libpython$(VERSION)$(ABIFLAGS).a
+LDLIBRARY=      libpython$(VERSION)$(ABIFLAGS).a
+BLDLIBRARY=     $(LDLIBRARY)
+PY3LIBRARY=     
+DLLLIBRARY=	
+LDLIBRARYDIR=   
+INSTSONAME=	$(LDLIBRARY)
+LIBRARY_DEPS=	$(LIBRARY) $(PY3LIBRARY) $(EXPORTSYMS)
+LINK_PYTHON_DEPS=$(LIBRARY_DEPS)
+PY_ENABLE_SHARED=	0
+STATIC_LIBPYTHON=	1
+
+
+LIBS=		-ldl 
+LIBM=		-lm
+LIBC=		
+SYSLIBS=	$(LIBM) $(LIBC)
+SHLIBS=		$(LIBS)
+
+DLINCLDIR=	.
+DYNLOADFILE=	dynload_shlib.o
+MACHDEP_OBJS=	
+LIBOBJDIR=	Python/
+LIBOBJS=	
+
+PYTHON=		python$(EXE)
+BUILDPYTHON=	python$(BUILDEXE)
+
+HOSTRUNNER= 
+
+PYTHON_FOR_REGEN?=python3.13
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
+PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E
+# Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
+# external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
+PYTHON_FOR_BUILD_DEPS=$(BUILDPYTHON)
+
+# Single-platform builds use Programs/_freeze_module.c for bootstrapping and
+# ./_bootstrap_python Programs/_freeze_module.py for remaining modules
+# Cross builds use an external "build Python" for all modules.
+PYTHON_FOR_FREEZE=./_bootstrap_python
+FREEZE_MODULE_BOOTSTRAP=./Programs/_freeze_module
+FREEZE_MODULE_BOOTSTRAP_DEPS=Programs/_freeze_module
+FREEZE_MODULE=$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py
+FREEZE_MODULE_DEPS=_bootstrap_python $(srcdir)/Programs/_freeze_module.py
+
+_PYTHON_HOST_PLATFORM=
+BUILD_GNU_TYPE=	x86_64-pc-linux-gnu
+HOST_GNU_TYPE=	x86_64-pc-linux-gnu
+
+# The task to run while instrumented when building the profile-opt target.
+# To speed up profile generation, we don't run the full unit test suite
+# by default. The default is "-m test --pgo". To run more tests, use
+# PROFILE_TASK="-m test --pgo-extended"
+PROFILE_TASK=	-m test --pgo --timeout=$(TESTTIMEOUT)
+
+# report files for gcov / lcov coverage report
+COVERAGE_INFO=	$(abs_builddir)/coverage.info
+COVERAGE_REPORT=$(abs_builddir)/lcov-report
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
+
+
+# === Definitions added by makesetup ===
+
+
+##########################################################################
+# Modules
+MODULE_OBJS=	\
+		Modules/config.o \
+		Modules/main.o \
+		Modules/gcmodule.o
+
+IO_H=		Modules/_io/_iomodule.h
+
+IO_OBJS=	\
+		Modules/_io/_iomodule.o \
+		Modules/_io/iobase.o \
+		Modules/_io/fileio.o \
+		Modules/_io/bufferedio.o \
+		Modules/_io/textio.o \
+		Modules/_io/bytesio.o \
+		Modules/_io/stringio.o
+
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+	$(srcdir)/Include/internal/pycore_mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+	$(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
+##########################################################################
+# Parser
+
+PEGEN_OBJS=		\
+		Parser/pegen.o \
+		Parser/pegen_errors.o \
+		Parser/action_helpers.o \
+		Parser/parser.o \
+		Parser/string_parser.o \
+		Parser/peg_api.o
+
+TOKENIZER_OBJS=		\
+		Parser/lexer/buffer.o \
+		Parser/lexer/lexer.o \
+		Parser/lexer/state.o \
+		Parser/tokenizer/file_tokenizer.o \
+		Parser/tokenizer/readline_tokenizer.o \
+		Parser/tokenizer/string_tokenizer.o \
+		Parser/tokenizer/utf8_tokenizer.o \
+		Parser/tokenizer/helpers.o
+
+PEGEN_HEADERS= \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Parser/pegen.h \
+		$(srcdir)/Parser/string_parser.h
+
+TOKENIZER_HEADERS= \
+		Parser/lexer/buffer.h \
+		Parser/lexer/lexer.h \
+		Parser/lexer/state.h \
+		Parser/tokenizer/tokenizer.h \
+		Parser/tokenizer/helpers.h
+
+POBJS=		\
+		Parser/token.o \
+
+PARSER_OBJS=	$(POBJS) $(PEGEN_OBJS) $(TOKENIZER_OBJS) Parser/myreadline.o
+
+PARSER_HEADERS= \
+		$(PEGEN_HEADERS) \
+		$(TOKENIZER_HEADERS)
+
+##########################################################################
+# Python
+
+PYTHON_OBJS=	\
+		Python/_warnings.o \
+		Python/Python-ast.o \
+		Python/Python-tokenize.o \
+		Python/asdl.o \
+		Python/assemble.o \
+		Python/ast.o \
+		Python/ast_opt.o \
+		Python/ast_unparse.o \
+		Python/bltinmodule.o \
+		Python/brc.o \
+		Python/ceval.o \
+		Python/codecs.o \
+		Python/compile.o \
+		Python/context.o \
+		Python/critical_section.o \
+		Python/crossinterp.o \
+		Python/dynamic_annotations.o \
+		Python/errors.o \
+		Python/flowgraph.o \
+		Python/frame.o \
+		Python/frozenmain.o \
+		Python/future.o \
+		Python/gc.o \
+		Python/gc_free_threading.o \
+		Python/gc_gil.o \
+		Python/getargs.o \
+		Python/getcompiler.o \
+		Python/getcopyright.o \
+		Python/getplatform.o \
+		Python/getversion.o \
+		Python/ceval_gil.o \
+		Python/hamt.o \
+		Python/hashtable.o \
+		Python/import.o \
+		Python/importdl.o \
+		Python/initconfig.o \
+		Python/interpconfig.o \
+		Python/instrumentation.o \
+		Python/instruction_sequence.o \
+		Python/intrinsics.o \
+		Python/jit.o \
+		Python/legacy_tracing.o \
+		Python/lock.o \
+		Python/marshal.o \
+		Python/modsupport.o \
+		Python/mysnprintf.o \
+		Python/mystrtoul.o \
+		Python/object_stack.o \
+		Python/optimizer.o \
+		Python/optimizer_analysis.o \
+		Python/optimizer_symbols.o \
+		Python/parking_lot.o \
+		Python/pathconfig.o \
+		Python/preconfig.o \
+		Python/pyarena.o \
+		Python/pyctype.o \
+		Python/pyfpe.o \
+		Python/pyhash.o \
+		Python/pylifecycle.o \
+		Python/pymath.o \
+		Python/pystate.o \
+		Python/pythonrun.o \
+		Python/pytime.o \
+		Python/qsbr.o \
+		Python/bootstrap_hash.o \
+		Python/specialize.o \
+		Python/structmember.o \
+		Python/symtable.o \
+		Python/sysmodule.o \
+		Python/thread.o \
+		Python/traceback.o \
+		Python/tracemalloc.o \
+		Python/getopt.o \
+		Python/pystrcmp.o \
+		Python/pystrtod.o \
+		Python/pystrhex.o \
+		Python/dtoa.o \
+		Python/formatter_unicode.o \
+		Python/fileutils.o \
+		Python/suggestions.o \
+		Python/perf_trampoline.o \
+		Python/perf_jit_trampoline.o \
+		Python/$(DYNLOADFILE) \
+		$(LIBOBJS) \
+		$(MACHDEP_OBJS) \
+		$(DTRACE_OBJS) \
+		
+
+
+##########################################################################
+# Objects
+OBJECT_OBJS=	\
+		Objects/abstract.o \
+		Objects/boolobject.o \
+		Objects/bytes_methods.o \
+		Objects/bytearrayobject.o \
+		Objects/bytesobject.o \
+		Objects/call.o \
+		Objects/capsule.o \
+		Objects/cellobject.o \
+		Objects/classobject.o \
+		Objects/codeobject.o \
+		Objects/complexobject.o \
+		Objects/descrobject.o \
+		Objects/enumobject.o \
+		Objects/exceptions.o \
+		Objects/genericaliasobject.o \
+		Objects/genobject.o \
+		Objects/fileobject.o \
+		Objects/floatobject.o \
+		Objects/frameobject.o \
+		Objects/funcobject.o \
+		Objects/iterobject.o \
+		Objects/listobject.o \
+		Objects/longobject.o \
+		Objects/dictobject.o \
+		Objects/odictobject.o \
+		Objects/memoryobject.o \
+		Objects/methodobject.o \
+		Objects/moduleobject.o \
+		Objects/namespaceobject.o \
+		Objects/object.o \
+		Objects/obmalloc.o \
+		Objects/picklebufobject.o \
+		Objects/rangeobject.o \
+		Objects/setobject.o \
+		Objects/sliceobject.o \
+		Objects/structseq.o \
+		Objects/tupleobject.o \
+		Objects/typeobject.o \
+		Objects/typevarobject.o \
+		Objects/unicodeobject.o \
+		Objects/unicodectype.o \
+		Objects/unionobject.o \
+		Objects/weakrefobject.o \
+		Python/asm_trampoline.o
+
+##########################################################################
+# objects that get linked into the Python library
+LIBRARY_OBJS_OMIT_FROZEN=	\
+		Modules/getbuildinfo.o \
+		$(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS)
+
+LIBRARY_OBJS=	\
+		$(LIBRARY_OBJS_OMIT_FROZEN) \
+		Modules/getpath.o \
+		Python/frozen.o
+
+LINK_PYTHON_OBJS=$(LIBRARY_OBJS)
+
+##########################################################################
+# DTrace
+
+# On some systems, object files that reference DTrace probes need to be modified
+# in-place by dtrace(1).
+DTRACE_DEPS = \
+	Python/ceval.o Python/gc.o Python/import.o Python/sysmodule.o
+
+##########################################################################
+# decimal's libmpdec
+
+LIBMPDEC_OBJS= \
+		Modules/_decimal/libmpdec/basearith.o \
+		Modules/_decimal/libmpdec/constants.o \
+		Modules/_decimal/libmpdec/context.o \
+		Modules/_decimal/libmpdec/convolute.o \
+		Modules/_decimal/libmpdec/crt.o \
+		Modules/_decimal/libmpdec/difradix2.o \
+		Modules/_decimal/libmpdec/fnt.o \
+		Modules/_decimal/libmpdec/fourstep.o \
+		Modules/_decimal/libmpdec/io.o \
+		Modules/_decimal/libmpdec/mpalloc.o \
+		Modules/_decimal/libmpdec/mpdecimal.o \
+		Modules/_decimal/libmpdec/numbertheory.o \
+		Modules/_decimal/libmpdec/sixstep.o \
+		Modules/_decimal/libmpdec/transpose.o
+		# _decimal does not use signaling API
+		# Modules/_decimal/libmpdec/mpsignal.o
+
+LIBMPDEC_HEADERS= \
+		$(srcdir)/Modules/_decimal/libmpdec/basearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/bits.h \
+		$(srcdir)/Modules/_decimal/libmpdec/constants.h \
+		$(srcdir)/Modules/_decimal/libmpdec/convolute.h \
+		$(srcdir)/Modules/_decimal/libmpdec/crt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/difradix2.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fnt.h \
+		$(srcdir)/Modules/_decimal/libmpdec/fourstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/io.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpalloc.h \
+		$(srcdir)/Modules/_decimal/libmpdec/mpdecimal.h \
+		$(srcdir)/Modules/_decimal/libmpdec/numbertheory.h \
+		$(srcdir)/Modules/_decimal/libmpdec/sixstep.h \
+		$(srcdir)/Modules/_decimal/libmpdec/transpose.h \
+		$(srcdir)/Modules/_decimal/libmpdec/typearith.h \
+		$(srcdir)/Modules/_decimal/libmpdec/umodarith.h
+
+##########################################################################
+# pyexpat's expat library
+
+LIBEXPAT_OBJS= \
+		Modules/expat/xmlparse.o \
+		Modules/expat/xmlrole.o \
+		Modules/expat/xmltok.o
+
+LIBEXPAT_HEADERS= \
+		Modules/expat/ascii.h \
+		Modules/expat/asciitab.h \
+		Modules/expat/expat.h \
+		Modules/expat/expat_config.h \
+		Modules/expat/expat_external.h \
+		Modules/expat/iasciitab.h \
+		Modules/expat/internal.h \
+		Modules/expat/latin1tab.h \
+		Modules/expat/nametab.h \
+		Modules/expat/pyexpatns.h \
+		Modules/expat/siphash.h \
+		Modules/expat/utf8tab.h \
+		Modules/expat/xmlrole.h \
+		Modules/expat/xmltok.h \
+		Modules/expat/xmltok_impl.h \
+		Modules/expat/xmltok_impl.c \
+		Modules/expat/xmltok_ns.c
+
+##########################################################################
+# hashlib's HACL* library
+
+LIBHACL_SHA2_OBJS= \
+                Modules/_hacl/Hacl_Hash_SHA2.o
+
+LIBHACL_HEADERS= \
+                Modules/_hacl/include/krml/FStar_UInt128_Verified.h \
+                Modules/_hacl/include/krml/FStar_UInt_8_16_32_64.h \
+                Modules/_hacl/include/krml/fstar_uint128_struct_endianness.h \
+                Modules/_hacl/include/krml/internal/target.h \
+                Modules/_hacl/include/krml/lowstar_endianness.h \
+                Modules/_hacl/include/krml/types.h \
+		Modules/_hacl/Hacl_Streaming_Types.h \
+                Modules/_hacl/python_hacl_namespaces.h
+
+LIBHACL_SHA2_HEADERS= \
+                Modules/_hacl/Hacl_Hash_SHA2.h \
+                Modules/_hacl/internal/Hacl_Hash_SHA2.h \
+		$(LIBHACL_HEADERS)
+
+#########################################################################
+# Rules
+
+# Default target
+all:		build_all
+
+# First target in Makefile is implicit default. So .PHONY needs to come after
+# all.
+.PHONY: all
+
+# Provide quick help for common Makefile targets.
+.PHONY: help
+help:
+	@echo "Run 'make' to build the Python executable and extension modules"
+	@echo ""
+	@echo "or 'make <target>' where <target> is one of:"
+	@echo "  test         run the test suite"
+	@echo "  install      install built files"
+	@echo "  regen-all    regenerate a number of generated source files"
+	@echo "  clinic       run Argument Clinic over source files"
+	@echo ""
+	@echo "  clean        to remove build files"
+	@echo "  distclean    'clean' + remove other generated files (patch, exe, etc)"
+	@echo ""
+	@echo "  recheck      rerun configure with last cmdline options"
+	@echo "  reindent     reindent .py files in Lib directory"
+	@echo "  tags         build a tags file (useful for Emacs and other editors)"
+	@echo "  list-targets list all targets in the Makefile"
+
+# Display a full list of Makefile targets
+.PHONY: list-targets
+list-targets:
+	@grep -E '^[A-Za-z][-A-Za-z0-9]+:' Makefile | awk -F : '{print $$1}'
+
+.PHONY: build_all
+build_all:	check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \
+		gdbhooks Programs/_testembed scripts checksharedmods rundsymutil
+
+.PHONY: build_wasm
+build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \
+		python-config checksharedmods
+
+# Check that the source is clean when building out of source.
+.PHONY: check-clean-src
+check-clean-src:
+	@if test -n "$(VPATH)" -a \( \
+	    -f "$(srcdir)/$(BUILDPYTHON)" \
+	    -o -f "$(srcdir)/Programs/python.o" \
+	    -o -f "$(srcdir)/Python/frozen_modules/importlib._bootstrap.h" \
+	\); then \
+		echo "Error: The source directory ($(srcdir)) is not clean" ; \
+		echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \
+		echo "Build artifacts such as .o files, executables, and Python/frozen_modules/*.h must not exist within $(srcdir)." ; \
+		echo "Try to run:" ; \
+		echo "  (cd \"$(srcdir)\" && make clean || git clean -fdx -e Doc/venv)" ; \
+		exit 1; \
+	fi
+
+# Check that the app store compliance patch can be applied (if configured).
+# This is checked as a dry-run against the original library sources;
+# the patch will be actually applied during the install phase.
+.PHONY: check-app-store-compliance
+check-app-store-compliance:
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		patch --dry-run --quiet --force --strip 1 --directory "$(abs_srcdir)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)"; \
+		echo "App store compliance patch can be applied."; \
+	fi
+
+# Profile generation build must start from a clean tree.
+profile-clean-stamp:
+	$(MAKE) clean-profile
+	touch $@
+
+# Compile with profile generation enabled.
+profile-gen-stamp: profile-clean-stamp
+	@if [ $(LLVM_PROF_ERR) = yes ]; then \
+		echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\
+		echo "Please add it to PATH and run ./configure again" ;\
+		exit 1;\
+	fi
+	@echo "Building with support for profile generation:"
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
+	touch $@
+
+# Run task with profile generation build to create profile information.
+profile-run-stamp:
+	@echo "Running code to generate profile data (this can take a while):"
+	# First, we need to create a clean build with profile generation
+	# enabled.
+	$(MAKE) profile-gen-stamp
+	# Next, run the profile task to generate the profile information.
+	@ # FIXME: can't run for a cross build
+	task="$(PROFILE_TASK)"; \
+	case "$$task" in \
+	*-s\ *) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  while [ -f $(abs_builddir)/build/pynexttest ]; do \
+	    $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	  done;; \
+	*) \
+	  $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $$task; \
+	esac || true
+	$(LLVM_PROF_MERGER)
+	# Remove profile generation binary since we are done with it.
+	$(MAKE) clean-retain-profile
+	# This is an expensive target to build and it does not have proper
+	# makefile dependency information.  So, we create a "stamp" file
+	# to record its completion and avoid re-running it.
+	touch $@
+
+# Compile Python binary with profile guided optimization.
+# To force re-running of the profile task, remove the profile-run-stamp file.
+.PHONY: profile-opt
+profile-opt: profile-run-stamp
+	@echo "Rebuilding with profile guided optimizations:"
+	-rm -f profile-clean-stamp
+	$(MAKE) all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)"
+
+# List of binaries that BOLT runs on.
+BOLT_BINARIES := $(BUILDPYTHON)
+
+BOLT_INSTRUMENT_FLAGS :=  -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1 
+BOLT_APPLY_FLAGS :=   -update-debug-sections -skip-funcs=_PyEval_EvalFrameDefault,sre_ucs1_match/1,sre_ucs2_match/1,sre_ucs4_match/1  -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot 
+
+.PHONY: clean-bolt
+clean-bolt:
+	# Profile data.
+	rm -f *.fdata
+	# Pristine binaries before BOLT optimization.
+	rm -f *.prebolt
+	# BOLT instrumented binaries.
+	rm -f *.bolt_inst
+
+profile-bolt-stamp: $(BUILDPYTHON)
+	# Ensure a pristine, pre-BOLT copy of the binary and no profile data from last run.
+	for bin in $(BOLT_BINARIES); do \
+	  prebolt="$${bin}.prebolt"; \
+	  if [ -e "$${prebolt}" ]; then \
+	    echo "Restoring pre-BOLT binary $${prebolt}"; \
+	    mv "$${bin}.prebolt" "$${bin}"; \
+	  fi; \
+	  cp "$${bin}" "$${prebolt}"; \
+	  rm -f $${bin}.bolt.*.fdata $${bin}.fdata; \
+	done
+	# Instrument each binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}" -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $${bin}.bolt) -o $${bin}.bolt_inst $(BOLT_INSTRUMENT_FLAGS); \
+	  mv "$${bin}.bolt_inst" "$${bin}"; \
+	done
+	# Run instrumented binaries to collect data.
+	$(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
+	# Merge all the data files together.
+	for bin in $(BOLT_BINARIES); do \
+	   $${bin}.*.fdata > "$${bin}.fdata"; \
+	  rm -f $${bin}.*.fdata; \
+	done
+	# Run bolt against the merged data to produce an optimized binary.
+	for bin in $(BOLT_BINARIES); do \
+	   "$${bin}.prebolt" -o "$${bin}.bolt" -data="$${bin}.fdata" $(BOLT_APPLY_FLAGS); \
+	  mv "$${bin}.bolt" "$${bin}"; \
+	done
+	touch $@
+
+.PHONY: bolt-opt
+bolt-opt:
+	$(MAKE) 
+	$(MAKE) profile-bolt-stamp
+
+# Compile and run with gcov
+.PHONY: coverage
+coverage:
+	@echo "Building with support for coverage checking:"
+	$(MAKE) clean
+	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
+
+.PHONY: coverage-lcov
+coverage-lcov:
+	@echo "Creating Coverage HTML report with LCOV:"
+	@rm -f $(COVERAGE_INFO)
+	@rm -rf $(COVERAGE_REPORT)
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
+	    --base-directory $(realpath $(abs_builddir)) \
+	    --path $(realpath $(abs_srcdir)) \
+	    --output-file $(COVERAGE_INFO)
+	@ # remove 3rd party modules, system headers and internal files with
+	@ # debug, test or dummy functions.
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
+	    '*/Modules/_blake2/impl/*' \
+	    '*/Modules/_ctypes/libffi*/*' \
+	    '*/Modules/_decimal/libmpdec/*' \
+	    '*/Modules/expat/*' \
+	    '*/Modules/xx*.c' \
+	    '*/Python/pyfpe.c' \
+	    '*/Python/pystrcmp.c' \
+	    '/usr/include/*' \
+	    '/usr/local/include/*' \
+	    '/usr/lib/gcc/*' \
+	    --output-file $(COVERAGE_INFO)
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
+	    $(COVERAGE_REPORT_OPTIONS)
+	@echo
+	@echo "lcov report at $(COVERAGE_REPORT)/index.html"
+	@echo
+
+# Force regeneration of parser and frozen modules
+.PHONY: coverage-report
+coverage-report: regen-token regen-frozen
+	@ # build with coverage info
+	$(MAKE) coverage
+	@ # run tests, ignore failures
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) || true
+	@ # build lcov report
+	$(MAKE) coverage-lcov
+
+# Run "Argument Clinic" over all source files
+.PHONY: clinic
+clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --exclude Lib/test/clinic.test.c --srcdir $(srcdir)
+
+.PHONY: clinic-tests
+clinic-tests: check-clean-src $(srcdir)/Lib/test/clinic.test.c
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $(srcdir)/Lib/test/clinic.test.c
+
+# Build the interpreter
+$(BUILDPYTHON):	Programs/python.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
+
+# Create build directory and generate the sysconfig build-time data there.
+# pybuilddir.txt contains the name of the build dir and is used for
+# sys.path fixup -- see Modules/getpath.c.
+# Since this step runs before shared modules are built, try to avoid bootstrap
+# problems by creating a dummy pybuilddir.txt just to allow interpreter
+# initialization to succeed.  It will be overwritten by generate-posix-vars
+# or removed in case of failure.
+pybuilddir.txt: $(PYTHON_FOR_BUILD_DEPS)
+	@echo "none" > ./pybuilddir.txt
+	$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
+	if test $$? -ne 0 ; then \
+		echo "generate-posix-vars failed" ; \
+		rm -f ./pybuilddir.txt ; \
+		exit 1 ; \
+	fi
+
+# blake2s is auto-generated from blake2b
+$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@
+
+# Build static library
+$(LIBRARY): $(LIBRARY_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
+
+libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
+	# AIX Linker don't support "-h" option
+	if test "$(MACHDEP)" != "aix"; then \
+		$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	else \
+		$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
+	fi
+	if test $(INSTSONAME) != $@; then \
+		$(LN) -f $(INSTSONAME) $@; \
+	fi
+
+libpython3.so:	libpython$(LDVERSION).so
+	$(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^
+
+libpython$(LDVERSION).dylib: $(LIBRARY_OBJS)
+	 $(CC) -dynamiclib $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
+
+
+libpython$(VERSION).sl: $(LIBRARY_OBJS)
+	$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM)
+
+# List of exported symbols for AIX
+Modules/python.exp: $(LIBRARY)
+	$(srcdir)/Modules/makexp_aix $@ "$(EXPORTSFROM)" $?
+
+# Copy up the gdb python hooks into a position where they can be automatically
+# loaded by gdb during Lib/test/test_gdb.py
+#
+# Distributors are likely to want to install this somewhere else e.g. relative
+# to the stripped DWARF data for the shared library.
+.PHONY: gdbhooks
+gdbhooks: $(BUILDPYTHON)-gdb.py
+
+SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py
+$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)
+	$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py
+
+# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
+# minimal framework (not including the Lib directory and such) in the current
+# directory.
+$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL) -d -m $(DIRMODE)  \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
+		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
+
+# This rule is for iOS, which requires an annoyingly just slightly different
+# format for frameworks to macOS. It *doesn't* use a versioned framework, and
+# the Info.plist must be in the root of the framework.
+$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK): \
+		$(LIBRARY) \
+		$(RESSRCDIR)/Info.plist
+	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)
+	$(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \
+		-all_load $(LIBRARY) \
+		-install_name $(PYTHONFRAMEWORKINSTALLNAMEPREFIX)/$(PYTHONFRAMEWORK) \
+		-compatibility_version $(VERSION) \
+		-current_version $(VERSION) \
+		-framework CoreFoundation $(LIBS);
+	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(PYTHONFRAMEWORKDIR)/Info.plist
+
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS)
+	if test -n "$(DLLLIBRARY)"; then \
+		$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+			$(LIBS) $(MODLIBS) $(SYSLIBS); \
+	else true; \
+	fi
+
+# wasm32-emscripten browser build
+# wasm assets directory is relative to current build dir, e.g. "./usr/local".
+# --preload-file turns a relative asset path into an absolute path.
+
+.PHONY: wasm_stdlib
+wasm_stdlib: $(WASM_STDLIB)
+$(WASM_STDLIB): $(srcdir)/Lib/*.py $(srcdir)/Lib/*/*.py \
+	    $(srcdir)/Tools/wasm/wasm_assets.py \
+	    Makefile pybuilddir.txt Modules/Setup.local
+	$(PYTHON_FOR_BUILD) $(srcdir)/Tools/wasm/wasm_assets.py \
+	    --buildroot . --prefix $(prefix)
+
+python.html: $(srcdir)/Tools/wasm/python.html python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.html $@
+
+python.worker.js: $(srcdir)/Tools/wasm/python.worker.js
+	@cp $(srcdir)/Tools/wasm/python.worker.js $@
+
+############################################################################
+# Header files
+
+PYTHON_HEADERS= \
+		$(srcdir)/Include/Python.h \
+		$(srcdir)/Include/abstract.h \
+		$(srcdir)/Include/bltinmodule.h \
+		$(srcdir)/Include/boolobject.h \
+		$(srcdir)/Include/bytearrayobject.h \
+		$(srcdir)/Include/bytesobject.h \
+		$(srcdir)/Include/ceval.h \
+		$(srcdir)/Include/codecs.h \
+		$(srcdir)/Include/compile.h \
+		$(srcdir)/Include/complexobject.h \
+		$(srcdir)/Include/critical_section.h \
+		$(srcdir)/Include/descrobject.h \
+		$(srcdir)/Include/dictobject.h \
+		$(srcdir)/Include/dynamic_annotations.h \
+		$(srcdir)/Include/enumobject.h \
+		$(srcdir)/Include/errcode.h \
+		$(srcdir)/Include/exports.h \
+		$(srcdir)/Include/fileobject.h \
+		$(srcdir)/Include/fileutils.h \
+		$(srcdir)/Include/floatobject.h \
+		$(srcdir)/Include/frameobject.h \
+		$(srcdir)/Include/genericaliasobject.h \
+		$(srcdir)/Include/import.h \
+		$(srcdir)/Include/intrcheck.h \
+		$(srcdir)/Include/iterobject.h \
+		$(srcdir)/Include/listobject.h \
+		$(srcdir)/Include/lock.h \
+		$(srcdir)/Include/longobject.h \
+		$(srcdir)/Include/marshal.h \
+		$(srcdir)/Include/memoryobject.h \
+		$(srcdir)/Include/methodobject.h \
+		$(srcdir)/Include/modsupport.h \
+		$(srcdir)/Include/moduleobject.h \
+		$(srcdir)/Include/monitoring.h \
+		$(srcdir)/Include/object.h \
+		$(srcdir)/Include/objimpl.h \
+		$(srcdir)/Include/opcode.h \
+		$(srcdir)/Include/opcode_ids.h \
+		$(srcdir)/Include/osdefs.h \
+		$(srcdir)/Include/osmodule.h \
+		$(srcdir)/Include/patchlevel.h \
+		$(srcdir)/Include/pyatomic.h \
+		$(srcdir)/Include/pybuffer.h \
+		$(srcdir)/Include/pycapsule.h \
+		$(srcdir)/Include/pydtrace.h \
+		$(srcdir)/Include/pyerrors.h \
+		$(srcdir)/Include/pyexpat.h \
+		$(srcdir)/Include/pyframe.h \
+		$(srcdir)/Include/pyhash.h \
+		$(srcdir)/Include/pylifecycle.h \
+		$(srcdir)/Include/pymacconfig.h \
+		$(srcdir)/Include/pymacro.h \
+		$(srcdir)/Include/pymath.h \
+		$(srcdir)/Include/pymem.h \
+		$(srcdir)/Include/pyport.h \
+		$(srcdir)/Include/pystate.h \
+		$(srcdir)/Include/pystats.h \
+		$(srcdir)/Include/pystrcmp.h \
+		$(srcdir)/Include/pystrtod.h \
+		$(srcdir)/Include/pythonrun.h \
+		$(srcdir)/Include/pythread.h \
+		$(srcdir)/Include/pytypedefs.h \
+		$(srcdir)/Include/rangeobject.h \
+		$(srcdir)/Include/setobject.h \
+		$(srcdir)/Include/sliceobject.h \
+		$(srcdir)/Include/structmember.h \
+		$(srcdir)/Include/structseq.h \
+		$(srcdir)/Include/sysmodule.h \
+		$(srcdir)/Include/traceback.h \
+		$(srcdir)/Include/tupleobject.h \
+		$(srcdir)/Include/typeslots.h \
+		$(srcdir)/Include/unicodeobject.h \
+		$(srcdir)/Include/warnings.h \
+		$(srcdir)/Include/weakrefobject.h \
+		\
+		pyconfig.h \
+		$(PARSER_HEADERS) \
+		\
+		$(srcdir)/Include/cpython/abstract.h \
+		$(srcdir)/Include/cpython/bytearrayobject.h \
+		$(srcdir)/Include/cpython/bytesobject.h \
+		$(srcdir)/Include/cpython/cellobject.h \
+		$(srcdir)/Include/cpython/ceval.h \
+		$(srcdir)/Include/cpython/classobject.h \
+		$(srcdir)/Include/cpython/code.h \
+		$(srcdir)/Include/cpython/compile.h \
+		$(srcdir)/Include/cpython/complexobject.h \
+		$(srcdir)/Include/cpython/context.h \
+		$(srcdir)/Include/cpython/critical_section.h \
+		$(srcdir)/Include/cpython/descrobject.h \
+		$(srcdir)/Include/cpython/dictobject.h \
+		$(srcdir)/Include/cpython/fileobject.h \
+		$(srcdir)/Include/cpython/fileutils.h \
+		$(srcdir)/Include/cpython/floatobject.h \
+		$(srcdir)/Include/cpython/frameobject.h \
+		$(srcdir)/Include/cpython/funcobject.h \
+		$(srcdir)/Include/cpython/genobject.h \
+		$(srcdir)/Include/cpython/import.h \
+		$(srcdir)/Include/cpython/initconfig.h \
+		$(srcdir)/Include/cpython/listobject.h \
+		$(srcdir)/Include/cpython/lock.h \
+		$(srcdir)/Include/cpython/longintrepr.h \
+		$(srcdir)/Include/cpython/longobject.h \
+		$(srcdir)/Include/cpython/memoryobject.h \
+		$(srcdir)/Include/cpython/methodobject.h \
+		$(srcdir)/Include/cpython/modsupport.h \
+		$(srcdir)/Include/cpython/monitoring.h \
+		$(srcdir)/Include/cpython/object.h \
+		$(srcdir)/Include/cpython/objimpl.h \
+		$(srcdir)/Include/cpython/odictobject.h \
+		$(srcdir)/Include/cpython/picklebufobject.h \
+		$(srcdir)/Include/cpython/pthread_stubs.h \
+		$(srcdir)/Include/cpython/pyatomic.h \
+		$(srcdir)/Include/cpython/pyatomic_gcc.h \
+		$(srcdir)/Include/cpython/pyatomic_std.h \
+		$(srcdir)/Include/cpython/pyctype.h \
+		$(srcdir)/Include/cpython/pydebug.h \
+		$(srcdir)/Include/cpython/pyerrors.h \
+		$(srcdir)/Include/cpython/pyfpe.h \
+		$(srcdir)/Include/cpython/pyframe.h \
+		$(srcdir)/Include/cpython/pyhash.h \
+		$(srcdir)/Include/cpython/pylifecycle.h \
+		$(srcdir)/Include/cpython/pymem.h \
+		$(srcdir)/Include/cpython/pystate.h \
+		$(srcdir)/Include/cpython/pystats.h \
+		$(srcdir)/Include/cpython/pythonrun.h \
+		$(srcdir)/Include/cpython/pythread.h \
+		$(srcdir)/Include/cpython/setobject.h \
+		$(srcdir)/Include/cpython/sysmodule.h \
+		$(srcdir)/Include/cpython/traceback.h \
+		$(srcdir)/Include/cpython/tracemalloc.h \
+		$(srcdir)/Include/cpython/tupleobject.h \
+		$(srcdir)/Include/cpython/unicodeobject.h \
+		$(srcdir)/Include/cpython/warnings.h \
+		$(srcdir)/Include/cpython/weakrefobject.h \
+		\
+		$(MIMALLOC_HEADERS) \
+		\
+		$(srcdir)/Include/internal/pycore_abstract.h \
+		$(srcdir)/Include/internal/pycore_asdl.h \
+		$(srcdir)/Include/internal/pycore_ast.h \
+		$(srcdir)/Include/internal/pycore_ast_state.h \
+		$(srcdir)/Include/internal/pycore_atexit.h \
+		$(srcdir)/Include/internal/pycore_backoff.h \
+		$(srcdir)/Include/internal/pycore_bitutils.h \
+		$(srcdir)/Include/internal/pycore_blocks_output_buffer.h \
+		$(srcdir)/Include/internal/pycore_brc.h \
+		$(srcdir)/Include/internal/pycore_bytes_methods.h \
+		$(srcdir)/Include/internal/pycore_bytesobject.h \
+		$(srcdir)/Include/internal/pycore_call.h \
+		$(srcdir)/Include/internal/pycore_capsule.h \
+		$(srcdir)/Include/internal/pycore_cell.h \
+		$(srcdir)/Include/internal/pycore_ceval.h \
+		$(srcdir)/Include/internal/pycore_ceval_state.h \
+		$(srcdir)/Include/internal/pycore_code.h \
+		$(srcdir)/Include/internal/pycore_codecs.h \
+		$(srcdir)/Include/internal/pycore_compile.h \
+		$(srcdir)/Include/internal/pycore_complexobject.h \
+		$(srcdir)/Include/internal/pycore_condvar.h \
+		$(srcdir)/Include/internal/pycore_context.h \
+		$(srcdir)/Include/internal/pycore_critical_section.h \
+		$(srcdir)/Include/internal/pycore_crossinterp.h \
+		$(srcdir)/Include/internal/pycore_descrobject.h \
+		$(srcdir)/Include/internal/pycore_dict.h \
+		$(srcdir)/Include/internal/pycore_dict_state.h \
+		$(srcdir)/Include/internal/pycore_dtoa.h \
+		$(srcdir)/Include/internal/pycore_exceptions.h \
+		$(srcdir)/Include/internal/pycore_faulthandler.h \
+		$(srcdir)/Include/internal/pycore_fileutils.h \
+		$(srcdir)/Include/internal/pycore_floatobject.h \
+		$(srcdir)/Include/internal/pycore_flowgraph.h \
+		$(srcdir)/Include/internal/pycore_format.h \
+		$(srcdir)/Include/internal/pycore_frame.h \
+		$(srcdir)/Include/internal/pycore_freelist.h \
+		$(srcdir)/Include/internal/pycore_function.h \
+		$(srcdir)/Include/internal/pycore_gc.h \
+		$(srcdir)/Include/internal/pycore_genobject.h \
+		$(srcdir)/Include/internal/pycore_getopt.h \
+		$(srcdir)/Include/internal/pycore_gil.h \
+		$(srcdir)/Include/internal/pycore_global_objects.h \
+		$(srcdir)/Include/internal/pycore_global_objects_fini_generated.h \
+		$(srcdir)/Include/internal/pycore_global_strings.h \
+		$(srcdir)/Include/internal/pycore_hamt.h \
+		$(srcdir)/Include/internal/pycore_hashtable.h \
+		$(srcdir)/Include/internal/pycore_identifier.h \
+		$(srcdir)/Include/internal/pycore_import.h \
+		$(srcdir)/Include/internal/pycore_importdl.h \
+		$(srcdir)/Include/internal/pycore_initconfig.h \
+		$(srcdir)/Include/internal/pycore_instruments.h \
+		$(srcdir)/Include/internal/pycore_instruction_sequence.h \
+		$(srcdir)/Include/internal/pycore_interp.h \
+		$(srcdir)/Include/internal/pycore_intrinsics.h \
+		$(srcdir)/Include/internal/pycore_jit.h \
+		$(srcdir)/Include/internal/pycore_list.h \
+		$(srcdir)/Include/internal/pycore_llist.h \
+		$(srcdir)/Include/internal/pycore_lock.h \
+		$(srcdir)/Include/internal/pycore_long.h \
+		$(srcdir)/Include/internal/pycore_memoryobject.h \
+		$(srcdir)/Include/internal/pycore_mimalloc.h \
+		$(srcdir)/Include/internal/pycore_modsupport.h \
+		$(srcdir)/Include/internal/pycore_moduleobject.h \
+		$(srcdir)/Include/internal/pycore_namespace.h \
+		$(srcdir)/Include/internal/pycore_object.h \
+		$(srcdir)/Include/internal/pycore_object_alloc.h \
+		$(srcdir)/Include/internal/pycore_object_stack.h \
+		$(srcdir)/Include/internal/pycore_object_state.h \
+		$(srcdir)/Include/internal/pycore_obmalloc.h \
+		$(srcdir)/Include/internal/pycore_obmalloc_init.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_opcode_utils.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Include/internal/pycore_parking_lot.h \
+		$(srcdir)/Include/internal/pycore_parser.h \
+		$(srcdir)/Include/internal/pycore_pathconfig.h \
+		$(srcdir)/Include/internal/pycore_pyarena.h \
+		$(srcdir)/Include/internal/pycore_pyatomic_ft_wrappers.h \
+		$(srcdir)/Include/internal/pycore_pybuffer.h \
+		$(srcdir)/Include/internal/pycore_pyerrors.h \
+		$(srcdir)/Include/internal/pycore_pyhash.h \
+		$(srcdir)/Include/internal/pycore_pylifecycle.h \
+		$(srcdir)/Include/internal/pycore_pymath.h \
+		$(srcdir)/Include/internal/pycore_pymem.h \
+		$(srcdir)/Include/internal/pycore_pymem_init.h \
+		$(srcdir)/Include/internal/pycore_pystate.h \
+		$(srcdir)/Include/internal/pycore_pystats.h \
+		$(srcdir)/Include/internal/pycore_pythonrun.h \
+		$(srcdir)/Include/internal/pycore_pythread.h \
+		$(srcdir)/Include/internal/pycore_qsbr.h \
+		$(srcdir)/Include/internal/pycore_range.h \
+		$(srcdir)/Include/internal/pycore_runtime.h \
+		$(srcdir)/Include/internal/pycore_runtime_init.h \
+		$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
+		$(srcdir)/Include/internal/pycore_semaphore.h \
+		$(srcdir)/Include/internal/pycore_setobject.h \
+		$(srcdir)/Include/internal/pycore_signal.h \
+		$(srcdir)/Include/internal/pycore_sliceobject.h \
+		$(srcdir)/Include/internal/pycore_strhex.h \
+		$(srcdir)/Include/internal/pycore_structseq.h \
+		$(srcdir)/Include/internal/pycore_symtable.h \
+		$(srcdir)/Include/internal/pycore_sysmodule.h \
+		$(srcdir)/Include/internal/pycore_stackref.h \
+		$(srcdir)/Include/internal/pycore_time.h \
+		$(srcdir)/Include/internal/pycore_token.h \
+		$(srcdir)/Include/internal/pycore_traceback.h \
+		$(srcdir)/Include/internal/pycore_tracemalloc.h \
+		$(srcdir)/Include/internal/pycore_tstate.h \
+		$(srcdir)/Include/internal/pycore_tuple.h \
+		$(srcdir)/Include/internal/pycore_typeobject.h \
+		$(srcdir)/Include/internal/pycore_typevarobject.h \
+		$(srcdir)/Include/internal/pycore_ucnhash.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject.h \
+		$(srcdir)/Include/internal/pycore_unicodeobject_generated.h \
+		$(srcdir)/Include/internal/pycore_unionobject.h \
+		$(srcdir)/Include/internal/pycore_uop_ids.h \
+		$(srcdir)/Include/internal/pycore_uop_metadata.h \
+		$(srcdir)/Include/internal/pycore_warnings.h \
+		$(srcdir)/Include/internal/pycore_weakref.h \
+		$(DTRACE_HEADERS) \
+		 \
+		\
+		$(srcdir)/Python/stdlib_module_names.h
+
+##########################################################################
+# Build static libmpdec.a
+LIBMPDEC_CFLAGS=-I$(srcdir)/Modules/_decimal/libmpdec -DCONFIG_64=1 -DANSI=1 -DHAVE_UINT128_T=1 $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+# "%.o: %c" is not portable
+Modules/_decimal/libmpdec/basearith.o: $(srcdir)/Modules/_decimal/libmpdec/basearith.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/basearith.c
+
+Modules/_decimal/libmpdec/constants.o: $(srcdir)/Modules/_decimal/libmpdec/constants.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/constants.c
+
+Modules/_decimal/libmpdec/context.o: $(srcdir)/Modules/_decimal/libmpdec/context.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/context.c
+
+Modules/_decimal/libmpdec/convolute.o: $(srcdir)/Modules/_decimal/libmpdec/convolute.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/convolute.c
+
+Modules/_decimal/libmpdec/crt.o: $(srcdir)/Modules/_decimal/libmpdec/crt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/crt.c
+
+Modules/_decimal/libmpdec/difradix2.o: $(srcdir)/Modules/_decimal/libmpdec/difradix2.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/difradix2.c
+
+Modules/_decimal/libmpdec/fnt.o: $(srcdir)/Modules/_decimal/libmpdec/fnt.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fnt.c
+
+Modules/_decimal/libmpdec/fourstep.o: $(srcdir)/Modules/_decimal/libmpdec/fourstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/fourstep.c
+
+Modules/_decimal/libmpdec/io.o: $(srcdir)/Modules/_decimal/libmpdec/io.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/io.c
+
+Modules/_decimal/libmpdec/mpalloc.o: $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpalloc.c
+
+Modules/_decimal/libmpdec/mpdecimal.o: $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpdecimal.c
+
+Modules/_decimal/libmpdec/mpsignal.o: $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/mpsignal.c
+
+Modules/_decimal/libmpdec/numbertheory.o: $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/numbertheory.c
+
+Modules/_decimal/libmpdec/sixstep.o: $(srcdir)/Modules/_decimal/libmpdec/sixstep.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/sixstep.c
+
+Modules/_decimal/libmpdec/transpose.o: $(srcdir)/Modules/_decimal/libmpdec/transpose.c $(LIBMPDEC_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBMPDEC_CFLAGS) -o $@ $(srcdir)/Modules/_decimal/libmpdec/transpose.c
+
+$(LIBMPDEC_A): $(LIBMPDEC_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBMPDEC_OBJS)
+
+##########################################################################
+# Build static libexpat.a
+LIBEXPAT_CFLAGS=-I$(srcdir)/Modules/expat $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/expat/xmlparse.o: $(srcdir)/Modules/expat/xmlparse.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlparse.c
+
+Modules/expat/xmlrole.o: $(srcdir)/Modules/expat/xmlrole.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmlrole.c
+
+Modules/expat/xmltok.o: $(srcdir)/Modules/expat/xmltok.c $(LIBEXPAT_HEADERS) $(PYTHON_HEADERS)
+	$(CC) -c $(LIBEXPAT_CFLAGS) -o $@ $(srcdir)/Modules/expat/xmltok.c
+
+$(LIBEXPAT_A): $(LIBEXPAT_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBEXPAT_OBJS)
+
+##########################################################################
+# Build HACL* static libraries for hashlib: libHacl_Hash_SHA2.a
+LIBHACL_CFLAGS=-I$(srcdir)/Modules/_hacl/include -D_BSD_SOURCE -D_DEFAULT_SOURCE $(PY_STDMODULE_CFLAGS) $(CCSHARED)
+
+Modules/_hacl/Hacl_Hash_SHA2.o: $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c $(LIBHACL_SHA2_HEADERS)
+	$(CC) -c $(LIBHACL_CFLAGS) -o $@ $(srcdir)/Modules/_hacl/Hacl_Hash_SHA2.c
+
+$(LIBHACL_SHA2_A): $(LIBHACL_SHA2_OBJS)
+	-rm -f $@
+	$(AR) $(ARFLAGS) $@ $(LIBHACL_SHA2_OBJS)
+
+# create relative links from build/lib.platform/egg.so to Modules/egg.so
+# pybuilddir.txt is created too late. We cannot use it in Makefile
+# targets. ln --relative is not portable.
+.PHONY: sharedmods
+sharedmods: $(SHAREDMODS) pybuilddir.txt
+	@target=`cat pybuilddir.txt`; \
+	$(MKDIR_P) $$target; \
+	for mod in X $(SHAREDMODS); do \
+		if test $$mod != X; then \
+			$(LN) -sf ../../$$mod $$target/`basename $$mod`; \
+		fi; \
+	done
+
+# dependency on BUILDPYTHON ensures that the target is run last
+.PHONY: checksharedmods
+checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
+
+.PHONY: rundsymutil
+rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
+	@if [ ! -z $(DSYMUTIL) ] ; then \
+		echo $(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		$(DSYMUTIL_PATH) $(BUILDPYTHON); \
+		if test -f $(LDLIBRARY); then \
+			echo $(DSYMUTIL_PATH) $(LDLIBRARY); \
+			$(DSYMUTIL_PATH) $(LDLIBRARY); \
+		fi; \
+		for mod in X $(SHAREDMODS); do \
+			if test $$mod != X; then \
+				echo $(DSYMUTIL_PATH) $$mod; \
+				$(DSYMUTIL_PATH) $$mod; \
+			fi; \
+		done \
+	fi
+
+Modules/Setup.local:
+	@# Create empty Setup.local when file was deleted by user
+	echo "# Edit this file for local setup changes" > $@
+
+Modules/Setup.bootstrap: $(srcdir)/Modules/Setup.bootstrap.in config.status
+	./config.status $@
+
+Modules/Setup.stdlib: $(srcdir)/Modules/Setup.stdlib.in config.status
+	./config.status $@
+
+Makefile Modules/config.c: Makefile.pre \
+				$(srcdir)/Modules/config.c.in \
+				$(MAKESETUP) \
+				$(srcdir)/Modules/Setup \
+				Modules/Setup.local \
+				Modules/Setup.bootstrap \
+				Modules/Setup.stdlib
+	$(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
+				-s Modules \
+				Modules/Setup.local \
+				Modules/Setup.stdlib \
+				Modules/Setup.bootstrap \
+				$(srcdir)/Modules/Setup
+	@mv config.c Modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+.PHONY: regen-test-frozenmain
+regen-test-frozenmain: $(BUILDPYTHON)
+	# Regenerate Programs/test_frozenmain.h
+	# from Programs/test_frozenmain.py
+	# using Programs/freeze_test_frozenmain.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Programs/freeze_test_frozenmain.py Programs/test_frozenmain.h
+
+.PHONY: regen-test-levenshtein
+regen-test-levenshtein:
+	# Regenerate Lib/test/levenshtein_examples.json
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py $(srcdir)/Lib/test/levenshtein_examples.json
+
+.PHONY: regen-re
+regen-re: $(BUILDPYTHON)
+	# Regenerate Lib/re/_casefix.py
+	# using Tools/build/generate_re_casefix.py
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+
+Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
+	$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+############################################################################
+# "Bootstrap Python" used to run Programs/_freeze_module.py
+
+BOOTSTRAP_HEADERS = \
+	Python/frozen_modules/importlib._bootstrap.h \
+	Python/frozen_modules/importlib._bootstrap_external.h \
+	Python/frozen_modules/zipimport.h
+
+Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS)
+
+_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local
+	$(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \
+		Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+
+############################################################################
+# frozen modules (including importlib)
+#
+# Freezing is a multi step process. It works differently for standard builds
+# and cross builds. Standard builds use Programs/_freeze_module and
+# _bootstrap_python for freezing, so users can build Python
+# without an existing Python installation. Cross builds cannot execute
+# compiled binaries and therefore rely on an external build Python
+# interpreter. The build interpreter must have same version and same bytecode
+# as the host (target) binary.
+#
+# Standard build process:
+# 1) compile minimal core objects for Py_Compile*() and PyMarshal_Write*().
+# 2) build Programs/_freeze_module binary.
+# 3) create frozen module headers for importlib and getpath.
+# 4) build _bootstrap_python binary.
+# 5) create remaining frozen module headers with
+#    ``./_bootstrap_python Programs/_freeze_module.py``. The pure Python
+#    script is used to test the cross compile code path.
+#
+# Cross compile process:
+# 1) create all frozen module headers with external build Python and
+#    Programs/_freeze_module.py script.
+#
+
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
+FROZEN_FILES_IN = \
+		Lib/importlib/_bootstrap.py \
+		Lib/importlib/_bootstrap_external.py \
+		Lib/zipimport.py \
+		Lib/abc.py \
+		Lib/codecs.py \
+		Lib/io.py \
+		Lib/_collections_abc.py \
+		Lib/_sitebuiltins.py \
+		Lib/genericpath.py \
+		Lib/ntpath.py \
+		Lib/posixpath.py \
+		Lib/os.py \
+		Lib/site.py \
+		Lib/stat.py \
+		Lib/importlib/util.py \
+		Lib/importlib/machinery.py \
+		Lib/runpy.py \
+		Lib/__hello__.py \
+		Lib/__phello__/__init__.py \
+		Lib/__phello__/ham/__init__.py \
+		Lib/__phello__/ham/eggs.py \
+		Lib/__phello__/spam.py \
+		Tools/freeze/flag.py
+# End FROZEN_FILES_IN
+FROZEN_FILES_OUT = \
+		Python/frozen_modules/importlib._bootstrap.h \
+		Python/frozen_modules/importlib._bootstrap_external.h \
+		Python/frozen_modules/zipimport.h \
+		Python/frozen_modules/abc.h \
+		Python/frozen_modules/codecs.h \
+		Python/frozen_modules/io.h \
+		Python/frozen_modules/_collections_abc.h \
+		Python/frozen_modules/_sitebuiltins.h \
+		Python/frozen_modules/genericpath.h \
+		Python/frozen_modules/ntpath.h \
+		Python/frozen_modules/posixpath.h \
+		Python/frozen_modules/os.h \
+		Python/frozen_modules/site.h \
+		Python/frozen_modules/stat.h \
+		Python/frozen_modules/importlib.util.h \
+		Python/frozen_modules/importlib.machinery.h \
+		Python/frozen_modules/runpy.h \
+		Python/frozen_modules/__hello__.h \
+		Python/frozen_modules/__phello__.h \
+		Python/frozen_modules/__phello__.ham.h \
+		Python/frozen_modules/__phello__.ham.eggs.h \
+		Python/frozen_modules/__phello__.spam.h \
+		Python/frozen_modules/frozen_only.h
+# End FROZEN_FILES_OUT
+
+Programs/_freeze_module.o: Programs/_freeze_module.c Makefile
+
+Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile
+
+Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN)
+	$(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS)
+
+# We manually freeze getpath.py rather than through freeze_modules
+Python/frozen_modules/getpath.h: Modules/getpath.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) getpath $(srcdir)/Modules/getpath.py Python/frozen_modules/getpath.h
+
+# BEGIN: freezing modules
+
+Python/frozen_modules/importlib._bootstrap.h: Lib/importlib/_bootstrap.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap $(srcdir)/Lib/importlib/_bootstrap.py Python/frozen_modules/importlib._bootstrap.h
+
+Python/frozen_modules/importlib._bootstrap_external.h: Lib/importlib/_bootstrap_external.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) importlib._bootstrap_external $(srcdir)/Lib/importlib/_bootstrap_external.py Python/frozen_modules/importlib._bootstrap_external.h
+
+Python/frozen_modules/zipimport.h: Lib/zipimport.py $(FREEZE_MODULE_BOOTSTRAP_DEPS)
+	$(FREEZE_MODULE_BOOTSTRAP) zipimport $(srcdir)/Lib/zipimport.py Python/frozen_modules/zipimport.h
+
+Python/frozen_modules/abc.h: Lib/abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) abc $(srcdir)/Lib/abc.py Python/frozen_modules/abc.h
+
+Python/frozen_modules/codecs.h: Lib/codecs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) codecs $(srcdir)/Lib/codecs.py Python/frozen_modules/codecs.h
+
+Python/frozen_modules/io.h: Lib/io.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) io $(srcdir)/Lib/io.py Python/frozen_modules/io.h
+
+Python/frozen_modules/_collections_abc.h: Lib/_collections_abc.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _collections_abc $(srcdir)/Lib/_collections_abc.py Python/frozen_modules/_collections_abc.h
+
+Python/frozen_modules/_sitebuiltins.h: Lib/_sitebuiltins.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) _sitebuiltins $(srcdir)/Lib/_sitebuiltins.py Python/frozen_modules/_sitebuiltins.h
+
+Python/frozen_modules/genericpath.h: Lib/genericpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) genericpath $(srcdir)/Lib/genericpath.py Python/frozen_modules/genericpath.h
+
+Python/frozen_modules/ntpath.h: Lib/ntpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) ntpath $(srcdir)/Lib/ntpath.py Python/frozen_modules/ntpath.h
+
+Python/frozen_modules/posixpath.h: Lib/posixpath.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) posixpath $(srcdir)/Lib/posixpath.py Python/frozen_modules/posixpath.h
+
+Python/frozen_modules/os.h: Lib/os.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) os $(srcdir)/Lib/os.py Python/frozen_modules/os.h
+
+Python/frozen_modules/site.h: Lib/site.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) site $(srcdir)/Lib/site.py Python/frozen_modules/site.h
+
+Python/frozen_modules/stat.h: Lib/stat.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) stat $(srcdir)/Lib/stat.py Python/frozen_modules/stat.h
+
+Python/frozen_modules/importlib.util.h: Lib/importlib/util.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.util $(srcdir)/Lib/importlib/util.py Python/frozen_modules/importlib.util.h
+
+Python/frozen_modules/importlib.machinery.h: Lib/importlib/machinery.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) importlib.machinery $(srcdir)/Lib/importlib/machinery.py Python/frozen_modules/importlib.machinery.h
+
+Python/frozen_modules/runpy.h: Lib/runpy.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) runpy $(srcdir)/Lib/runpy.py Python/frozen_modules/runpy.h
+
+Python/frozen_modules/__hello__.h: Lib/__hello__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __hello__ $(srcdir)/Lib/__hello__.py Python/frozen_modules/__hello__.h
+
+Python/frozen_modules/__phello__.h: Lib/__phello__/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__ $(srcdir)/Lib/__phello__/__init__.py Python/frozen_modules/__phello__.h
+
+Python/frozen_modules/__phello__.ham.h: Lib/__phello__/ham/__init__.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham $(srcdir)/Lib/__phello__/ham/__init__.py Python/frozen_modules/__phello__.ham.h
+
+Python/frozen_modules/__phello__.ham.eggs.h: Lib/__phello__/ham/eggs.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.ham.eggs $(srcdir)/Lib/__phello__/ham/eggs.py Python/frozen_modules/__phello__.ham.eggs.h
+
+Python/frozen_modules/__phello__.spam.h: Lib/__phello__/spam.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) __phello__.spam $(srcdir)/Lib/__phello__/spam.py Python/frozen_modules/__phello__.spam.h
+
+Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
+	$(FREEZE_MODULE) frozen_only $(srcdir)/Tools/freeze/flag.py Python/frozen_modules/frozen_only.h
+
+# END: freezing modules
+
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
+
+.PHONY: regen-frozen
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py --frozen-modules
+	@echo "The Makefile was updated, you may need to re-run make."
+
+# We keep this renamed target around for folks with muscle memory.
+.PHONY: regen-importlib
+regen-importlib: regen-frozen
+
+############################################################################
+# Global objects
+
+# Dependencies which can add and/or remove _Py_ID() identifiers:
+# - "make clinic"
+.PHONY: regen-global-objects
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py clinic
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
+
+############################################################################
+# ABI
+
+.PHONY: regen-abidump
+regen-abidump: all
+	@$(MKDIR_P) $(srcdir)/Doc/data/
+	abidw "libpython$(LDVERSION).so" --no-architecture --out-file $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+	@$(UPDATE_FILE) --create $(srcdir)/Doc/data/python$(LDVERSION).abi $(srcdir)/Doc/data/python$(LDVERSION).abi.new
+
+.PHONY: check-abidump
+check-abidump: all
+	abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
+
+.PHONY: regen-limited-abi
+regen-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+
+############################################################################
+# Regenerate Unicode Data
+
+.PHONY: regen-unicodedata
+regen-unicodedata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/unicode/makeunicodedata.py
+
+
+############################################################################
+# Regenerate all generated files
+
+# "clinic" is regenerated implicitly via "regen-global-objects".
+.PHONY: regen-all
+regen-all: regen-cases regen-typeslots \
+	regen-token regen-ast regen-keyword regen-sre regen-frozen \
+	regen-pegen-metaparser regen-pegen regen-test-frozenmain \
+	regen-test-levenshtein regen-global-objects
+	@echo
+	@echo "Note: make regen-stdlib-module-names, make regen-limited-abi, "
+	@echo "make regen-configure, make regen-sbom, and make regen-unicodedata should be run manually"
+
+############################################################################
+# Special rules for object files
+
+Modules/getbuildinfo.o: $(PARSER_OBJS) \
+		$(OBJECT_OBJS) \
+		$(PYTHON_OBJS) \
+		$(MODULE_OBJS) \
+		$(MODOBJS) \
+		$(DTRACE_OBJS) \
+		$(srcdir)/Modules/getbuildinfo.c
+	$(CC) -c $(PY_CORE_CFLAGS) \
+	      -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \
+	      -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \
+	      -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \
+	      -o $@ $(srcdir)/Modules/getbuildinfo.c
+
+Modules/getpath.o: $(srcdir)/Modules/getpath.c Python/frozen_modules/getpath.h Makefile $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+		-DPREFIX='"$(prefix)"' \
+		-DEXEC_PREFIX='"$(exec_prefix)"' \
+		-DVERSION='"$(VERSION)"' \
+		-DVPATH='"$(VPATH)"' \
+		-DPLATLIBDIR='"$(PLATLIBDIR)"' \
+		-DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' \
+		-o $@ $(srcdir)/Modules/getpath.c
+
+Programs/python.o: $(srcdir)/Programs/python.c
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c
+
+Programs/_testembed.o: $(srcdir)/Programs/_testembed.c Programs/test_frozenmain.h $(PYTHON_HEADERS)
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c
+
+Modules/_sre/sre.o: $(srcdir)/Modules/_sre/sre.c $(srcdir)/Modules/_sre/sre.h $(srcdir)/Modules/_sre/sre_constants.h $(srcdir)/Modules/_sre/sre_lib.h
+
+Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
+
+Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
+
+Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h
+
+Python/initconfig.o: $(srcdir)/Python/initconfig.c $(srcdir)/Python/config_common.h
+
+Python/interpconfig.o: $(srcdir)/Python/interpconfig.c $(srcdir)/Python/config_common.h
+
+Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		$(if $(MULTIARCH),-DMULTIARCH='"$(MULTIARCH)"') \
+		-DSOABI='"$(SOABI)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/dynload_shlib.c
+
+Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DSHLIB_EXT='"$(EXT_SUFFIX)"' \
+		-o $@ $(srcdir)/Python/dynload_hpux.c
+
+Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
+	$(CC) -c $(PY_CORE_CFLAGS) \
+		-DABIFLAGS='"$(ABIFLAGS)"' \
+		$(MULTIARCH_CPPFLAGS) \
+		-o $@ $(srcdir)/Python/sysmodule.c
+
+$(IO_OBJS): $(IO_H)
+
+.PHONY: regen-pegen-metaparser
+regen-pegen-metaparser:
+	@$(MKDIR_P) $(srcdir)/Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q python \
+	$(srcdir)/Tools/peg_generator/pegen/metagrammar.gram \
+	-o $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+	$(UPDATE_FILE) $(srcdir)/Tools/peg_generator/pegen/grammar_parser.py \
+	$(srcdir)/Tools/peg_generator/pegen/grammar_parser.py.new
+
+.PHONY: regen-pegen
+regen-pegen:
+	@$(MKDIR_P) $(srcdir)/Parser
+	@$(MKDIR_P) $(srcdir)/Parser/tokenizer
+	@$(MKDIR_P) $(srcdir)/Parser/lexer
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen -q c \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		-o $(srcdir)/Parser/parser.c.new
+	$(UPDATE_FILE) $(srcdir)/Parser/parser.c $(srcdir)/Parser/parser.c.new
+
+.PHONY: regen-ast
+regen-ast:
+	# Regenerate 3 files using Parser/asdl_c.py:
+	# - Include/internal/pycore_ast.h
+	# - Include/internal/pycore_ast_state.h
+	# - Python/Python-ast.c
+	$(MKDIR_P) $(srcdir)/Include
+	$(MKDIR_P) $(srcdir)/Python
+	$(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \
+		$(srcdir)/Parser/Python.asdl \
+		-H $(srcdir)/Include/internal/pycore_ast.h.new \
+		-I $(srcdir)/Include/internal/pycore_ast_state.h.new \
+		-C $(srcdir)/Python/Python-ast.c.new
+
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h.new
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_ast_state.h $(srcdir)/Include/internal/pycore_ast_state.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new
+
+.PHONY: regen-token
+regen-token:
+	# Regenerate Doc/library/token-list.inc from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Doc/library/token-list.inc \
+		$(srcdir)/Doc/library/token.rst
+	# Regenerate Include/internal/pycore_token.h from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Include/internal/pycore_token.h
+	# Regenerate Parser/token.c from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Parser/token.c
+	# Regenerate Lib/token.py from Grammar/Tokens
+	# using Tools/build/generate_token.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/token.py
+
+.PHONY: regen-keyword
+regen-keyword:
+	# Regenerate Lib/keyword.py from Grammar/python.gram and Grammar/Tokens
+	# using Tools/peg_generator/pegen
+	PYTHONPATH=$(srcdir)/Tools/peg_generator $(PYTHON_FOR_REGEN) -m pegen.keywordgen \
+		$(srcdir)/Grammar/python.gram \
+		$(srcdir)/Grammar/Tokens \
+		$(srcdir)/Lib/keyword.py.new
+	$(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
+
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: all Programs/_testembed
+	# Regenerate Python/stdlib_module_names.h
+	# using Tools/build/generate_stdlib_module_names.py
+	$(RUNSHARED) ./$(BUILDPYTHON) \
+		$(srcdir)/Tools/build/generate_stdlib_module_names.py \
+		> $(srcdir)/Python/stdlib_module_names.h.new
+	$(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
+
+.PHONY: regen-sre
+regen-sre:
+	# Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
+	# from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
+		$(srcdir)/Lib/re/_constants.py \
+		$(srcdir)/Modules/_sre/sre_constants.h \
+		$(srcdir)/Modules/_sre/sre_targets.h
+
+Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/internal/pycore_ast.h $(srcdir)/Include/internal/pycore_ast.h
+
+Python/getplatform.o: $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+
+Python/importdl.o: $(srcdir)/Python/importdl.c
+		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+
+Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
+				$(srcdir)/Objects/unicodetype_db.h
+
+BYTESTR_DEPS = \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/ctype.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/join.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/stringdefs.h \
+		$(srcdir)/Objects/stringlib/transmogrify.h
+
+UNICODE_DEPS = \
+		$(srcdir)/Objects/stringlib/asciilib.h \
+		$(srcdir)/Objects/stringlib/codecs.h \
+		$(srcdir)/Objects/stringlib/count.h \
+		$(srcdir)/Objects/stringlib/fastsearch.h \
+		$(srcdir)/Objects/stringlib/find.h \
+		$(srcdir)/Objects/stringlib/find_max_char.h \
+		$(srcdir)/Objects/stringlib/localeutil.h \
+		$(srcdir)/Objects/stringlib/partition.h \
+		$(srcdir)/Objects/stringlib/replace.h \
+		$(srcdir)/Objects/stringlib/split.h \
+		$(srcdir)/Objects/stringlib/ucs1lib.h \
+		$(srcdir)/Objects/stringlib/ucs2lib.h \
+		$(srcdir)/Objects/stringlib/ucs4lib.h \
+		$(srcdir)/Objects/stringlib/undef.h \
+		$(srcdir)/Objects/stringlib/unicode_format.h
+
+Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS)
+Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS)
+Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS)
+
+Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
+
+Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+		$(srcdir)/Objects/mimalloc/alloc-aligned.c \
+		$(srcdir)/Objects/mimalloc/alloc-posix.c \
+		$(srcdir)/Objects/mimalloc/arena.c \
+		$(srcdir)/Objects/mimalloc/bitmap.c \
+		$(srcdir)/Objects/mimalloc/heap.c \
+		$(srcdir)/Objects/mimalloc/init.c \
+		$(srcdir)/Objects/mimalloc/options.c \
+		$(srcdir)/Objects/mimalloc/os.c \
+		$(srcdir)/Objects/mimalloc/page.c \
+		$(srcdir)/Objects/mimalloc/random.c \
+		$(srcdir)/Objects/mimalloc/segment.c \
+		$(srcdir)/Objects/mimalloc/segment-map.c \
+		$(srcdir)/Objects/mimalloc/stats.c \
+		$(srcdir)/Objects/mimalloc/prim/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/osx/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/unix/prim.c \
+		$(srcdir)/Objects/mimalloc/prim/wasi/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
+
+
+# Regenerate various files from Python/bytecodes.c
+# Pass CASESFLAG=-l to insert #line directives in the output
+
+.PHONY: regen-cases
+regen-cases: \
+        regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
+		regen-generated-cases regen-executor-cases regen-optimizer-cases \
+		regen-opcode-metadata regen-uop-metadata
+
+.PHONY: regen-opcode-ids
+regen-opcode-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_id_generator.py \
+	    -o $(srcdir)/Include/opcode_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/opcode_ids.h $(srcdir)/Include/opcode_ids.h.new
+
+.PHONY: regen-opcode-targets
+regen-opcode-targets:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/target_generator.py \
+	    -o $(srcdir)/Python/opcode_targets.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new
+
+.PHONY: regen-uop-ids
+regen-uop-ids:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_id_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_uop_ids.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_ids.h $(srcdir)/Include/internal/pycore_uop_ids.h.new
+
+.PHONY: regen-opcode-metadata-py
+regen-opcode-metadata-py:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/py_metadata_generator.py \
+	    -o $(srcdir)/Lib/_opcode_metadata.py.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Lib/_opcode_metadata.py $(srcdir)/Lib/_opcode_metadata.py.new
+
+.PHONY: regen-generated-cases
+regen-generated-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier1_generator.py \
+	    -o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new
+
+.PHONY: regen-executor-cases
+regen-executor-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
+	    -o $(srcdir)/Python/executor_cases.c.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/executor_cases.c.h $(srcdir)/Python/executor_cases.c.h.new
+
+.PHONY: regen-optimizer-cases
+regen-optimizer-cases:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/optimizer_generator.py \
+	    -o $(srcdir)/Python/optimizer_cases.c.h.new \
+	    $(srcdir)/Python/optimizer_bytecodes.c \
+	    $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Python/optimizer_cases.c.h $(srcdir)/Python/optimizer_cases.c.h.new
+
+.PHONY: regen-opcode-metadata
+regen-opcode-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/opcode_metadata_generator.py \
+	    -o $(srcdir)/Include/internal/pycore_opcode_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_opcode_metadata.h $(srcdir)/Include/internal/pycore_opcode_metadata.h.new
+
+.PHONY: regen-uop-metadata
+regen-uop-metadata:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/uop_metadata_generator.py -o \
+	    $(srcdir)/Include/internal/pycore_uop_metadata.h.new $(srcdir)/Python/bytecodes.c
+	$(UPDATE_FILE) $(srcdir)/Include/internal/pycore_uop_metadata.h $(srcdir)/Include/internal/pycore_uop_metadata.h.new
+
+Python/compile.o Python/assemble.o Python/flowgraph.o Python/instruction_sequence.o: \
+                $(srcdir)/Include/internal/pycore_compile.h \
+                $(srcdir)/Include/internal/pycore_flowgraph.h \
+                $(srcdir)/Include/internal/pycore_instruction_sequence.h \
+                $(srcdir)/Include/internal/pycore_opcode_metadata.h \
+                $(srcdir)/Include/internal/pycore_opcode_utils.h
+
+Python/ceval.o: \
+		$(srcdir)/Python/ceval_macros.h \
+		$(srcdir)/Python/condvar.h \
+		$(srcdir)/Python/generated_cases.c.h \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Python/opcode_targets.h
+
+Python/flowgraph.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h
+
+Python/optimizer.o: \
+		$(srcdir)/Python/executor_cases.c.h \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h
+
+Python/optimizer_analysis.o: \
+		$(srcdir)/Include/internal/pycore_opcode_metadata.h \
+		$(srcdir)/Include/internal/pycore_optimizer.h \
+		$(srcdir)/Python/optimizer_cases.c.h
+
+Python/frozen.o: $(FROZEN_FILES_OUT)
+
+# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to
+# follow our naming conventions. dtrace(1) uses the output filename to generate
+# an include guard, so we can't use a pipeline to transform its output.
+Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
+	$(MKDIR_P) Include
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -h -s $(srcdir)/Include/pydtrace.d
+	: sed in-place edit with POSIX-only tools
+	sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
+	mv $@.tmp $@
+
+Python/ceval.o: $(srcdir)/Include/pydtrace.h
+Python/gc.o: $(srcdir)/Include/pydtrace.h
+Python/import.o: $(srcdir)/Include/pydtrace.h
+
+Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+	CC="$(CC)" CFLAGS="$(CFLAGS)" $(DTRACE) $(DFLAGS) -o $@ -G -s $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS)
+
+Objects/typeobject.o: Objects/typeslots.inc
+
+.PHONY: regen-typeslots
+regen-typeslots:
+	# Regenerate Objects/typeslots.inc from Include/typeslotsh
+	# using Objects/typeslots.py
+	$(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \
+		< $(srcdir)/Include/typeslots.h \
+		$(srcdir)/Objects/typeslots.inc.new
+	$(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new
+
+$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
+
+
+######################################################################
+
+TESTOPTS=	$(EXTRATESTOPTS)
+TESTPYTHON=	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(TESTPYTHONOPTS)
+TESTRUNNER=	$(TESTPYTHON) -m test
+TESTTIMEOUT=
+
+# Remove "test_python_*" directories of previous failed test jobs.
+# Pass TESTOPTS options because it can contain --tempdir option.
+.PHONY: cleantest
+cleantest: all
+	$(TESTRUNNER) $(TESTOPTS) --cleanup
+
+# Run a basic set of regression tests.
+# This excludes some tests that are particularly resource-intensive.
+# Similar to buildbottest, but use --fast-ci option, instead of --slow-ci.
+.PHONY: test
+test: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+# Run the test suite for both architectures in a Universal build on OSX.
+# Must be run on an Intel box.
+.PHONY: testuniversal
+testuniversal: all
+	@if [ `arch` != 'i386' ]; then \
+		echo "This can only be used on OSX/i386" ;\
+		exit 1 ;\
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+	$(RUNSHARED) /usr/libexec/oah/translate \
+		./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS)
+
+# Run the test suite on the iOS simulator. Must be run on a macOS machine with
+# a full Xcode install that has an iPhone SE (3rd edition) simulator available.
+# This must be run *after* a `make install` has completed the build. The
+# `--with-framework-name` argument *cannot* be used when configuring the build.
+XCFOLDER:=iOSTestbed.$(MULTIARCH).$(shell date +%s).$$PPID
+.PHONY: testios
+testios:
+	@if test "$(MACHDEP)" != "ios"; then \
+		echo "Cannot run the iOS testbed for a non-iOS build."; \
+		exit 1;\
+	fi
+	@if test "$(findstring -iphonesimulator,$(MULTIARCH))" != "-iphonesimulator"; then \
+		echo "Cannot run the iOS testbed for non-simulator builds."; \
+		exit 1;\
+	fi
+	@if test $(PYTHONFRAMEWORK) != "Python"; then \
+		echo "Cannot run the iOS testbed with a non-default framework name."; \
+		exit 1;\
+	fi
+	@if ! test -d $(PYTHONFRAMEWORKPREFIX); then \
+		echo "Cannot find a finalized iOS Python.framework. Have you run 'make install' to finalize the framework build?"; \
+		exit 1;\
+	fi
+
+	# Clone the testbed project into the XCFOLDER
+	$(PYTHON_FOR_BUILD) $(srcdir)/iOS/testbed clone --framework $(PYTHONFRAMEWORKPREFIX) "$(XCFOLDER)"
+
+	# Run the testbed project
+	$(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W
+
+# Like test, but using --slow-ci which enables all test resources and use
+# longer timeout. Run an optional pybuildbot.identify script to include
+# information about the build environment.
+.PHONY: buildbottest
+buildbottest: all
+	-@if which pybuildbot.identify >/dev/null 2>&1; then \
+		pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
+	fi
+	$(TESTRUNNER) --slow-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS)
+
+.PHONY: pythoninfo
+pythoninfo: all
+		$(RUNSHARED) $(HOSTRUNNER) ./$(BUILDPYTHON) -m test.pythoninfo
+
+QUICKTESTOPTS=	-x test_subprocess test_io \
+		test_multibytecodec test_urllib2_localnet test_itertools \
+		test_multiprocessing_fork test_multiprocessing_spawn \
+		test_multiprocessing_forkserver \
+		test_mailbox test_socket test_poll \
+		test_select test_zipfile test_concurrent_futures
+
+.PHONY: quicktest
+quicktest: all
+	$(TESTRUNNER) --fast-ci --timeout=$(TESTTIMEOUT) $(TESTOPTS) $(QUICKTESTOPTS)
+
+# SSL tests
+.PHONY: multisslcompile
+multisslcompile: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py --steps=modules
+
+.PHONY: multissltest
+multissltest: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/ssl/multissltests.py
+
+# All install targets use the "all" target as synchronization point to
+# prevent race conditions with PGO builds. PGO builds use recursive make,
+# which can lead to two parallel `./python setup.py build` processes that
+# step on each others toes.
+.PHONY: install
+install:  commoninstall bininstall maninstall 
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--upgrade" ;; \
+			install|*) ensurepip="" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: altinstall
+altinstall: commoninstall
+	if test "x$(ENSUREPIP)" != "xno"  ; then \
+		case $(ENSUREPIP) in \
+			upgrade) ensurepip="--altinstall --upgrade" ;; \
+			install|*) ensurepip="--altinstall" ;; \
+		esac; \
+		$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \
+			$$ensurepip --root=$(DESTDIR)/ ; \
+	fi
+
+.PHONY: commoninstall
+commoninstall:  check-clean-src  \
+		altbininstall libinstall inclinstall libainstall \
+		sharedinstall altmaninstall 
+
+# Install shared libraries enabled by Setup
+DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
+
+.PHONY: sharedinstall
+sharedinstall: all
+		@for i in $(DESTDIRS); \
+		do \
+			if test ! -d $(DESTDIR)$$i; then \
+				echo "Creating directory $$i"; \
+				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+			else    true; \
+			fi; \
+		done
+		@for i in X $(SHAREDMODS); do \
+		  if test $$i != X; then \
+		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
+		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			if test -d "$$i.dSYM"; then \
+				echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+				$(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
+			fi; \
+		  fi; \
+		done
+
+# Install the interpreter with $(VERSION) affixed
+# This goes into $(exec_prefix)
+.PHONY: altbininstall
+altbininstall: $(BUILDPYTHON) 
+	@for i in $(BINDIR) $(LIBDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	else \
+		$(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+		fi; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \
+	fi
+	@if test "$(PY_ENABLE_SHARED)" = 1 -o "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+			if test -n "$(DLLLIBRARY)" ; then \
+				$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \
+			else \
+				$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+				if test $(LDLIBRARY) != $(INSTSONAME); then \
+					(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \
+				fi \
+			fi; \
+			if test -n "$(PY3LIBRARY)"; then \
+				$(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \
+			fi; \
+		else	true; \
+		fi; \
+	fi
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE); \
+		lipo $(LIPO_32BIT_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE); \
+		lipo $(LIPO_INTEL64_FLAGS) \
+			-output $(DESTDIR)$(BINDIR)/python$(VERSION)-intel64$(EXE) \
+			$(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \
+	fi
+	# Install macOS debug information (if available)
+	if test -d "$(BUILDPYTHON).dSYM"; then \
+		echo $(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+		$(DSYMUTIL_PATH) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \
+	fi
+	if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+			$(DSYMUTIL_PATH) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
+		fi \
+	else \
+		if test -d "$(LDLIBRARY).dSYM"; then \
+			echo $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+      $(DSYMUTIL_PATH) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(INSTSONAME); \
+		fi \
+	fi
+
+.PHONY: bininstall
+# We depend on commoninstall here to make sure the installation is already usable
+# before we possibly overwrite the global 'python3' symlink to avoid causing
+# problems for anything else trying to run 'python3' while we install, particularly
+# if we're installing in parallel with -j.
+bininstall: commoninstall altbininstall
+	if test ! -d $(DESTDIR)$(LIBPC); then \
+		echo "Creating directory $(LIBPC)"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \
+	fi
+	-if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \
+	else true; \
+	fi
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE))
+	-if test "$(VERSION)" != "$(LDVERSION)"; then \
+		rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION).pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION).pc python-$(VERSION).pc); \
+		rm -f $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc; \
+		(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(LDVERSION)-embed.pc python-$(VERSION)-embed.pc); \
+	fi
+	-rm -f $(DESTDIR)$(BINDIR)/python3-config
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config)
+	-rm -f $(DESTDIR)$(LIBPC)/python3.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc)
+	-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc
+	(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)
+	-rm -f $(DESTDIR)$(BINDIR)/idle3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)
+	-rm -f $(DESTDIR)$(BINDIR)/pydoc3
+	(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)
+	if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \
+	fi
+	if test "x$(LIPO_INTEL64_FLAGS)" != "x" ; then \
+		rm -f $(DESTDIR)$(BINDIR)/python3-intel64$(EXE); \
+		(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-intel64$(EXE) python3-intel64$(EXE)) \
+	fi
+
+# Install the versioned manual page
+.PHONY: altmaninstall
+altmaninstall:
+	@for i in $(MANDIR) $(MANDIR)/man1; \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
+		$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1
+
+# Install the unversioned manual page
+.PHONY: maninstall
+maninstall:	altmaninstall
+	-rm -f $(DESTDIR)$(MANDIR)/man1/python3.1
+	(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1)
+
+# Install the library
+XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
+LIBSUBDIRS=	asyncio \
+		collections \
+		concurrent concurrent/futures \
+		csv \
+		ctypes ctypes/macholib \
+		curses \
+		dbm \
+		email email/mime \
+		encodings \
+		ensurepip ensurepip/_bundled \
+		html \
+		http \
+		idlelib idlelib/Icons \
+		importlib importlib/resources importlib/metadata \
+		json \
+		logging \
+		multiprocessing multiprocessing/dummy \
+		pathlib \
+		pydoc_data \
+		re \
+		site-packages \
+		sqlite3 \
+		sysconfig \
+		tkinter \
+		tomllib \
+		turtledemo \
+		unittest \
+		urllib \
+		venv venv/scripts venv/scripts/common venv/scripts/posix \
+		wsgiref \
+		$(XMLLIBSUBDIRS) \
+		xmlrpc \
+		zipfile zipfile/_path \
+		zoneinfo \
+		_pyrepl \
+		__phello__
+TESTSUBDIRS=	idlelib/idle_test \
+		test \
+		test/test_ast \
+		test/archivetestdata \
+		test/audiodata \
+		test/certdata \
+		test/certdata/capath \
+		test/cjkencodings \
+		test/configdata \
+		test/crashers \
+		test/data \
+		test/decimaltestdata \
+		test/dtracedata \
+		test/encoded_modules \
+		test/leakers \
+		test/libregrtest \
+		test/mathdata \
+		test/regrtestdata \
+		test/regrtestdata/import_from_tests \
+		test/regrtestdata/import_from_tests/test_regrtest_b \
+		test/subprocessdata \
+		test/support \
+		test/support/_hypothesis_stubs \
+		test/support/interpreters \
+		test/test_asyncio \
+		test/test_capi \
+		test/test_cext \
+		test/test_concurrent_futures \
+		test/test_cppext \
+		test/test_ctypes \
+		test/test_dataclasses \
+		test/test_doctest \
+		test/test_email \
+		test/test_email/data \
+		test/test_free_threading \
+		test/test_future_stmt \
+		test/test_gdb \
+		test/test_import \
+		test/test_import/data \
+		test/test_import/data/circular_imports \
+		test/test_import/data/circular_imports/subpkg \
+		test/test_import/data/circular_imports/subpkg2 \
+		test/test_import/data/circular_imports/subpkg2/parent \
+		test/test_import/data/package \
+		test/test_import/data/package2 \
+		test/test_import/data/package3 \
+		test/test_import/data/package4 \
+		test/test_import/data/unwritable \
+		test/test_importlib \
+		test/test_importlib/builtin \
+		test/test_importlib/extension \
+		test/test_importlib/frozen \
+		test/test_importlib/import_ \
+		test/test_importlib/metadata \
+		test/test_importlib/metadata/data \
+		test/test_importlib/metadata/data/sources \
+		test/test_importlib/metadata/data/sources/example \
+		test/test_importlib/metadata/data/sources/example/example \
+		test/test_importlib/metadata/data/sources/example2 \
+		test/test_importlib/metadata/data/sources/example2/example2 \
+		test/test_importlib/namespace_pkgs \
+		test/test_importlib/namespace_pkgs/both_portions \
+		test/test_importlib/namespace_pkgs/both_portions/foo \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package \
+		test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg \
+		test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \
+		test/test_importlib/namespace_pkgs/portion1 \
+		test/test_importlib/namespace_pkgs/portion1/foo \
+		test/test_importlib/namespace_pkgs/portion2 \
+		test/test_importlib/namespace_pkgs/portion2/foo \
+		test/test_importlib/namespace_pkgs/project1 \
+		test/test_importlib/namespace_pkgs/project1/parent \
+		test/test_importlib/namespace_pkgs/project1/parent/child \
+		test/test_importlib/namespace_pkgs/project2 \
+		test/test_importlib/namespace_pkgs/project2/parent \
+		test/test_importlib/namespace_pkgs/project2/parent/child \
+		test/test_importlib/namespace_pkgs/project3 \
+		test/test_importlib/namespace_pkgs/project3/parent \
+		test/test_importlib/namespace_pkgs/project3/parent/child \
+		test/test_importlib/partial \
+		test/test_importlib/resources \
+		test/test_importlib/source \
+		test/test_inspect \
+		test/test_interpreters \
+		test/test_json \
+		test/test_module \
+		test/test_multiprocessing_fork \
+		test/test_multiprocessing_forkserver \
+		test/test_multiprocessing_spawn \
+		test/test_pathlib \
+		test/test_peg_generator \
+		test/test_pydoc \
+		test/test_pyrepl \
+		test/test_sqlite3 \
+		test/test_tkinter \
+		test/test_tomllib \
+		test/test_tomllib/data \
+		test/test_tomllib/data/invalid \
+		test/test_tomllib/data/invalid/array \
+		test/test_tomllib/data/invalid/array-of-tables \
+		test/test_tomllib/data/invalid/boolean \
+		test/test_tomllib/data/invalid/dates-and-times \
+		test/test_tomllib/data/invalid/dotted-keys \
+		test/test_tomllib/data/invalid/inline-table \
+		test/test_tomllib/data/invalid/keys-and-vals \
+		test/test_tomllib/data/invalid/literal-str \
+		test/test_tomllib/data/invalid/multiline-basic-str \
+		test/test_tomllib/data/invalid/multiline-literal-str \
+		test/test_tomllib/data/invalid/table \
+		test/test_tomllib/data/valid \
+		test/test_tomllib/data/valid/array \
+		test/test_tomllib/data/valid/dates-and-times \
+		test/test_tomllib/data/valid/multiline-basic-str \
+		test/test_tools \
+		test/test_tools/i18n_data \
+		test/test_tools/msgfmt_data \
+		test/test_ttk \
+		test/test_unittest \
+		test/test_unittest/testmock \
+		test/test_warnings \
+		test/test_warnings/data \
+		test/test_zipfile \
+		test/test_zipfile/_path \
+		test/test_zoneinfo \
+		test/test_zoneinfo/data \
+		test/tkinterdata \
+		test/tokenizedata \
+		test/tracedmodules \
+		test/translationdata \
+		test/translationdata/argparse \
+		test/translationdata/getopt \
+		test/translationdata/optparse \
+		test/typinganndata \
+		test/wheeldata \
+		test/xmltestdata \
+		test/xmltestdata/c14n-20 \
+		test/zipimport_data
+
+COMPILEALL_OPTS=-j0
+
+TEST_MODULES=yes
+
+.PHONY: libinstall
+libinstall:	all $(srcdir)/Modules/xxmodule.c
+	@for i in $(SCRIPTDIR) $(LIBDEST); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		b=$(LIBDEST)/$$d; \
+		if test ! -d $(DESTDIR)$$b; then \
+			echo "Creating directory $$b"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
+		else	true; \
+		fi; \
+	done
+	@for i in $(srcdir)/Lib/*.py; \
+	do \
+		if test -x $$i; then \
+			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
+		else \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
+			echo $(INSTALL_DATA) $$i $(LIBDEST); \
+		fi; \
+	done
+	@if test "$(TEST_MODULES)" = yes; then \
+		subdirs="$(LIBSUBDIRS) $(TESTSUBDIRS)"; \
+	else \
+		subdirs="$(LIBSUBDIRS)"; \
+	fi; \
+	for d in $$subdirs; \
+	do \
+		a=$(srcdir)/Lib/$$d; \
+		if test ! -d $$a; then continue; else true; fi; \
+		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
+		b=$(LIBDEST)/$$d; \
+		for i in $$a/*; \
+		do \
+			case $$i in \
+			*CVS) ;; \
+			*.py[co]) ;; \
+			*.orig) ;; \
+			*~) ;; \
+			*) \
+				if test -d $$i; then continue; fi; \
+				if test -x $$i; then \
+				    echo $(INSTALL_SCRIPT) $$i $$b; \
+				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
+				else \
+				    echo $(INSTALL_DATA) $$i $$b; \
+				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
+				fi;; \
+			esac; \
+		done; \
+	done
+	$(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
+		$(DESTDIR)$(LIBDEST); \
+	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+	@ # If app store compliance has been configured, apply the patch to the
+	@ # installed library code. The patch has been previously validated against
+	@ # the original source tree, so we can ignore any errors that are raised
+	@ # due to files that are missing because of --disable-test-modules etc.
+	@if [ "$(APP_STORE_COMPLIANCE_PATCH)" != "" ]; then \
+		echo "Applying app store compliance patch"; \
+		patch --force --reject-file "$(abs_builddir)/app-store-compliance.rej" --strip 2 --directory "$(DESTDIR)$(LIBDEST)" --input "$(abs_srcdir)/$(APP_STORE_COMPLIANCE_PATCH)" || true ; \
+	fi
+	@ # Build PYC files for the 3 optimization levels (0, 1, 2)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST) -f \
+		-x 'bad_coding|badsyntax|site-packages' \
+		$(DESTDIR)$(LIBDEST)
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+		$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+		-o 0 -o 1 -o 2 $(COMPILEALL_OPTS) -d $(LIBDEST)/site-packages -f \
+		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+# bpo-21536: Misc/python-config.sh is generated in the build directory
+# from $(srcdir)Misc/python-config.sh.in.
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+	@ # Substitution happens here, as the completely-expanded BINDIR
+	@ # is not available in configure
+	sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
+	@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+	LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+	@ # On Darwin, always use the python version of the script, the shell
+	@ # version doesn't use the compiler customizations that are provided
+	@ # in python (_osx_support.py).
+	@if test `uname -s` = Darwin; then \
+		cp python-config.py python-config; \
+	fi
+
+# macOS' make seems to ignore a dependency on a
+# "$(BUILD_SCRIPTS_DIR): $(MKDIR_P) $@" rule.
+BUILD_SCRIPTS_DIR=build/scripts-$(VERSION)
+SCRIPT_IDLE=$(BUILD_SCRIPTS_DIR)/idle$(VERSION)
+SCRIPT_PYDOC=$(BUILD_SCRIPTS_DIR)/pydoc$(VERSION)
+
+$(SCRIPT_IDLE): $(srcdir)/Tools/scripts/idle3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/idle3 > $@
+	@chmod +x $@
+
+$(SCRIPT_PYDOC): $(srcdir)/Tools/scripts/pydoc3
+	@$(MKDIR_P) $(BUILD_SCRIPTS_DIR)
+	sed -e "s,/usr/bin/env python3,$(EXENAME)," < $(srcdir)/Tools/scripts/pydoc3 > $@
+	@chmod +x $@
+
+.PHONY: scripts
+scripts: $(SCRIPT_IDLE) $(SCRIPT_PYDOC) python-config
+
+# Install the include files
+INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
+
+.PHONY: inclinstall
+inclinstall:
+	@for i in $(INCLDIRSTOMAKE); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \
+	else	true; \
+	fi
+	@if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \
+		echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \
+		$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \
+	else	true; \
+	fi
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		if test ! -d $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; then \
+			echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		fi; \
+	fi
+	@for i in $(srcdir)/Include/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
+	done
+	@for i in $(srcdir)/Include/cpython/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \
+	done
+	@for i in $(srcdir)/Include/internal/*.h; \
+	do \
+		echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \
+	done
+	@if test "$(INSTALL_MIMALLOC)" = "yes"; then \
+		echo $(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		$(INSTALL_DATA) $(srcdir)/Include/internal/mimalloc/mimalloc.h $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc.h; \
+		for i in $(srcdir)/Include/internal/mimalloc/mimalloc/*.h; \
+		do \
+			echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal/mimalloc/mimalloc; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal/mimalloc/mimalloc; \
+		done; \
+	fi
+	echo $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
+
+# Install the library and miscellaneous stuff needed for extending/embedding
+# This goes into $(exec_prefix)
+LIBPL=		$(prefix)/lib/python3.13/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu
+
+# pkgconfig directory
+LIBPC=		$(LIBDIR)/pkgconfig
+
+.PHONY: libainstall
+libainstall: all scripts
+	@for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
+	do \
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	@if test "$(STATIC_LIBPYTHON)" = 1; then \
+		if test -d $(LIBRARY); then :; else \
+			if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+				if test "$(SHLIB_SUFFIX)" = .dll; then \
+					$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
+				else \
+					$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
+				fi; \
+			else \
+				echo Skip install of $(LIBRARY) - use make frameworkinstall; \
+			fi; \
+		fi; \
+		$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o; \
+	fi
+	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
+	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
+	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup
+	$(INSTALL_DATA) Modules/Setup.bootstrap $(DESTDIR)$(LIBPL)/Setup.bootstrap
+	$(INSTALL_DATA) Modules/Setup.stdlib $(DESTDIR)$(LIBPL)/Setup.stdlib
+	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
+	$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc
+	$(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc
+	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
+	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
+	$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
+	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
+	$(INSTALL_SCRIPT) $(SCRIPT_IDLE) $(DESTDIR)$(BINDIR)/idle$(VERSION)
+	$(INSTALL_SCRIPT) $(SCRIPT_PYDOC) $(DESTDIR)$(BINDIR)/pydoc$(VERSION)
+	@if [ -s Modules/python.exp -a \
+		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
+		echo; echo "Installing support files for building shared extension modules on AIX:"; \
+		$(INSTALL_DATA) Modules/python.exp		\
+				$(DESTDIR)$(LIBPL)/python.exp;		\
+		echo; echo "$(LIBPL)/python.exp";		\
+		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
+				$(DESTDIR)$(LIBPL)/makexp_aix;		\
+		echo "$(LIBPL)/makexp_aix";			\
+		$(INSTALL_SCRIPT) Modules/ld_so_aix	\
+				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
+		echo "$(LIBPL)/ld_so_aix";			\
+		echo; echo "See Misc/README.AIX for details.";	\
+	else true; \
+	fi
+
+# Here are a couple of targets for MacOSX again, to install a full
+# framework-based Python. frameworkinstall installs everything, the
+# subtargets install specific parts. Much of the actual work is offloaded to
+# the Makefile in Mac
+#
+#
+# This target is here for backward compatibility, previous versions of Python
+# hadn't integrated framework installation in the normal install process.
+.PHONY: frameworkinstall
+frameworkinstall: install
+
+# On install, we re-make the framework
+# structure in the install location, /Library/Frameworks/ or the argument to
+# --enable-framework. If --enable-framework has been specified then we have
+# automatically set prefix to the location deep down in the framework, so we
+# only have to cater for the structural bits of the framework.
+
+.PHONY: frameworkinstallframework
+frameworkinstallframework:  install frameworkinstallmaclib
+
+# macOS uses a versioned frameworks structure that includes a full install
+.PHONY: frameworkinstallversionedstructure
+frameworkinstallversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
+		if test ! -d $(DESTDIR)$$i; then \
+			echo "Creating directory $(DESTDIR)$$i"; \
+			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
+		else	true; \
+		fi; \
+	done
+	$(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers
+	sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist
+	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
+	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)
+	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
+	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+
+# iOS/tvOS/watchOS uses a non-versioned framework with Info.plist in the
+# framework root, no .lproj data, and only stub compilation assistance binaries
+.PHONY: frameworkinstallunversionedstructure
+frameworkinstallunversionedstructure:	$(LDLIBRARY)
+	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
+		echo Not configured with --enable-framework; \
+		exit 1; \
+	else true; \
+	fi
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; then \
+		echo "Clearing stale header symlink directory"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include; \
+	fi
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)
+	sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist
+	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
+	$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR)
+	for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \
+		$(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \
+	done
+
+# This installs Mac/Lib into the framework
+# Install a number of symlinks to keep software that expects a normal unix
+# install (which includes python-config) happy.
+.PHONY: frameworkinstallmaclib
+frameworkinstallmaclib:
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a"
+	$(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib"
+	$(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"
+
+# This installs the IDE, the Launcher and other apps into /Applications
+.PHONY: frameworkinstallapps
+frameworkinstallapps:
+	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
+
+# Build the bootstrap executable that will spawn the interpreter inside
+# an app bundle within the framework.  This allows the interpreter to
+# run OS X GUI APIs.
+.PHONY: frameworkpythonw
+frameworkpythonw:
+	cd Mac && $(MAKE) pythonw
+
+# This installs the python* and other bin symlinks in $prefix/bin or in
+# a bin directory relative to the framework root
+.PHONY: frameworkinstallunixtools
+frameworkinstallunixtools:
+	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
+
+.PHONY: frameworkaltinstallunixtools
+frameworkaltinstallunixtools:
+	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
+
+# This installs the Tools into the applications directory.
+# It is not part of a normal frameworkinstall
+.PHONY: frameworkinstallextras
+frameworkinstallextras:
+	cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"
+
+# On iOS, bin/lib can't live inside the framework; include needs to be called
+# "Headers", but *must* be in the framework, and *not* include the `python3.X`
+# subdirectory. The install has put these folders in the same folder as
+# Python.framework; Move the headers to their final framework-compatible home.
+.PHONY: frameworkinstallmobileheaders
+frameworkinstallmobileheaders: frameworkinstallunversionedstructure inclinstall
+	if test -d $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; then \
+		echo "Removing old framework headers"; \
+		rm -rf $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers; \
+	fi
+	mv "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)" "$(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers"
+	$(LN) -fs "../$(PYTHONFRAMEWORKDIR)/Headers" "$(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/include/python$(LDVERSION)"
+
+# Build the toplevel Makefile
+Makefile.pre: $(srcdir)/Makefile.pre.in config.status
+	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= ./config.status
+	$(MAKE) -f Makefile.pre Makefile
+
+# Run the configure script.
+config.status:	$(srcdir)/configure
+	$(srcdir)/configure $(CONFIG_ARGS)
+
+.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
+
+Python/asm_trampoline.o: $(srcdir)/Python/asm_trampoline.S
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+
+JIT_DEPS = \
+		$(srcdir)/Tools/jit/*.c \
+		$(srcdir)/Tools/jit/*.py \
+		$(srcdir)/Python/executor_cases.c.h \
+		pyconfig.h
+
+jit_stencils.h: $(JIT_DEPS)
+	
+
+Python/jit.o: $(srcdir)/Python/jit.c 
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+.PHONY: regen-jit
+regen-jit:
+	
+
+# Some make's put the object file in the current directory
+.c.o:
+	$(CC) -c $(PY_CORE_CFLAGS) -o $@ $<
+
+# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0
+# with -O2 or higher and strict aliasing miscompiles the ratio() function
+# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang.
+# https://bugs.llvm.org//show_bug.cgi?id=31928
+Python/dtoa.o: Python/dtoa.c
+	$(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $<
+
+# Run reindent on the library
+.PHONY: reindent
+reindent:
+	./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/reindent.py -r $(srcdir)/Lib
+
+# Rerun configure with the same options as it was run last time,
+# provided the config.status script exists
+.PHONY: recheck
+recheck:
+	./config.status --recheck
+	./config.status
+
+# Regenerate configure and pyconfig.h.in
+.PHONY: autoconf
+autoconf:
+	(cd $(srcdir); autoreconf -ivf -Werror)
+
+.PHONY: regen-configure
+regen-configure:
+	$(srcdir)/Tools/build/regen-configure.sh
+
+.PHONY: regen-sbom
+regen-sbom:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sbom.py
+
+# Create a tags file for vi
+tags::
+	ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h
+	for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done
+	ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L -
+	LC_ALL=C sort -o tags tags
+
+# Create a tags file for GNU Emacs
+TAGS::
+	cd $(srcdir); \
+	etags Include/*.h Include/cpython/*.h Include/internal/*.h; \
+	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
+	etags -a $(srcdir)/Modules/_ctypes/*.[ch]
+	find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a
+
+# Sanitation targets -- clean leaves libraries, executables and tags
+# files, which clobber removes as well
+.PHONY: pycremoval
+pycremoval:
+	-find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';'
+	-find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
+
+.PHONY: rmtestturds
+rmtestturds:
+	-rm -f *BAD *GOOD *SKIPPED
+	-rm -rf OUT
+	-rm -f *.TXT
+	-rm -f *.txt
+	-rm -f gb-18030-2000.xml
+
+.PHONY: docclean
+docclean:
+	$(MAKE) -C $(srcdir)/Doc clean
+
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data.  The PGO data is only valid if source code remains unchanged.
+.PHONY: clean-retain-profile
+clean-retain-profile: pycremoval
+	find . -name '*.[oa]' -exec rm -f {} ';'
+	find . -name '*.s[ol]' -exec rm -f {} ';'
+	find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
+	find . -name '*.lto' -exec rm -f {} ';'
+	find . -name '*.wasm' -exec rm -f {} ';'
+	find . -name '*.lst' -exec rm -f {} ';'
+	find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+	find build -name '*.py' -exec rm -f {} ';' || true
+	find build -name '*.py[co]' -exec rm -f {} ';' || true
+	-rm -f pybuilddir.txt
+	-rm -f _bootstrap_python
+	-rm -f python.html python*.js python.data python*.symbols python*.map
+	-rm -f $(WASM_STDLIB)
+	-rm -f Programs/_testembed Programs/_freeze_module
+	-rm -rf Python/deepfreeze
+	-rm -f Python/frozen_modules/*.h
+	-rm -f Python/frozen_modules/MANIFEST
+	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
+	-rm -f Include/pydtrace_probes.h
+	-rm -f profile-gen-stamp
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/bin
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/lib
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/include
+	-rm -rf iOS/testbed/Python.xcframework/ios-*/Python.framework
+
+.PHONY: profile-removal
+profile-removal:
+	find . -name '*.gc??' -exec rm -f {} ';'
+	find . -name '*.profclang?' -exec rm -f {} ';'
+	find . -name '*.dyn' -exec rm -f {} ';'
+	rm -f $(COVERAGE_INFO)
+	rm -rf $(COVERAGE_REPORT)
+	rm -f profile-run-stamp
+	rm -f profile-bolt-stamp
+
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
+	@if test build_all = profile-opt -o build_all = bolt-opt; then \
+		rm -f profile-gen-stamp profile-clean-stamp; \
+		$(MAKE) profile-removal; \
+	fi
+
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+	-rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
+.PHONY: clobber
+clobber: clean
+	-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
+		tags TAGS \
+		config.cache config.log pyconfig.h Modules/config.c
+	-rm -rf build platform
+	-rm -rf $(PYTHONFRAMEWORKDIR)
+	-rm -rf iOS/Frameworks
+	-rm -rf iOSTestbed.*
+	-rm -f python-config.py python-config
+	-rm -rf cross-build
+
+# Make things extra clean, before making a distribution:
+# remove all generated files, even Makefile[.pre]
+# Keep configure and Python-ast.[ch], it's possible they can't be generated
+.PHONY: distclean
+distclean: clobber docclean
+	for file in $(srcdir)/Lib/test/data/* ; do \
+	    if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \
+	done
+	-rm -f core Makefile Makefile.pre config.status Modules/Setup.local \
+	    Modules/Setup.bootstrap Modules/Setup.stdlib \
+		Modules/ld_so_aix Modules/python.exp Misc/python.pc \
+		Misc/python-embed.pc Misc/python-config.sh
+	-rm -f python*-gdb.py
+	# Issue #28258: set LC_ALL to avoid issues with Estonian locale.
+	# Expansion is performed here by shell (spawned by make) itself before
+	# arguments are passed to find. So LC_ALL=C must be set as a separate
+	# command.
+	LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \
+				     -o -name '[@,#]*' -o -name '*.old' \
+				     -o -name '*.orig' -o -name '*.rej' \
+				     -o -name '*.bak' ')' \
+				     -exec rm -f {} ';'
+
+# Check that all symbols exported by libpython start with "Py" or "_Py"
+.PHONY: smelly
+smelly: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
+
+# Check if any unsupported C global variables have been added.
+.PHONY: check-c-globals
+check-c-globals:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/c-analyzer/check-c-globals.py \
+		--format summary \
+		--traceback
+
+# Check for undocumented C APIs.
+.PHONY: check-c-api-docs
+check-c-api-docs:
+	$(PYTHON_FOR_REGEN) $(srcdir)/Tools/check-c-api-docs/main.py
+
+# Find files with funny names
+.PHONY: funny
+funny:
+	find $(SUBDIRS) $(SUBDIRSTOO) \
+		-type d \
+		-o -name '*.[chs]' \
+		-o -name '*.py' \
+		-o -name '*.pyw' \
+		-o -name '*.dat' \
+		-o -name '*.el' \
+		-o -name '*.fd' \
+		-o -name '*.in' \
+		-o -name '*.gif' \
+		-o -name '*.txt' \
+		-o -name '*.xml' \
+		-o -name '*.xbm' \
+		-o -name '*.xpm' \
+		-o -name '*.uue' \
+		-o -name '*.decTest' \
+		-o -name '*.tmCommand' \
+		-o -name '*.tmSnippet' \
+		-o -name 'Setup' \
+		-o -name 'Setup.*' \
+		-o -name README \
+		-o -name NEWS \
+		-o -name HISTORY \
+		-o -name Makefile \
+		-o -name ChangeLog \
+		-o -name .hgignore \
+		-o -name MANIFEST \
+		-o -print
+
+# Perform some verification checks on any modified files.
+.PHONY: patchcheck
+patchcheck: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
+
+.PHONY: check-limited-abi
+check-limited-abi: all
+	$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+
+.PHONY: update-config
+update-config:
+	curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
+	curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
+	chmod +x config.guess config.sub
+
+# Dependencies
+
+Python/thread.o:  $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_pthread_stubs.h $(srcdir)/Python/condvar.h
+
+##########################################################################
+# Module dependencies and platform-specific files
+
+# force rebuild when header file or module build flavor (static/shared) is changed
+MODULE_DEPS_STATIC=Modules/config.c
+MODULE_DEPS_SHARED=$(MODULE_DEPS_STATIC) $(EXPORTSYMS)
+
+MODULE__CURSES_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__CURSES_PANEL_DEPS=$(srcdir)/Include/py_curses.h
+MODULE__DATETIME_DEPS=$(srcdir)/Include/datetime.h
+MODULE_CMATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_MATH_DEPS=$(srcdir)/Modules/_math.h
+MODULE_PYEXPAT_DEPS=$(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE_UNICODEDATA_DEPS=$(srcdir)/Modules/unicodedata_db.h $(srcdir)/Modules/unicodename_db.h
+MODULE__BLAKE2_DEPS=$(srcdir)/Modules/_blake2/impl/blake2-config.h $(srcdir)/Modules/_blake2/impl/blake2-impl.h $(srcdir)/Modules/_blake2/impl/blake2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2b-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2b-ref.c $(srcdir)/Modules/_blake2/impl/blake2b-round.h $(srcdir)/Modules/_blake2/impl/blake2b.c $(srcdir)/Modules/_blake2/impl/blake2s-load-sse2.h $(srcdir)/Modules/_blake2/impl/blake2s-load-sse41.h $(srcdir)/Modules/_blake2/impl/blake2s-load-xop.h $(srcdir)/Modules/_blake2/impl/blake2s-ref.c $(srcdir)/Modules/_blake2/impl/blake2s-round.h $(srcdir)/Modules/_blake2/impl/blake2s.c $(srcdir)/Modules/_blake2/blake2module.h $(srcdir)/Modules/hashlib.h
+MODULE__CTYPES_DEPS=$(srcdir)/Modules/_ctypes/ctypes.h
+MODULE__CTYPES_MALLOC_CLOSURE=
+MODULE__DECIMAL_DEPS=$(srcdir)/Modules/_decimal/docstrings.h $(LIBMPDEC_HEADERS) $(LIBMPDEC_A)
+MODULE__ELEMENTTREE_DEPS=$(srcdir)/Modules/pyexpat.c $(LIBEXPAT_HEADERS) $(LIBEXPAT_A)
+MODULE__HASHLIB_DEPS=$(srcdir)/Modules/hashlib.h
+MODULE__IO_DEPS=$(srcdir)/Modules/_io/_iomodule.h
+MODULE__MD5_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_MD5.h Modules/_hacl/Hacl_Hash_MD5.c
+MODULE__SHA1_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA1.h Modules/_hacl/Hacl_Hash_SHA1.c
+MODULE__SHA2_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_SHA2_HEADERS) $(LIBHACL_SHA2_A)
+MODULE__SHA3_DEPS=$(srcdir)/Modules/hashlib.h $(LIBHACL_HEADERS) Modules/_hacl/Hacl_Hash_SHA3.h Modules/_hacl/Hacl_Hash_SHA3.c
+MODULE__SOCKET_DEPS=$(srcdir)/Modules/socketmodule.h $(srcdir)/Modules/addrinfo.h $(srcdir)/Modules/getaddrinfo.c $(srcdir)/Modules/getnameinfo.c
+MODULE__SSL_DEPS=$(srcdir)/Modules/_ssl.h $(srcdir)/Modules/_ssl/cert.c $(srcdir)/Modules/_ssl/debughelpers.c $(srcdir)/Modules/_ssl/misc.c $(srcdir)/Modules/_ssl_data_111.h $(srcdir)/Modules/_ssl_data_300.h $(srcdir)/Modules/socketmodule.h
+MODULE__TESTCAPI_DEPS=$(srcdir)/Modules/_testcapi/parts.h $(srcdir)/Modules/_testcapi/util.h
+MODULE__TESTLIMITEDCAPI_DEPS=$(srcdir)/Modules/_testlimitedcapi/testcapi_long.h $(srcdir)/Modules/_testlimitedcapi/parts.h $(srcdir)/Modules/_testlimitedcapi/util.h
+MODULE__TESTINTERNALCAPI_DEPS=$(srcdir)/Modules/_testinternalcapi/parts.h
+MODULE__SQLITE3_DEPS=$(srcdir)/Modules/_sqlite/connection.h $(srcdir)/Modules/_sqlite/cursor.h $(srcdir)/Modules/_sqlite/microprotocols.h $(srcdir)/Modules/_sqlite/module.h $(srcdir)/Modules/_sqlite/prepare_protocol.h $(srcdir)/Modules/_sqlite/row.h $(srcdir)/Modules/_sqlite/util.h
+
+CODECS_COMMON_HEADERS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h $(srcdir)/Modules/cjkcodecs/cjkcodecs.h
+MODULE__CODECS_CN_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_cn.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_HK_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_hk.h  $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_ISO2022_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_JP_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_jisx0213_pair.h $(srcdir)/Modules/cjkcodecs/alg_jisx0201.h $(srcdir)/Modules/cjkcodecs/emu_jisx0213_2000.h $(srcdir)/Modules/cjkcodecs/mappings_jp.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_KR_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_kr.h $(CODECS_COMMON_HEADERS)
+MODULE__CODECS_TW_DEPS=$(srcdir)/Modules/cjkcodecs/mappings_tw.h $(CODECS_COMMON_HEADERS)
+MODULE__MULTIBYTECODEC_DEPS=$(srcdir)/Modules/cjkcodecs/multibytecodec.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+# Local Variables:
+# mode: makefile
+# End:
--- a/Misc/python-config.sh	1970-01-01 04:00:00.000000000 +0400
+++ b/Misc/python-config.sh	2026-05-12 11:32:22.748678535 +0400
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Keep this script in sync with python-config.in
+
+exit_with_usage ()
+{
+    local usage
+    usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
+    if [ "$1" -eq 0 ]; then
+        echo "$usage"
+    else
+        echo "$usage" >&2
+    fi
+    exit $1
+}
+
+if [ "$1" = "" ] ; then
+    exit_with_usage 1
+fi
+
+# Returns the actual prefix where this script was installed to.
+installed_prefix ()
+{
+    RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)

[truncated 1586375 bytes]

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 06:22 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high aggregate CPU attributed to `python3.13` while running `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, but the collected syscall evidence shows a one-second cadence: `wait4(..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0 <~1.001s>`. That looks like an application-level supervisord event loop, not a tight CPython runtime poll loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose and close/redirect unless an independent reproduction ties the CPU to a CPython bug. A maintainer-facing subject would be: `No CPython change: supervisord evidence shows timed polling, not runtime busy-poll`.

## Patch Plan
Do not edit CPython in this pass. The evidence does not identify a CPython defect: the backtrace is mostly unsymbolized, the process is `S (sleeping)`, `wchan` is `poll_schedule_timeout`, and strace shows blocking `poll(1000)` calls rather than immediate wakeups.

If new evidence later proves a CPython issue, inspect the relevant CPython subsystem before patching and follow existing helpers/conventions found here: `select.poll()` uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry handling with `PyErr_CheckSignals`; `os.wait4()`/`waitpid()` wrappers use the same thread-release and EINTR pattern. No relevant local helper is missing from the currently implicated path.

No prior Fixer patch was found in this workspace; Debian has quilt patches, but none appear to target this finding. Avoid any awkward control-flow patch such as adding `goto`-based throttling to CPython’s poll/wait wrappers, because the observed loop already blocks for about one second and should not be changed without a reproducer.

## Risks
Changing CPython’s `poll`, `selectors`, `wait4`, or subprocess wait behavior from this evidence would risk altering documented blocking semantics and signal/EINTR behavior for all Python users while only addressing a likely supervisord policy loop.

The raw investigation artifact directory and `supervisord` executable/config are not present in this workspace, so the collected evidence cannot currently be independently replayed here.

## Validation
Before reporting any source patch, try the project build entrypoint from the workspace root: `./configure && make`. If it fails due to missing build dependencies or generated files, record the exact failure and then run the narrowest relevant compile/check.

For the independent failure-signal check, when `supervisord` is available, run a bounded replay such as `timeout 8s strace -f -e poll,wait4 -tt -T /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` and verify whether `poll(..., 1000)` blocks for about one second or returns immediately. Without that reproduction showing immediate wakeups or a CPython frame responsible for CPU burn, do not claim `reproduced` or submit a CPython patch.

## Patch Pass

Subject: No patch: diagnose supervisord timed polling

## Commit Message
No source change is proposed. The collected evidence does not show a CPython runtime busy loop: it shows `supervisord` running under Python, sleeping in `poll(2)` with a one-second timeout and periodically calling `wait4(..., WNOHANG)`.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected a perf/profile signal for `/usr/bin/python3.13` with high aggregate CPU, but the `/proc` and strace details point away from a tight interpreter loop. The process state was `S (sleeping)`, `wchan` was `poll_schedule_timeout`, and strace showed repeated `poll(..., 1000)` calls returning after about `1.001s`, with `wait4(-1, ..., WNOHANG)` returning `ECHILD`.

The cautious inference is that this is an application-level `supervisord` polling loop, not a CPython `select.poll()` or `os.wait4()` bug. I followed the saved plan and did not change course: no source diff was left because the evidence remains indirect and does not identify a safe upstream CPython fix.

I inspected the relevant CPython helpers and conventions. `Modules/selectmodule.c` already uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry via `PyErr_CheckSignals`; `Modules/posixmodule.c` uses the matching GIL-release and EINTR pattern for `wait4()`/`waitpid()`. No missing local helper or clearer bounded control-flow change was found.

The expected effect of this proposal is to avoid an unjustified CPython behavior change and preserve the current documented poll/wait semantics until stronger evidence ties the reported CPU use to CPython itself.

## Git Add Paths
None

## Validation
Ran `./configure && make` from the workspace root. It completed with exit code 0. During the build, CPython reported `_ssl` failed to import due to `undefined symbol: TLSv1_method`, and listed `_dbm`, `_gdbm`, and `_tkinter` as missing optional modules.

Ran `make distclean` afterward to remove generated build products; `git status --short` is clean.

Independent reproduction was attempted but blocked: `command -v supervisord` returned no path, `/etc/supervisor/supervisord.conf` was absent (`test -e ...` returned `1`), and the raw investigation directory from `evidence.json` was not present. Therefore I did not reproduce the failure locally.

## Review Pass 1

RESULT: ok

No source diff is present and `git status --short` is clean, so there are no code-level regressions to review.

The no-patch diagnosis is consistent with the evidence: strace shows timed `poll(..., 1000)` sleeps rather than a tight CPython loop, and the response correctly uses `inferred` confidence, avoids inventing a reproducer, names the relevant CPython helper conventions, and reports the project-level `./configure && make` validation plus the blocked independent reproduction attempt.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 06:22 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high aggregate CPU attributed to `python3.13` while running `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, but the collected syscall evidence shows a one-second cadence: `wait4(..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0 <~1.001s>`. That looks like an application-level supervisord event loop, not a tight CPython runtime poll loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose and close/redirect unless an independent reproduction ties the CPU to a CPython bug. A maintainer-facing subject would be: `No CPython change: supervisord evidence shows timed polling, not runtime busy-poll`.

## Patch Plan
Do not edit CPython in this pass. The evidence does not identify a CPython defect: the backtrace is mostly unsymbolized, the process is `S (sleeping)`, `wchan` is `poll_schedule_timeout`, and strace shows blocking `poll(1000)` calls rather than immediate wakeups.

If new evidence later proves a CPython issue, inspect the relevant CPython subsystem before patching and follow existing helpers/conventions found here: `select.poll()` uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry handling with `PyErr_CheckSignals`; `os.wait4()`/`waitpid()` wrappers use the same thread-release and EINTR pattern. No relevant local helper is missing from the currently implicated path.

No prior Fixer patch was found in this workspace; Debian has quilt patches, but none appear to target this finding. Avoid any awkward control-flow patch such as adding `goto`-based throttling to CPython’s poll/wait wrappers, because the observed loop already blocks for about one second and should not be changed without a reproducer.

## Risks
Changing CPython’s `poll`, `selectors`, `wait4`, or subprocess wait behavior from this evidence would risk altering documented blocking semantics and signal/EINTR behavior for all Python users while only addressing a likely supervisord policy loop.

The raw investigation artifact directory and `supervisord` executable/config are not present in this workspace, so the collected evidence cannot currently be independently replayed here.

## Validation
Before reporting any source patch, try the project build entrypoint from the workspace root: `./configure && make`. If it fails due to missing build dependencies or generated files, record the exact failure and then run the narrowest relevant compile/check.

For the independent failure-signal check, when `supervisord` is available, run a bounded replay such as `timeout 8s strace -f -e poll,wait4 -tt -T /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` and verify whether `poll(..., 1000)` blocks for about one second or returns immediately. Without that reproduction showing immediate wakeups or a CPython frame responsible for CPU burn, do not claim `reproduced` or submit a CPython patch.

## Patch Pass

Subject: No patch: diagnose supervisord timed polling

## Commit Message
No source change is proposed. The collected evidence does not show a CPython runtime busy loop: it shows `supervisord` running under Python, sleeping in `poll(2)` with a one-second timeout and periodically calling `wait4(..., WNOHANG)`.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected a perf/profile signal for `/usr/bin/python3.13` with high aggregate CPU, but the `/proc` and strace details point away from a tight interpreter loop. The process state was `S (sleeping)`, `wchan` was `poll_schedule_timeout`, and strace showed repeated `poll(..., 1000)` calls returning after about `1.001s`, with `wait4(-1, ..., WNOHANG)` returning `ECHILD`.

The cautious inference is that this is an application-level `supervisord` polling loop, not a CPython `select.poll()` or `os.wait4()` bug. I followed the saved plan and did not change course: no source diff was left because the evidence remains indirect and does not identify a safe upstream CPython fix.

I inspected the relevant CPython helpers and conventions. `Modules/selectmodule.c` already uses `_PyTime_FromMillisecondsObject`, `_PyDeadline_Init/_PyDeadline_Get`, `_PyTime_AsMilliseconds`, `Py_BEGIN_ALLOW_THREADS`, and EINTR retry via `PyErr_CheckSignals`; `Modules/posixmodule.c` uses the matching GIL-release and EINTR pattern for `wait4()`/`waitpid()`. No missing local helper or clearer bounded control-flow change was found.

The expected effect of this proposal is to avoid an unjustified CPython behavior change and preserve the current documented poll/wait semantics until stronger evidence ties the reported CPU use to CPython itself.

## Git Add Paths
None

## Validation
Ran `./configure && make` from the workspace root. It completed with exit code 0. During the build, CPython reported `_ssl` failed to import due to `undefined symbol: TLSv1_method`, and listed `_dbm`, `_gdbm`, and `_tkinter` as missing optional modules.

Ran `make distclean` afterward to remove generated build products; `git status --short` is clean.

Independent reproduction was attempted but blocked: `command -v supervisord` returned no path, `/etc/supervisor/supervisord.conf` was absent (`test -e ...` returned `1`), and the raw investigation directory from `evidence.json` was not present. Therefore I did not reproduce the failure locally.

## Review Pass 1

RESULT: ok

No source diff is present and `git status --short` is clean, so there are no code-level regressions to review.

The no-patch diagnosis is consistent with the evidence: strace shows timed `poll(..., 1000)` sleeps rather than a tight CPython loop, and the response correctly uses `inferred` confidence, avoids inventing a reproducer, names the relevant CPython helper conventions, and reports the project-level `./configure && make` validation plus the blocked independent reproduction attempt.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 04:53 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `python3.13`, but the bundled process is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, not a CPython-owned entrypoint. The syscall trace shows `wait4(..., WNOHANG) = ECHILD` followed by `poll(..., 1000)` timing out after about one second, while the process state is sleeping in `poll_schedule_timeout`. That does not establish a tight CPython busy loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose 89434 as application-level or profiler-attribution evidence unless a bounded reproducer implicates CPython `select.poll()`, `os.waitpid()`, or runtime scheduling.

## Patch Plan
Do not edit files in this pass. The evidence is indirect and partly contradictory: profiler CPU attribution reports kernel spin-lock time, but strace shows blocking one-second polls, and the Python-level application is supervisord, which is outside this `python3.13` source tree.

If later evidence proves a CPython bug, patch the smallest implicated runtime path and follow local conventions found in the subsystem: `Modules/selectmodule.c` uses `_PyTime_*` deadline helpers, `Py_BEGIN_ALLOW_THREADS`, and `PyErr_CheckSignals()` around poll-like syscalls; `Modules/posixmodule.c` uses `Py_BEGIN_ALLOW_THREADS`, EINTR retry, and `posix_error()` for `waitpid()`. Avoid awkward control flow such as a new `goto`; use the existing bounded retry-loop style.

No prior Fixer patch was found in `debian/patches`, and `git status --short` is clean, so there is no existing Fixer change to improve or replace.

## Risks
A CPython patch based only on this bundle would likely be speculative and not pull-request-ready. It could change correct blocking semantics for `select.poll()` or `os.waitpid()` without evidence that either API is faulty.

The unresolved backtrace top frame around `pthread_attr_destroy()` is not enough to identify a runtime bug, especially because the syscall evidence points to normal application event-loop polling.

## Validation
For any future source change, first try the project-level entrypoint from the workspace root:

`./configure && make`

If that fails due to missing build dependencies or generated files, record the exact failure and then run the narrowest relevant check, likely `./python -m test test_poll test_os` after a successful partial build.

Before editing, run a bounded independent reproduction attempt that actually targets the collected signal: use the built interpreter under `strace -c` or `/usr/bin/time` with a short script that alternates `os.waitpid(-1, os.WNOHANG)` with `select.poll().poll(1000)` on an idle fd. Only move from diagnosis to patching if that shows unexpected CPU use or syscall behavior attributable to CPython rather than the supervisord application loop.

## Patch Pass

Subject: Diagnose python3.13 poll profile without source changes

## Commit Message
No source change is proposed. The likely root cause is not a CPython busy loop: the collected trace shows a `supervisord` process repeatedly checking for children with `wait4(..., WNOHANG)` and then sleeping in `poll(..., 1000)` for about one second. That is application event-loop behavior, not evidence that CPython’s `poll()` or `waitpid()` wrappers are spinning.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected a high-CPU profile attributed to `/usr/bin/python3.13`, with kernel samples in `_raw_spin_lock_irqsave`, but `/proc` reported the sampled process as `S (sleeping)` with `wchan` in `poll_schedule_timeout`. The strace excerpt shows `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0` after roughly one second.

The cautious code-level inference is that the Python application, `/usr/bin/supervisord`, is running a normal child-reaping/event-loop cadence. CPython’s nearby code already uses the expected local helpers and conventions: `select.poll()` uses `_PyTime_*` timeout handling, `Py_BEGIN_ALLOW_THREADS`, and `PyErr_CheckSignals()`, while `os.waitpid()` uses the established EINTR retry loop and `posix_error()`.

I followed `plan-output.txt` and did not change course: the evidence remained indirect and contradictory for a CPython source patch. The specific change made is none. The expected effect is no runtime behavior change and no speculative upstream diff based on profiler attribution alone.

## Git Add Paths
None

## Validation
Ran `./configure && make` from the workspace root. It completed with exit code 0. Build output reported optional module issues: `_ssl` built but failed to import due to `undefined symbol: TLSv1_method`; `_dbm`, `_gdbm`, and `_tkinter` prerequisites were not found.

Attempted bounded independent reproduction with `strace -qq -c ./python ...`; blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 6): Operation not permitted`.

Ran the same `waitpid(-1, WNOHANG)` plus `poll(1000)` loop without strace using `/usr/bin/time`. Result: `elapsed_loop=5.005`, `elapsed=5.01 user=0.00 sys=0.00 cpu=0%`. This did not reproduce a busy loop.

## Review Pass 1

RESULT: ok

No source diff is present, and the no-patch diagnosis matches the evidence level. The author correctly kept confidence at `inferred`, did not claim a reproduced CPython bug, named the relevant CPython helper conventions, and reported both the project-level build and the blocked `strace` reproduction attempt with the exact ptrace error.

The maintainer-facing explanation is acceptable for a diagnosis: it connects the collected `wait4(..., WNOHANG)` plus one-second `poll()` cadence and sleeping `/proc` state to an application event loop rather than a confirmed CPython runtime defect.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-12 04:53 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `python3.13`, but the bundled process is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, not a CPython-owned entrypoint. The syscall trace shows `wait4(..., WNOHANG) = ECHILD` followed by `poll(..., 1000)` timing out after about one second, while the process state is sleeping in `poll_schedule_timeout`. That does not establish a tight CPython busy loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose 89434 as application-level or profiler-attribution evidence unless a bounded reproducer implicates CPython `select.poll()`, `os.waitpid()`, or runtime scheduling.

## Patch Plan
Do not edit files in this pass. The evidence is indirect and partly contradictory: profiler CPU attribution reports kernel spin-lock time, but strace shows blocking one-second polls, and the Python-level application is supervisord, which is outside this `python3.13` source tree.

If later evidence proves a CPython bug, patch the smallest implicated runtime path and follow local conventions found in the subsystem: `Modules/selectmodule.c` uses `_PyTime_*` deadline helpers, `Py_BEGIN_ALLOW_THREADS`, and `PyErr_CheckSignals()` around poll-like syscalls; `Modules/posixmodule.c` uses `Py_BEGIN_ALLOW_THREADS`, EINTR retry, and `posix_error()` for `waitpid()`. Avoid awkward control flow such as a new `goto`; use the existing bounded retry-loop style.

No prior Fixer patch was found in `debian/patches`, and `git status --short` is clean, so there is no existing Fixer change to improve or replace.

## Risks
A CPython patch based only on this bundle would likely be speculative and not pull-request-ready. It could change correct blocking semantics for `select.poll()` or `os.waitpid()` without evidence that either API is faulty.

The unresolved backtrace top frame around `pthread_attr_destroy()` is not enough to identify a runtime bug, especially because the syscall evidence points to normal application event-loop polling.

## Validation
For any future source change, first try the project-level entrypoint from the workspace root:

`./configure && make`

If that fails due to missing build dependencies or generated files, record the exact failure and then run the narrowest relevant check, likely `./python -m test test_poll test_os` after a successful partial build.

Before editing, run a bounded independent reproduction attempt that actually targets the collected signal: use the built interpreter under `strace -c` or `/usr/bin/time` with a short script that alternates `os.waitpid(-1, os.WNOHANG)` with `select.poll().poll(1000)` on an idle fd. Only move from diagnosis to patching if that shows unexpected CPU use or syscall behavior attributable to CPython rather than the supervisord application loop.

## Patch Pass

Subject: Diagnose python3.13 poll profile without source changes

## Commit Message
No source change is proposed. The likely root cause is not a CPython busy loop: the collected trace shows a `supervisord` process repeatedly checking for children with `wait4(..., WNOHANG)` and then sleeping in `poll(..., 1000)` for about one second. That is application event-loop behavior, not evidence that CPython’s `poll()` or `waitpid()` wrappers are spinning.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected a high-CPU profile attributed to `/usr/bin/python3.13`, with kernel samples in `_raw_spin_lock_irqsave`, but `/proc` reported the sampled process as `S (sleeping)` with `wchan` in `poll_schedule_timeout`. The strace excerpt shows `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0` after roughly one second.

The cautious code-level inference is that the Python application, `/usr/bin/supervisord`, is running a normal child-reaping/event-loop cadence. CPython’s nearby code already uses the expected local helpers and conventions: `select.poll()` uses `_PyTime_*` timeout handling, `Py_BEGIN_ALLOW_THREADS`, and `PyErr_CheckSignals()`, while `os.waitpid()` uses the established EINTR retry loop and `posix_error()`.

I followed `plan-output.txt` and did not change course: the evidence remained indirect and contradictory for a CPython source patch. The specific change made is none. The expected effect is no runtime behavior change and no speculative upstream diff based on profiler attribution alone.

## Git Add Paths
None

## Validation
Ran `./configure && make` from the workspace root. It completed with exit code 0. Build output reported optional module issues: `_ssl` built but failed to import due to `undefined symbol: TLSv1_method`; `_dbm`, `_gdbm`, and `_tkinter` prerequisites were not found.

Attempted bounded independent reproduction with `strace -qq -c ./python ...`; blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 6): Operation not permitted`.

Ran the same `waitpid(-1, WNOHANG)` plus `poll(1000)` loop without strace using `/usr/bin/time`. Result: `elapsed_loop=5.005`, `elapsed=5.01 user=0.00 sys=0.00 cpu=0%`. This did not reproduce a busy loop.

## Review Pass 1

RESULT: ok

No source diff is present, and the no-patch diagnosis matches the evidence level. The author correctly kept confidence at `inferred`, did not claim a reproduced CPython bug, named the relevant CPython helper conventions, and reported both the project-level build and the blocked `strace` reproduction attempt with the exact ptrace error.

The maintainer-facing explanation is acceptable for a diagnosis: it connects the collected `wait4(..., WNOHANG)` plus one-second `poll()` cadence and sleeping `/proc` state to an application event loop rather than a confirmed CPython runtime defect.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 13:49 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1 (local metadata check)

Local metadata consistency check

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing. The workspace currently changes these repo-relative paths: Lib/__pycache__/__future__.cpython-313.pyc, Lib/__pycache__/_collections_abc.cpython-313.pyc, Lib/__pycache__/_colorize.cpython-313.pyc, Lib/__pycache__/_compat_pickle.cpython-313.pyc, Lib/__pycache__/_compression.cpython-313.pyc, Lib/__pycache__/_opcode_metadata.cpython-313.pyc, Lib/__pycache__/_sitebuiltins.cpython-313.pyc, Lib/__pycache__/_weakrefset.cpython-313.pyc, Lib/__pycache__/abc.cpython-313.pyc, Lib/__pycache__/argparse.cpython-313.pyc, Lib/__pycache__/ast.cpython-313.pyc, Lib/__pycache__/base64.cpython-313.pyc, Lib/__pycache__/bisect.cpython-313.pyc, Lib/__pycache__/bz2.cpython-313.pyc, Lib/__pycache__/codecs.cpython-313.pyc, Lib/__pycache__/contextlib.cpython-313.pyc, Lib/__pycache__/contextvars.cpython-313.pyc, Lib/__pycache__/copy.cpython-313.pyc, Lib/__pycache__/copyreg.cpython-313.pyc, Lib/__pycache__/dataclasses.cpython-313.pyc, Lib/__pycache__/datetime.cpython-313.pyc, Lib/__pycache__/difflib.cpython-313.pyc, Lib/__pycache__/dis.cpython-313.pyc, Lib/__pycache__/enum.cpython-313.pyc, Lib/__pycache__/fnmatch.cpython-313.pyc, Lib/__pycache__/functools.cpython-313.pyc, Lib/__pycache__/genericpath.cpython-313.pyc, Lib/__pycache__/gettext.cpython-313.pyc, Lib/__pycache__/glob.cpython-313.pyc, Lib/__pycache__/heapq.cpython-313.pyc, Lib/__pycache__/inspect.cpython-313.pyc, Lib/__pycache__/io.cpython-313.pyc, Lib/__pycache__/keyword.cpython-313.pyc, Lib/__pycache__/linecache.cpython-313.pyc, Lib/__pycache__/locale.cpython-313.pyc, Lib/__pycache__/lzma.cpython-313.pyc, Lib/__pycache__/numbers.cpython-313.pyc, Lib/__pycache__/opcode.cpython-313.pyc, Lib/__pycache__/operator.cpython-313.pyc, Lib/__pycache__/os.cpython-313.pyc, Lib/__pycache__/pickle.cpython-313.pyc, Lib/__pycache__/platform.cpython-313.pyc, Lib/__pycache__/posixpath.cpython-313.pyc, Lib/__pycache__/pprint.cpython-313.pyc, Lib/__pycache__/random.cpython-313.pyc, Lib/__pycache__/reprlib.cpython-313.pyc, Lib/__pycache__/selectors.cpython-313.pyc, Lib/__pycache__/shlex.cpython-313.pyc, Lib/__pycache__/shutil.cpython-313.pyc, Lib/__pycache__/signal.cpython-313.pyc, Lib/__pycache__/site.cpython-313.pyc, Lib/__pycache__/socket.cpython-313.pyc, Lib/__pycache__/ssl.cpython-313.pyc, Lib/__pycache__/stat.cpython-313.pyc, Lib/__pycache__/string.cpython-313.pyc, Lib/__pycache__/struct.cpython-313.pyc, Lib/__pycache__/subprocess.cpython-313.pyc, Lib/__pycache__/tempfile.cpython-313.pyc, Lib/__pycache__/textwrap.cpython-313.pyc, Lib/__pycache__/threading.cpython-313.pyc, Lib/__pycache__/token.cpython-313.pyc, Lib/__pycache__/tokenize.cpython-313.pyc, Lib/__pycache__/trace.cpython-313.pyc, Lib/__pycache__/traceback.cpython-313.pyc, Lib/__pycache__/types.cpython-313.pyc, Lib/__pycache__/typing.cpython-313.pyc, Lib/__pycache__/warnings.cpython-313.pyc, Lib/__pycache__/weakref.cpython-313.pyc, Lib/asyncio/__pycache__/__init__.cpython-313.pyc, Lib/asyncio/__pycache__/base_events.cpython-313.pyc, Lib/asyncio/__pycache__/base_futures.cpython-313.pyc, Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc, Lib/asyncio/__pycache__/constants.cpython-313.pyc, Lib/asyncio/__pycache__/coroutines.cpython-313.pyc, Lib/asyncio/__pycache__/events.cpython-313.pyc, Lib/asyncio/__pycache__/exceptions.cpython-313.pyc, Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc, Lib/asyncio/__pycache__/futures.cpython-313.pyc, Lib/asyncio/__pycache__/locks.cpython-313.pyc, Lib/asyncio/__pycache__/log.cpython-313.pyc, Lib/asyncio/__pycache__/mixins.cpython-313.pyc, Lib/asyncio/__pycache__/protocols.cpython-313.pyc, Lib/asyncio/__pycache__/queues.cpython-313.pyc, Lib/asyncio/__pycache__/runners.cpython-313.pyc, Lib/asyncio/__pycache__/selector_events.cpython-313.pyc, Lib/asyncio/__pycache__/sslproto.cpython-313.pyc, Lib/asyncio/__pycache__/staggered.cpython-313.pyc, Lib/asyncio/__pycache__/streams.cpython-313.pyc, Lib/asyncio/__pycache__/subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc, Lib/asyncio/__pycache__/tasks.cpython-313.pyc, Lib/asyncio/__pycache__/threads.cpython-313.pyc, Lib/asyncio/__pycache__/timeouts.cpython-313.pyc, Lib/asyncio/__pycache__/transports.cpython-313.pyc, Lib/asyncio/__pycache__/trsock.cpython-313.pyc, Lib/asyncio/__pycache__/unix_events.cpython-313.pyc, Lib/collections/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc, Lib/encodings/__pycache__/__init__.cpython-313.pyc, Lib/encodings/__pycache__/aliases.cpython-313.pyc, Lib/encodings/__pycache__/ascii.cpython-313.pyc, Lib/encodings/__pycache__/utf_8.cpython-313.pyc, Lib/importlib/__pycache__/__init__.cpython-313.pyc, Lib/importlib/__pycache__/_abc.cpython-313.pyc, Lib/json/__pycache__/__init__.cpython-313.pyc, Lib/json/__pycache__/decoder.cpython-313.pyc, Lib/json/__pycache__/encoder.cpython-313.pyc, Lib/json/__pycache__/scanner.cpython-313.pyc, Lib/logging/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/_abc.cpython-313.pyc, Lib/pathlib/__pycache__/_local.cpython-313.pyc, Lib/re/__pycache__/__init__.cpython-313.pyc, Lib/re/__pycache__/_casefix.cpython-313.pyc, Lib/re/__pycache__/_compiler.cpython-313.pyc, Lib/re/__pycache__/_constants.cpython-313.pyc, Lib/re/__pycache__/_parser.cpython-313.pyc, Lib/sysconfig/__pycache__/__init__.cpython-313.pyc, Lib/sysconfig/__pycache__/__main__.cpython-313.pyc, Lib/test/__pycache__/__init__.cpython-313.pyc, Lib/test/__pycache__/__main__.cpython-313.pyc, Lib/test/__pycache__/fork_wait.cpython-31

[truncated 30137 bytes]

Response

## Plan Pass

## Problem

Fixer observed high CPU attributed to `python3.13`, but the concrete process evidence is for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The included `strace` excerpt shows `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0 (Timeout)` once per second, while `/proc` reports the sampled process as sleeping in `poll_schedule_timeout`. That is not enough to justify a CPython runtime source patch.

## Evidence Confidence

observed

The signal is observed from Fixer’s profiler/trace bundle, not independently reproduced. The raw artifact paths listed in `evidence.json` are unavailable in this workspace, so the plan should not upgrade confidence beyond observed. The evidence is also internally mixed: profiler CPU attribution is high, but the sampled PID’s syscall and wchan excerpts show timed blocking rather than a tight userspace loop.

## Proposed Subject

No CPython source patch in this pass. Prepare a no-patch diagnosis or request additional evidence targeted at `supervisord` or the kernel scheduler/perf signal before touching CPython.

No prior Fixer patch was found in the workspace. Debian patches are present under `debian/patches/`, but none appears to be a prior Fixer patch for this issue.

## Patch Plan

Do not edit CPython unless additional evidence shows a runtime bug independent of `supervisord`.

If more evidence is collected before editing, start from the script/application entrypoint: reproduce or trace `supervisord`’s event loop and confirm whether it is waking faster than its intended one-second poll interval. Only then inspect CPython runtime paths such as `Modules/selectmodule.c`, `Modules/posixmodule.c`, and `Python/thread_pthread.h`.

Maintainer conventions/helpers found:
`README.rst` points contributors to the CPython Developer Guide and names `./configure`, `make`, and `make test` as the normal Unix workflow. Local syscall wrappers release the GIL with `Py_BEGIN_ALLOW_THREADS` and retry `EINTR` using `PyErr_CheckSignals()`. Timeout code in `select.poll()` uses `_PyTime_FromMillisecondsObject()`, `_PyDeadline_Init()`, `_PyDeadline_Get()`, and `_PyTime_ROUND_TIMEOUT`/`_PyTime_ROUND_CEILING`. Thread code uses CPython memory wrappers such as `PyMem_RawMalloc()`/`PyMem_RawFree()`.

If a later patch is justified, keep it upstream-style, narrowly scoped, and avoid awkward cleanup control flow such as unnecessary `goto` when a bounded local cleanup path is clearer.

## Risks

A CPython patch based on the current bundle would likely be speculative. The observed loop pattern is consistent with supervisor-style periodic polling, and the sampled process is sleeping in `poll`, not demonstrably spinning inside CPython.

The backtrace contains stripped/uncertain frames around `pthread_attr_destroy()` and `PyMem_Realloc()`, so treating it as a reliable CPython stack would be risky without symbols or a reproducible failure.

## Validation

For any later source patch, first try the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Then run the narrowest relevant CPython test, likely one of:

```sh
./python -m test test_select test_os
```

As a bounded independent signal check, run a small local smoke under the built interpreter that performs repeated `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)`, measuring elapsed time and CPU. This can verify whether CPython itself busy-spins on the syscall pattern shown in the bundle; do not claim reproduction unless that command actually shows abnormal CPU or wake frequency.

## Patch Pass

Subject: No CPython patch for supervisord poll trace

## Commit Message
No source change. The collected signal points to a `supervisord` process periodically calling `wait4(WNOHANG)` and then sleeping in `poll(1000)`, not to a demonstrated CPython busy loop. Leaving a CPython diff would be speculative without a reproduced interpreter-level failure.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is high CPU attributed to `python3.13`, with perf samples in kernel scheduler code, a `supervisord` command line, `/proc` state `S (sleeping)`, kernel stack in `poll_schedule_timeout`, and `strace` showing `wait4(-1, ..., WNOHANG) = ECHILD` followed by one-second `poll(..., 1000)` timeouts.

The likely root cause is outside the inspected CPython runtime path: the visible syscall sequence is consistent with an application supervisor loop waking once per second to reap children and wait for events. CPython’s `select.poll()` wrapper releases the GIL around `poll()`, preserves timeout semantics with the local `_PyTime_*` helpers, and only retries on `EINTR`; `os.wait4()` similarly releases the GIL and retries interrupted syscalls with `PyErr_CheckSignals()`. I also inspected the pthread frame area, but the stripped `pthread_attr_destroy()` backtrace is not enough to connect a runtime thread bug to the observed poll/wait pattern.

I made no source change. This follows the saved plan’s no-patch direction; I am classifying the final evidence as `inferred` rather than the plan’s `observed` because the current authoring instructions reserve `inferred` for profiler/strace-based evidence when no stronger local reproduction is gathered.

The expected effect is to avoid an upstream CPython patch that would not be pull-request-ready. A useful upstream or distro report should instead include stronger evidence from the `supervisord` entrypoint or a symbolized CPython trace that shows an interpreter-owned loop consuming CPU.

## Git Add Paths
None

## Validation
Checked contribution and local conventions before deciding not to patch. `README.rst` points to the CPython Developer Guide and documents the normal Unix workflow as `./configure`, `make`, and `make test`. Relevant local helpers/conventions found: `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `PyErr_CheckSignals()` for interrupted syscall retry, `_PyTime_FromMillisecondsObject()`, `_PyDeadline_Init()`, `_PyDeadline_Get()`, `_PyTime_ROUND_TIMEOUT`, and CPython memory wrappers such as `PyMem_RawMalloc()`/`PyMem_RawFree()`.

Ran project entrypoint from the workspace root:

```sh
./configure && make
```

Result: success. Build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing, but the interpreter and relevant `select`/`posix` modules built.

Ran bounded independent smoke mirroring the collected syscall pattern:

```sh
/usr/bin/time -f 'time: elapsed=%e user=%U sys=%S maxrss=%M' ./python - <<'PY'
import os, select, time
r, w = os.pipe()
try:
    p = select.poll()
    p.register(r, select.POLLIN | select.POLLPRI | select.POLLHUP)
    start_wall = time.monotonic()
    start_cpu = time.process_time()
    for _ in range(5):
        try:
            os.wait4(-1, os.WNOHANG)
        except ChildProcessError:
            pass
        p.poll(1000)
    print('wall=%.3f cpu=%.6f' % (time.monotonic() - start_wall, time.process_time() - start_cpu))
finally:
    os.close(r)
    os.close(w)
PY
```

Result: not reproduced. Output showed about five seconds wall time and negligible CPU: `wall=5.005 cpu=0.000361`, `elapsed=5.01 user=0.00 sys=0.00`.

Ran focused tests:

```sh
./python -m test test_select test_wait4
```

Result: success, all 2 test files passed, 8 tests run in 6.5 seconds.

The raw investigation paths named in `evidence.json` were not present locally, so validation relied on the embedded evidence excerpts plus the independent smoke above.

## Review Pass 1 (local metadata check)

RESULT: fix-needed

## Findings
1. Patch metadata drift: the workspace currently changes `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bisect.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/dataclasses.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/difflib.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/pickle.cpython-313.pyc`, `Lib/__pycache__/platform.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/pprint.cpython-313.pyc`, `Lib/__pycache__/random.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shlex.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/tempfile.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/trace.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/json/__pycache__/__init__.cpython-313.pyc`, `Lib/json/__pycache__/decoder.cpython-313.pyc`, `Lib/json/__pycache__/encoder.cpython-313.pyc`, `Lib/json/__pycache__/scanner.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/__init__.cpython-313.pyc`, `Lib/test/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/fork_wait.cpython-313.pyc`, `Lib/test/__pycache__/test_select.cpython-313.pyc`, `Lib/test/__pycache__/test_wait4.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/__init__.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/cmdline.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/filter.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/findtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/logger.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/main.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/pgo.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/result.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/results.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/runtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/save_env.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/setup.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/single.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/testresult.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/tsan.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/utils.cpython-313.pyc`, `Lib/test/support/__pycache__/__init__.cpython-313.pyc`, `Lib/test/support/__pycache__/os_helper.cpython-313.pyc`, `Lib/test/support/__pycache__/threading_helper.cpython-313.pyc`, `Lib/unittest/__pycache__/__init__.cpython-313.pyc`, `Lib/unittest/__pycache__/case.cpython-313.pyc`, `Lib/unittest/__pycache__/loader.cpython-313.pyc`, `Lib/unittest/__pycache__/main.cpython-313.pyc`, `Lib/unittest/__pycache__/result.cpython-313.pyc`, `Lib/unittest/__pycache__/runner.cpython-313.pyc`, `Lib/unittest/__pycache__/signals.cpython-313.pyc`, `Lib/unittest/__pycache__/suite.cpython-313.pyc`, `Lib/unittest/__pycache__/util.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`, but `## Git Add Paths` lists `None`. Update `## Git Add Paths` to match the real shipped file set exactly, and make sure `## Issue Connection` explains every functional file that remains in the patch.
2. Missing from `## Git Add Paths`: `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bisect.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/dataclasses.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/difflib.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/pickle.cpython-313.pyc`, `Lib/__pycache__/platform.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/pprint.cpython-313.pyc`, `Lib/__pycache__/random.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shlex.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/tempfile.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/trace.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/json/__pycache__/__init__.cpython-313.pyc`, `Lib/json/__pycache__/decoder.cpython-313.pyc`, `Lib/json/__pycache__/encoder.cpython-313.pyc`, `Lib/json/__pycache__/scanner.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/__init__.cpython-313.pyc`, `Lib/test/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/fork_wait.cpython-313.pyc`, `Lib/test/__pycache__/test_select.cpython-313.pyc`, `Lib/test/__pycache__/test_wait4.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/__init__.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/cmdline.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/filter.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/findtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/logger.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/main.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/pgo.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/result.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/results.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/runtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/save_env.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/setup.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/single.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/testresult.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/tsan.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/utils.cpython-313.pyc`, `Lib/test/support/__pycache__/__init__.cpython-313.pyc`, `Lib/test/support/__pycache__/os_helper.cpython-313.pyc`, `Lib/test/support/__pycache__/threading_helper.cpython-313.pyc`, `Lib/unittest/__pycache__/__init__.cpython-313.pyc`, `Lib/unittest/__pycache__/case.cpython-313.pyc`, `Lib/unittest/__pycache__/loader.cpython-313.pyc`, `Lib/unittest/__pycache__/main.cpython-313.pyc`, `Lib/unittest/__pycache__/result.cpython-313.pyc`, `Lib/unittest/__pycache__/runner.cpython-313.pyc`, `Lib/unittest/__pycache__/signals.cpython-313.pyc`, `Lib/unittest/__pycache__/suite.cpython-313.pyc`, `Lib/unittest/__pycache__/util.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`.
2. Listed in `## Git Add Paths` but not actually changed: `None`.

## Refinement Pass 1

Subject: No CPython patch for supervisord poll trace

## Commit Message
No source change. The collected signal still points to a `supervisor

[truncated 3140 bytes]

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 13:49 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1 (local metadata check)

Local metadata consistency check

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing. The workspace currently changes these repo-relative paths: Lib/__pycache__/__future__.cpython-313.pyc, Lib/__pycache__/_collections_abc.cpython-313.pyc, Lib/__pycache__/_colorize.cpython-313.pyc, Lib/__pycache__/_compat_pickle.cpython-313.pyc, Lib/__pycache__/_compression.cpython-313.pyc, Lib/__pycache__/_opcode_metadata.cpython-313.pyc, Lib/__pycache__/_sitebuiltins.cpython-313.pyc, Lib/__pycache__/_weakrefset.cpython-313.pyc, Lib/__pycache__/abc.cpython-313.pyc, Lib/__pycache__/argparse.cpython-313.pyc, Lib/__pycache__/ast.cpython-313.pyc, Lib/__pycache__/base64.cpython-313.pyc, Lib/__pycache__/bisect.cpython-313.pyc, Lib/__pycache__/bz2.cpython-313.pyc, Lib/__pycache__/codecs.cpython-313.pyc, Lib/__pycache__/contextlib.cpython-313.pyc, Lib/__pycache__/contextvars.cpython-313.pyc, Lib/__pycache__/copy.cpython-313.pyc, Lib/__pycache__/copyreg.cpython-313.pyc, Lib/__pycache__/dataclasses.cpython-313.pyc, Lib/__pycache__/datetime.cpython-313.pyc, Lib/__pycache__/difflib.cpython-313.pyc, Lib/__pycache__/dis.cpython-313.pyc, Lib/__pycache__/enum.cpython-313.pyc, Lib/__pycache__/fnmatch.cpython-313.pyc, Lib/__pycache__/functools.cpython-313.pyc, Lib/__pycache__/genericpath.cpython-313.pyc, Lib/__pycache__/gettext.cpython-313.pyc, Lib/__pycache__/glob.cpython-313.pyc, Lib/__pycache__/heapq.cpython-313.pyc, Lib/__pycache__/inspect.cpython-313.pyc, Lib/__pycache__/io.cpython-313.pyc, Lib/__pycache__/keyword.cpython-313.pyc, Lib/__pycache__/linecache.cpython-313.pyc, Lib/__pycache__/locale.cpython-313.pyc, Lib/__pycache__/lzma.cpython-313.pyc, Lib/__pycache__/numbers.cpython-313.pyc, Lib/__pycache__/opcode.cpython-313.pyc, Lib/__pycache__/operator.cpython-313.pyc, Lib/__pycache__/os.cpython-313.pyc, Lib/__pycache__/pickle.cpython-313.pyc, Lib/__pycache__/platform.cpython-313.pyc, Lib/__pycache__/posixpath.cpython-313.pyc, Lib/__pycache__/pprint.cpython-313.pyc, Lib/__pycache__/random.cpython-313.pyc, Lib/__pycache__/reprlib.cpython-313.pyc, Lib/__pycache__/selectors.cpython-313.pyc, Lib/__pycache__/shlex.cpython-313.pyc, Lib/__pycache__/shutil.cpython-313.pyc, Lib/__pycache__/signal.cpython-313.pyc, Lib/__pycache__/site.cpython-313.pyc, Lib/__pycache__/socket.cpython-313.pyc, Lib/__pycache__/ssl.cpython-313.pyc, Lib/__pycache__/stat.cpython-313.pyc, Lib/__pycache__/string.cpython-313.pyc, Lib/__pycache__/struct.cpython-313.pyc, Lib/__pycache__/subprocess.cpython-313.pyc, Lib/__pycache__/tempfile.cpython-313.pyc, Lib/__pycache__/textwrap.cpython-313.pyc, Lib/__pycache__/threading.cpython-313.pyc, Lib/__pycache__/token.cpython-313.pyc, Lib/__pycache__/tokenize.cpython-313.pyc, Lib/__pycache__/trace.cpython-313.pyc, Lib/__pycache__/traceback.cpython-313.pyc, Lib/__pycache__/types.cpython-313.pyc, Lib/__pycache__/typing.cpython-313.pyc, Lib/__pycache__/warnings.cpython-313.pyc, Lib/__pycache__/weakref.cpython-313.pyc, Lib/asyncio/__pycache__/__init__.cpython-313.pyc, Lib/asyncio/__pycache__/base_events.cpython-313.pyc, Lib/asyncio/__pycache__/base_futures.cpython-313.pyc, Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc, Lib/asyncio/__pycache__/constants.cpython-313.pyc, Lib/asyncio/__pycache__/coroutines.cpython-313.pyc, Lib/asyncio/__pycache__/events.cpython-313.pyc, Lib/asyncio/__pycache__/exceptions.cpython-313.pyc, Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc, Lib/asyncio/__pycache__/futures.cpython-313.pyc, Lib/asyncio/__pycache__/locks.cpython-313.pyc, Lib/asyncio/__pycache__/log.cpython-313.pyc, Lib/asyncio/__pycache__/mixins.cpython-313.pyc, Lib/asyncio/__pycache__/protocols.cpython-313.pyc, Lib/asyncio/__pycache__/queues.cpython-313.pyc, Lib/asyncio/__pycache__/runners.cpython-313.pyc, Lib/asyncio/__pycache__/selector_events.cpython-313.pyc, Lib/asyncio/__pycache__/sslproto.cpython-313.pyc, Lib/asyncio/__pycache__/staggered.cpython-313.pyc, Lib/asyncio/__pycache__/streams.cpython-313.pyc, Lib/asyncio/__pycache__/subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc, Lib/asyncio/__pycache__/tasks.cpython-313.pyc, Lib/asyncio/__pycache__/threads.cpython-313.pyc, Lib/asyncio/__pycache__/timeouts.cpython-313.pyc, Lib/asyncio/__pycache__/transports.cpython-313.pyc, Lib/asyncio/__pycache__/trsock.cpython-313.pyc, Lib/asyncio/__pycache__/unix_events.cpython-313.pyc, Lib/collections/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc, Lib/encodings/__pycache__/__init__.cpython-313.pyc, Lib/encodings/__pycache__/aliases.cpython-313.pyc, Lib/encodings/__pycache__/ascii.cpython-313.pyc, Lib/encodings/__pycache__/utf_8.cpython-313.pyc, Lib/importlib/__pycache__/__init__.cpython-313.pyc, Lib/importlib/__pycache__/_abc.cpython-313.pyc, Lib/json/__pycache__/__init__.cpython-313.pyc, Lib/json/__pycache__/decoder.cpython-313.pyc, Lib/json/__pycache__/encoder.cpython-313.pyc, Lib/json/__pycache__/scanner.cpython-313.pyc, Lib/logging/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/_abc.cpython-313.pyc, Lib/pathlib/__pycache__/_local.cpython-313.pyc, Lib/re/__pycache__/__init__.cpython-313.pyc, Lib/re/__pycache__/_casefix.cpython-313.pyc, Lib/re/__pycache__/_compiler.cpython-313.pyc, Lib/re/__pycache__/_constants.cpython-313.pyc, Lib/re/__pycache__/_parser.cpython-313.pyc, Lib/sysconfig/__pycache__/__init__.cpython-313.pyc, Lib/sysconfig/__pycache__/__main__.cpython-313.pyc, Lib/test/__pycache__/__init__.cpython-313.pyc, Lib/test/__pycache__/__main__.cpython-313.pyc, Lib/test/__pycache__/fork_wait.cpython-31

[truncated 30137 bytes]

Response

## Plan Pass

## Problem

Fixer observed high CPU attributed to `python3.13`, but the concrete process evidence is for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The included `strace` excerpt shows `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0 (Timeout)` once per second, while `/proc` reports the sampled process as sleeping in `poll_schedule_timeout`. That is not enough to justify a CPython runtime source patch.

## Evidence Confidence

observed

The signal is observed from Fixer’s profiler/trace bundle, not independently reproduced. The raw artifact paths listed in `evidence.json` are unavailable in this workspace, so the plan should not upgrade confidence beyond observed. The evidence is also internally mixed: profiler CPU attribution is high, but the sampled PID’s syscall and wchan excerpts show timed blocking rather than a tight userspace loop.

## Proposed Subject

No CPython source patch in this pass. Prepare a no-patch diagnosis or request additional evidence targeted at `supervisord` or the kernel scheduler/perf signal before touching CPython.

No prior Fixer patch was found in the workspace. Debian patches are present under `debian/patches/`, but none appears to be a prior Fixer patch for this issue.

## Patch Plan

Do not edit CPython unless additional evidence shows a runtime bug independent of `supervisord`.

If more evidence is collected before editing, start from the script/application entrypoint: reproduce or trace `supervisord`’s event loop and confirm whether it is waking faster than its intended one-second poll interval. Only then inspect CPython runtime paths such as `Modules/selectmodule.c`, `Modules/posixmodule.c`, and `Python/thread_pthread.h`.

Maintainer conventions/helpers found:
`README.rst` points contributors to the CPython Developer Guide and names `./configure`, `make`, and `make test` as the normal Unix workflow. Local syscall wrappers release the GIL with `Py_BEGIN_ALLOW_THREADS` and retry `EINTR` using `PyErr_CheckSignals()`. Timeout code in `select.poll()` uses `_PyTime_FromMillisecondsObject()`, `_PyDeadline_Init()`, `_PyDeadline_Get()`, and `_PyTime_ROUND_TIMEOUT`/`_PyTime_ROUND_CEILING`. Thread code uses CPython memory wrappers such as `PyMem_RawMalloc()`/`PyMem_RawFree()`.

If a later patch is justified, keep it upstream-style, narrowly scoped, and avoid awkward cleanup control flow such as unnecessary `goto` when a bounded local cleanup path is clearer.

## Risks

A CPython patch based on the current bundle would likely be speculative. The observed loop pattern is consistent with supervisor-style periodic polling, and the sampled process is sleeping in `poll`, not demonstrably spinning inside CPython.

The backtrace contains stripped/uncertain frames around `pthread_attr_destroy()` and `PyMem_Realloc()`, so treating it as a reliable CPython stack would be risky without symbols or a reproducible failure.

## Validation

For any later source patch, first try the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Then run the narrowest relevant CPython test, likely one of:

```sh
./python -m test test_select test_os
```

As a bounded independent signal check, run a small local smoke under the built interpreter that performs repeated `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)`, measuring elapsed time and CPU. This can verify whether CPython itself busy-spins on the syscall pattern shown in the bundle; do not claim reproduction unless that command actually shows abnormal CPU or wake frequency.

## Patch Pass

Subject: No CPython patch for supervisord poll trace

## Commit Message
No source change. The collected signal points to a `supervisord` process periodically calling `wait4(WNOHANG)` and then sleeping in `poll(1000)`, not to a demonstrated CPython busy loop. Leaving a CPython diff would be speculative without a reproduced interpreter-level failure.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is high CPU attributed to `python3.13`, with perf samples in kernel scheduler code, a `supervisord` command line, `/proc` state `S (sleeping)`, kernel stack in `poll_schedule_timeout`, and `strace` showing `wait4(-1, ..., WNOHANG) = ECHILD` followed by one-second `poll(..., 1000)` timeouts.

The likely root cause is outside the inspected CPython runtime path: the visible syscall sequence is consistent with an application supervisor loop waking once per second to reap children and wait for events. CPython’s `select.poll()` wrapper releases the GIL around `poll()`, preserves timeout semantics with the local `_PyTime_*` helpers, and only retries on `EINTR`; `os.wait4()` similarly releases the GIL and retries interrupted syscalls with `PyErr_CheckSignals()`. I also inspected the pthread frame area, but the stripped `pthread_attr_destroy()` backtrace is not enough to connect a runtime thread bug to the observed poll/wait pattern.

I made no source change. This follows the saved plan’s no-patch direction; I am classifying the final evidence as `inferred` rather than the plan’s `observed` because the current authoring instructions reserve `inferred` for profiler/strace-based evidence when no stronger local reproduction is gathered.

The expected effect is to avoid an upstream CPython patch that would not be pull-request-ready. A useful upstream or distro report should instead include stronger evidence from the `supervisord` entrypoint or a symbolized CPython trace that shows an interpreter-owned loop consuming CPU.

## Git Add Paths
None

## Validation
Checked contribution and local conventions before deciding not to patch. `README.rst` points to the CPython Developer Guide and documents the normal Unix workflow as `./configure`, `make`, and `make test`. Relevant local helpers/conventions found: `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `PyErr_CheckSignals()` for interrupted syscall retry, `_PyTime_FromMillisecondsObject()`, `_PyDeadline_Init()`, `_PyDeadline_Get()`, `_PyTime_ROUND_TIMEOUT`, and CPython memory wrappers such as `PyMem_RawMalloc()`/`PyMem_RawFree()`.

Ran project entrypoint from the workspace root:

```sh
./configure && make
```

Result: success. Build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing, but the interpreter and relevant `select`/`posix` modules built.

Ran bounded independent smoke mirroring the collected syscall pattern:

```sh
/usr/bin/time -f 'time: elapsed=%e user=%U sys=%S maxrss=%M' ./python - <<'PY'
import os, select, time
r, w = os.pipe()
try:
    p = select.poll()
    p.register(r, select.POLLIN | select.POLLPRI | select.POLLHUP)
    start_wall = time.monotonic()
    start_cpu = time.process_time()
    for _ in range(5):
        try:
            os.wait4(-1, os.WNOHANG)
        except ChildProcessError:
            pass
        p.poll(1000)
    print('wall=%.3f cpu=%.6f' % (time.monotonic() - start_wall, time.process_time() - start_cpu))
finally:
    os.close(r)
    os.close(w)
PY
```

Result: not reproduced. Output showed about five seconds wall time and negligible CPU: `wall=5.005 cpu=0.000361`, `elapsed=5.01 user=0.00 sys=0.00`.

Ran focused tests:

```sh
./python -m test test_select test_wait4
```

Result: success, all 2 test files passed, 8 tests run in 6.5 seconds.

The raw investigation paths named in `evidence.json` were not present locally, so validation relied on the embedded evidence excerpts plus the independent smoke above.

## Review Pass 1 (local metadata check)

RESULT: fix-needed

## Findings
1. Patch metadata drift: the workspace currently changes `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bisect.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/dataclasses.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/difflib.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/pickle.cpython-313.pyc`, `Lib/__pycache__/platform.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/pprint.cpython-313.pyc`, `Lib/__pycache__/random.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shlex.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/tempfile.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/trace.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/json/__pycache__/__init__.cpython-313.pyc`, `Lib/json/__pycache__/decoder.cpython-313.pyc`, `Lib/json/__pycache__/encoder.cpython-313.pyc`, `Lib/json/__pycache__/scanner.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/__init__.cpython-313.pyc`, `Lib/test/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/fork_wait.cpython-313.pyc`, `Lib/test/__pycache__/test_select.cpython-313.pyc`, `Lib/test/__pycache__/test_wait4.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/__init__.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/cmdline.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/filter.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/findtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/logger.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/main.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/pgo.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/result.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/results.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/runtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/save_env.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/setup.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/single.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/testresult.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/tsan.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/utils.cpython-313.pyc`, `Lib/test/support/__pycache__/__init__.cpython-313.pyc`, `Lib/test/support/__pycache__/os_helper.cpython-313.pyc`, `Lib/test/support/__pycache__/threading_helper.cpython-313.pyc`, `Lib/unittest/__pycache__/__init__.cpython-313.pyc`, `Lib/unittest/__pycache__/case.cpython-313.pyc`, `Lib/unittest/__pycache__/loader.cpython-313.pyc`, `Lib/unittest/__pycache__/main.cpython-313.pyc`, `Lib/unittest/__pycache__/result.cpython-313.pyc`, `Lib/unittest/__pycache__/runner.cpython-313.pyc`, `Lib/unittest/__pycache__/signals.cpython-313.pyc`, `Lib/unittest/__pycache__/suite.cpython-313.pyc`, `Lib/unittest/__pycache__/util.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`, but `## Git Add Paths` lists `None`. Update `## Git Add Paths` to match the real shipped file set exactly, and make sure `## Issue Connection` explains every functional file that remains in the patch.
2. Missing from `## Git Add Paths`: `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bisect.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/dataclasses.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/difflib.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/pickle.cpython-313.pyc`, `Lib/__pycache__/platform.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/pprint.cpython-313.pyc`, `Lib/__pycache__/random.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shlex.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/tempfile.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/trace.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/json/__pycache__/__init__.cpython-313.pyc`, `Lib/json/__pycache__/decoder.cpython-313.pyc`, `Lib/json/__pycache__/encoder.cpython-313.pyc`, `Lib/json/__pycache__/scanner.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/__init__.cpython-313.pyc`, `Lib/test/__pycache__/__main__.cpython-313.pyc`, `Lib/test/__pycache__/fork_wait.cpython-313.pyc`, `Lib/test/__pycache__/test_select.cpython-313.pyc`, `Lib/test/__pycache__/test_wait4.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/__init__.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/cmdline.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/filter.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/findtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/logger.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/main.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/pgo.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/result.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/results.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/runtests.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/save_env.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/setup.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/single.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/testresult.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/tsan.cpython-313.pyc`, `Lib/test/libregrtest/__pycache__/utils.cpython-313.pyc`, `Lib/test/support/__pycache__/__init__.cpython-313.pyc`, `Lib/test/support/__pycache__/os_helper.cpython-313.pyc`, `Lib/test/support/__pycache__/threading_helper.cpython-313.pyc`, `Lib/unittest/__pycache__/__init__.cpython-313.pyc`, `Lib/unittest/__pycache__/case.cpython-313.pyc`, `Lib/unittest/__pycache__/loader.cpython-313.pyc`, `Lib/unittest/__pycache__/main.cpython-313.pyc`, `Lib/unittest/__pycache__/result.cpython-313.pyc`, `Lib/unittest/__pycache__/runner.cpython-313.pyc`, `Lib/unittest/__pycache__/signals.cpython-313.pyc`, `Lib/unittest/__pycache__/suite.cpython-313.pyc`, `Lib/unittest/__pycache__/util.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`.
2. Listed in `## Git Add Paths` but not actually changed: `None`.

## Refinement Pass 1

Subject: No CPython patch for supervisord poll trace

## Commit Message
No source change. The collected signal still points to a `supervisor

[truncated 3140 bytes]

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 12:30 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem

Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` then `poll(..., 1000) = 0` pattern. The available evidence does not show a CPython runtime loop: it shows the Python interpreter executing the `supervisord` application event loop, blocking for one second between polls. The raw artifact paths in `evidence.json` are not present on disk, so the bundle excerpt is the available signal.

## Evidence Confidence

observed

## Proposed Subject

No CPython source patch from this evidence. Prepare a diagnosis/report that the observed signal is application-level `supervisord` polling under Python, not an actionable `python3.13` upstream defect.

## Patch Plan

1. Do not edit CPython for this pass unless additional evidence ties the CPU use to a specific runtime bug.
2. Document that the command-line entrypoint is `supervisord`, while the interpreter is only the runtime hosting it.
3. Note that the syscall trace is not a tight busy loop: each cycle includes `poll(..., 1000)` timing out after about one second.
4. Treat the odd GDB top frame around `pthread_attr_destroy()` as unreliable without symbols, because the captured Python frames are mostly unresolved and conflict with the syscall stack showing sleep in `poll_schedule_timeout`.
5. If later evidence does implicate CPython process/thread code, follow local conventions found in `Modules/posixmodule.c` and `Python/thread_pthread.h`: `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `posix_error()` for errno conversion, `WAIT_STATUS_INT()` for wait status handling, and `PyMem_RawMalloc`/`PyMem_RawFree` for raw thread support allocations. Avoid awkward control flow such as a broad `goto` cleanup when a bounded early-return cleanup matches nearby code.
6. No prior Fixer patch was found in the workspace; `git status --short` is clean.

## Risks

A source patch would be speculative and likely wrong: changing CPython `waitpid`, `wait4`, selector, or pthread handling based only on this evidence could alter stable runtime behavior without addressing the observed `supervisord` loop. The main residual risk is that missing raw artifacts contained more precise stack or CPU samples, but they are unavailable here.

## Validation

Before any future source edit, try the project-level entrypoint from the workspace root: `./configure && make`. If that fails due to missing dependencies or generated files, record the exact failure and then use the narrowest relevant CPython check.

For this no-patch diagnosis, run one cheap independent signal check instead of claiming reproduction: use `strace -tt -e poll,wait4` on a minimal Python script that performs `os.waitpid(-1, os.WNOHANG)` and `select.poll().poll(1000)` to confirm the observed syscall shape is ordinary Python-executed application behavior, not proof of a CPython runaway loop.

## Patch Pass

Subject: No CPython change for supervisord polling trace

## Commit Message
No source change is included. The collected evidence points to a Python-hosted `supervisord` event loop that periodically reaps children and waits on a file descriptor, not to a CPython runtime defect. A CPython patch would be speculative without stronger evidence tying the CPU sample to a specific interpreter bug.

## Evidence Confidence
inferred

## Issue Connection
The collected signal was a `python3.13` process running `/usr/bin/supervisord`, with perf samples in kernel scheduling code and strace showing repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timing out after about one second. `WNOHANG` means the wait call checks for exited children without blocking; `ECHILD` means there were no child processes to reap.

The cautious code-level inference is that `supervisord` is driving this loop at the application level. CPython’s relevant wrappers in `Modules/posixmodule.c` simply call `wait4()`/`waitpid()` using local conventions such as `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, and `WAIT_STATUS_INT()`. The selector code also preserves millisecond poll timeouts rather than spinning. The GDB frame naming `pthread_attr_destroy()` is not enough to justify a thread-runtime patch because the same evidence says the process was sleeping in `poll_schedule_timeout`.

I followed the saved plan and left no source diff. The expected effect is no change to CPython behavior; this should instead be reported upstream as an application/runtime attribution issue unless stronger evidence identifies a concrete CPython defect.

## Git Add Paths
None

## Validation
Checked contribution/build guidance in `README.rst` and `Doc/README.rst`; CPython points contributors to the Developer Guide and documents `./configure`, `make`, and `make test`. Scanned `Modules/posixmodule.c`, `Lib/subprocess.py`, `Lib/selectors.py`, and `Python/thread_pthread.h`; relevant local helpers/conventions found were `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, `WAIT_STATUS_INT()`, `PyMem_RawMalloc`, and `PyMem_RawFree`.

Ran project-level validation from the workspace root: `./configure && make`. It completed successfully. Configure warned that system `libmpdec` was not found and the build fell back to bundled `libmpdec`; the final build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing, with 0 failed imports.

Attempted bounded independent syscall reproduction:
`strace -qq -tt -e trace=poll,wait4 ./python -c '...'`
This was blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted`.

Fallback smoke check:
`./python -c 'import os, select, time; ... os.waitpid(-1, os.WNOHANG) ... poll(1000) ...'`
Output was `ChildProcessError` and `[] 1.001`, confirming the same Python-level no-child wait plus one-second poll timeout shape without reproducing a CPython runaway.

Ran `make distclean` after validation to remove generated build artifacts. Final `git status --short` and `git diff --name-status` were clean.

## Review Pass 1

RESULT: ok

No source diff is present, and the workspace is clean. The no-patch diagnosis is consistent with the evidence limits: it does not claim a reproduced CPython defect, explains the `supervisord` wait/poll signal cautiously, names relevant CPython helper conventions, and reports project-level validation with `./configure && make` before the bounded reproduction attempt.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 12:30 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem

Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` then `poll(..., 1000) = 0` pattern. The available evidence does not show a CPython runtime loop: it shows the Python interpreter executing the `supervisord` application event loop, blocking for one second between polls. The raw artifact paths in `evidence.json` are not present on disk, so the bundle excerpt is the available signal.

## Evidence Confidence

observed

## Proposed Subject

No CPython source patch from this evidence. Prepare a diagnosis/report that the observed signal is application-level `supervisord` polling under Python, not an actionable `python3.13` upstream defect.

## Patch Plan

1. Do not edit CPython for this pass unless additional evidence ties the CPU use to a specific runtime bug.
2. Document that the command-line entrypoint is `supervisord`, while the interpreter is only the runtime hosting it.
3. Note that the syscall trace is not a tight busy loop: each cycle includes `poll(..., 1000)` timing out after about one second.
4. Treat the odd GDB top frame around `pthread_attr_destroy()` as unreliable without symbols, because the captured Python frames are mostly unresolved and conflict with the syscall stack showing sleep in `poll_schedule_timeout`.
5. If later evidence does implicate CPython process/thread code, follow local conventions found in `Modules/posixmodule.c` and `Python/thread_pthread.h`: `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `posix_error()` for errno conversion, `WAIT_STATUS_INT()` for wait status handling, and `PyMem_RawMalloc`/`PyMem_RawFree` for raw thread support allocations. Avoid awkward control flow such as a broad `goto` cleanup when a bounded early-return cleanup matches nearby code.
6. No prior Fixer patch was found in the workspace; `git status --short` is clean.

## Risks

A source patch would be speculative and likely wrong: changing CPython `waitpid`, `wait4`, selector, or pthread handling based only on this evidence could alter stable runtime behavior without addressing the observed `supervisord` loop. The main residual risk is that missing raw artifacts contained more precise stack or CPU samples, but they are unavailable here.

## Validation

Before any future source edit, try the project-level entrypoint from the workspace root: `./configure && make`. If that fails due to missing dependencies or generated files, record the exact failure and then use the narrowest relevant CPython check.

For this no-patch diagnosis, run one cheap independent signal check instead of claiming reproduction: use `strace -tt -e poll,wait4` on a minimal Python script that performs `os.waitpid(-1, os.WNOHANG)` and `select.poll().poll(1000)` to confirm the observed syscall shape is ordinary Python-executed application behavior, not proof of a CPython runaway loop.

## Patch Pass

Subject: No CPython change for supervisord polling trace

## Commit Message
No source change is included. The collected evidence points to a Python-hosted `supervisord` event loop that periodically reaps children and waits on a file descriptor, not to a CPython runtime defect. A CPython patch would be speculative without stronger evidence tying the CPU sample to a specific interpreter bug.

## Evidence Confidence
inferred

## Issue Connection
The collected signal was a `python3.13` process running `/usr/bin/supervisord`, with perf samples in kernel scheduling code and strace showing repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timing out after about one second. `WNOHANG` means the wait call checks for exited children without blocking; `ECHILD` means there were no child processes to reap.

The cautious code-level inference is that `supervisord` is driving this loop at the application level. CPython’s relevant wrappers in `Modules/posixmodule.c` simply call `wait4()`/`waitpid()` using local conventions such as `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, and `WAIT_STATUS_INT()`. The selector code also preserves millisecond poll timeouts rather than spinning. The GDB frame naming `pthread_attr_destroy()` is not enough to justify a thread-runtime patch because the same evidence says the process was sleeping in `poll_schedule_timeout`.

I followed the saved plan and left no source diff. The expected effect is no change to CPython behavior; this should instead be reported upstream as an application/runtime attribution issue unless stronger evidence identifies a concrete CPython defect.

## Git Add Paths
None

## Validation
Checked contribution/build guidance in `README.rst` and `Doc/README.rst`; CPython points contributors to the Developer Guide and documents `./configure`, `make`, and `make test`. Scanned `Modules/posixmodule.c`, `Lib/subprocess.py`, `Lib/selectors.py`, and `Python/thread_pthread.h`; relevant local helpers/conventions found were `Py_BEGIN_ALLOW_THREADS`, `posix_error()`, `WAIT_STATUS_INT()`, `PyMem_RawMalloc`, and `PyMem_RawFree`.

Ran project-level validation from the workspace root: `./configure && make`. It completed successfully. Configure warned that system `libmpdec` was not found and the build fell back to bundled `libmpdec`; the final build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing, with 0 failed imports.

Attempted bounded independent syscall reproduction:
`strace -qq -tt -e trace=poll,wait4 ./python -c '...'`
This was blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted`.

Fallback smoke check:
`./python -c 'import os, select, time; ... os.waitpid(-1, os.WNOHANG) ... poll(1000) ...'`
Output was `ChildProcessError` and `[] 1.001`, confirming the same Python-level no-child wait plus one-second poll timeout shape without reproducing a CPython runaway.

Ran `make distclean` after validation to remove generated build artifacts. Final `git status --short` and `git diff --name-status` were clean.

## Review Pass 1

RESULT: ok

No source diff is present, and the workspace is clean. The no-patch diagnosis is consistent with the evidence limits: it does not claim a reproduced CPython defect, explains the `supervisord` wait/poll signal cautiously, names relevant CPython helper conventions, and reports project-level validation with `./configure && make` before the bounded reproduction attempt.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 11:04 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` running under `/usr/bin/python3.13` with repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts. The process state and stack excerpt show sleeping in `poll_schedule_timeout`, so the visible signal points first at Supervisor’s application event loop, not a proven CPython runtime defect.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: report a diagnosis that the current evidence is insufficient for an upstream `python3.13` change.

## Patch Plan
Do not edit CPython from this bundle unless additional evidence directly implicates a CPython wait/poll wrapper. The entrypoint evidence is `supervisord`, so investigation should stay application-first; CPython runtime code is only a secondary target.

I checked CPython guidance/conventions in `README.rst`, `.editorconfig`, `Tools/README`, `InternalDocs/`, and nearby wait/poll code. No `CONTRIBUTING`, `HACKING`, or `dev-docs` file was found. Relevant local conventions/helpers are Argument Clinic wrappers, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` in `Modules/selectmodule.c`.

The prior Fixer attempt’s no-source-change diagnosis should be retained rather than replaced with a speculative CPython patch. Its earlier validation produced build artifact churn, so any later validation must leave the workspace clean. If future evidence does require C edits, keep CPython’s existing bounded retry-loop style and avoid awkward `goto` control flow.

## Risks
A CPython patch here would likely misattribute Supervisor behavior or environment noise to the interpreter. The embedded strace shows one-second blocking waits, not a tight busy loop, and the raw artifact directory referenced by the bundle is unavailable from this workspace for stronger attribution.

The incomplete gdb symbols around `pthread_attr_destroy()` and `PyMem_Realloc()` are not enough to identify a CPython defect.

## Validation
Before reporting any source patch or focused compile, try the project-level entrypoint from the workspace root:

```sh
./configure && make
```

If it fails because dependencies or generated files are missing, record the exact command and failure reason, then run the narrowest relevant CPython check.

For this no-patch diagnosis, also run one bounded independent check without claiming reproduction: a short Python command that calls `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)` to confirm the observed cadence can be a normal one-second sleep. If `strace -e wait4,poll` is blocked by sandbox ptrace restrictions, record that and run the same smoke command without `strace`.

## Patch Pass

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The collected signal points at a Supervisor process periodically checking for child exits and then sleeping in `poll()`, not at a demonstrated CPython wait or poll bug.

## Evidence Confidence
inferred

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` under `/usr/bin/python3.13`. The trace shows repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts of about one second, while `/proc` reports the process sleeping in `poll_schedule_timeout`.

The cautious root-cause inference is that Supervisor’s event loop is polling for child process state and then blocking for its normal one-second interval. CPython’s nearby wrappers already follow local conventions: Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` for poll timeouts. I found no relevant missing CPython helper or wrapper misuse.

I followed the saved plan and left no source diff. I checked `README.rst`, `.editorconfig`, `InternalDocs/`, and the wait/poll subsystem code; no `CONTRIBUTING`, `HACKING`, `README-hacking`, `docs/`, or `dev-docs/` guidance was present. The expected effect is no CPython behavior change; this should be reported upstream as insufficient evidence for an interpreter patch, with the Supervisor command line and timed wait/poll excerpts included.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build completed with three optional modules not built because optional dependencies were unavailable: `_dbm`, `_gdbm`, and `_tkinter`.

Attempted bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran the same smoke check without `strace`:

```sh
./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.000`, confirming this wait/poll cadence can represent a normal one-second sleep rather than a reproduced CPython runaway. Cleaned build artifacts with `make distclean`; final `git status --short` was clean.

## Review Pass 1

RESULT: ok

No source changes are present, `## Git Add Paths` correctly says `None`, and the workspace is clean. The response keeps `## Evidence Confidence` at `inferred`, which matches the indirect profiler/strace evidence and the no-patch diagnosis.

The maintainer-facing explanation is consistent with the evidence: the observed `supervisord` process is doing `wait4(..., WNOHANG)` followed by one-second `poll()` sleeps, and the CPython wait/poll wrappers already use local conventions (`Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, `_PyDeadline_*`). Validation is adequate: project-level `./configure && make` was run, the `strace` reproduction attempt records the exact ptrace blocker, the non-strace smoke check confirms the one-second sleep cadence, and build artifacts were cleaned.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 11:04 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` running under `/usr/bin/python3.13` with repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts. The process state and stack excerpt show sleeping in `poll_schedule_timeout`, so the visible signal points first at Supervisor’s application event loop, not a proven CPython runtime defect.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: report a diagnosis that the current evidence is insufficient for an upstream `python3.13` change.

## Patch Plan
Do not edit CPython from this bundle unless additional evidence directly implicates a CPython wait/poll wrapper. The entrypoint evidence is `supervisord`, so investigation should stay application-first; CPython runtime code is only a secondary target.

I checked CPython guidance/conventions in `README.rst`, `.editorconfig`, `Tools/README`, `InternalDocs/`, and nearby wait/poll code. No `CONTRIBUTING`, `HACKING`, or `dev-docs` file was found. Relevant local conventions/helpers are Argument Clinic wrappers, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` in `Modules/selectmodule.c`.

The prior Fixer attempt’s no-source-change diagnosis should be retained rather than replaced with a speculative CPython patch. Its earlier validation produced build artifact churn, so any later validation must leave the workspace clean. If future evidence does require C edits, keep CPython’s existing bounded retry-loop style and avoid awkward `goto` control flow.

## Risks
A CPython patch here would likely misattribute Supervisor behavior or environment noise to the interpreter. The embedded strace shows one-second blocking waits, not a tight busy loop, and the raw artifact directory referenced by the bundle is unavailable from this workspace for stronger attribution.

The incomplete gdb symbols around `pthread_attr_destroy()` and `PyMem_Realloc()` are not enough to identify a CPython defect.

## Validation
Before reporting any source patch or focused compile, try the project-level entrypoint from the workspace root:

```sh
./configure && make
```

If it fails because dependencies or generated files are missing, record the exact command and failure reason, then run the narrowest relevant CPython check.

For this no-patch diagnosis, also run one bounded independent check without claiming reproduction: a short Python command that calls `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)` to confirm the observed cadence can be a normal one-second sleep. If `strace -e wait4,poll` is blocked by sandbox ptrace restrictions, record that and run the same smoke command without `strace`.

## Patch Pass

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The collected signal points at a Supervisor process periodically checking for child exits and then sleeping in `poll()`, not at a demonstrated CPython wait or poll bug.

## Evidence Confidence
inferred

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` under `/usr/bin/python3.13`. The trace shows repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts of about one second, while `/proc` reports the process sleeping in `poll_schedule_timeout`.

The cautious root-cause inference is that Supervisor’s event loop is polling for child process state and then blocking for its normal one-second interval. CPython’s nearby wrappers already follow local conventions: Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` for poll timeouts. I found no relevant missing CPython helper or wrapper misuse.

I followed the saved plan and left no source diff. I checked `README.rst`, `.editorconfig`, `InternalDocs/`, and the wait/poll subsystem code; no `CONTRIBUTING`, `HACKING`, `README-hacking`, `docs/`, or `dev-docs/` guidance was present. The expected effect is no CPython behavior change; this should be reported upstream as insufficient evidence for an interpreter patch, with the Supervisor command line and timed wait/poll excerpts included.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build completed with three optional modules not built because optional dependencies were unavailable: `_dbm`, `_gdbm`, and `_tkinter`.

Attempted bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran the same smoke check without `strace`:

```sh
./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.000`, confirming this wait/poll cadence can represent a normal one-second sleep rather than a reproduced CPython runaway. Cleaned build artifacts with `make distclean`; final `git status --short` was clean.

## Review Pass 1

RESULT: ok

No source changes are present, `## Git Add Paths` correctly says `None`, and the workspace is clean. The response keeps `## Evidence Confidence` at `inferred`, which matches the indirect profiler/strace evidence and the no-patch diagnosis.

The maintainer-facing explanation is consistent with the evidence: the observed `supervisord` process is doing `wait4(..., WNOHANG)` followed by one-second `poll()` sleeps, and the CPython wait/poll wrappers already use local conventions (`Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, `_PyDeadline_*`). Validation is adequate: project-level `./configure && make` was run, the `strace` reproduction attempt records the exact ptrace blocker, the non-strace smoke check confirms the one-second sleep cadence, and build artifacts were cleaned.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 09:50 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1 (local metadata check)

Local metadata consistency check

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing. The workspace currently changes these repo-relative paths: Lib/__pycache__/__future__.cpython-313.pyc, Lib/__pycache__/_collections_abc.cpython-313.pyc, Lib/__pycache__/_colorize.cpython-313.pyc, Lib/__pycache__/_compat_pickle.cpython-313.pyc, Lib/__pycache__/_compression.cpython-313.pyc, Lib/__pycache__/_opcode_metadata.cpython-313.pyc, Lib/__pycache__/_sitebuiltins.cpython-313.pyc, Lib/__pycache__/_weakrefset.cpython-313.pyc, Lib/__pycache__/abc.cpython-313.pyc, Lib/__pycache__/argparse.cpython-313.pyc, Lib/__pycache__/ast.cpython-313.pyc, Lib/__pycache__/base64.cpython-313.pyc, Lib/__pycache__/bz2.cpython-313.pyc, Lib/__pycache__/codecs.cpython-313.pyc, Lib/__pycache__/contextlib.cpython-313.pyc, Lib/__pycache__/contextvars.cpython-313.pyc, Lib/__pycache__/copy.cpython-313.pyc, Lib/__pycache__/copyreg.cpython-313.pyc, Lib/__pycache__/datetime.cpython-313.pyc, Lib/__pycache__/dis.cpython-313.pyc, Lib/__pycache__/enum.cpython-313.pyc, Lib/__pycache__/fnmatch.cpython-313.pyc, Lib/__pycache__/functools.cpython-313.pyc, Lib/__pycache__/genericpath.cpython-313.pyc, Lib/__pycache__/gettext.cpython-313.pyc, Lib/__pycache__/glob.cpython-313.pyc, Lib/__pycache__/heapq.cpython-313.pyc, Lib/__pycache__/inspect.cpython-313.pyc, Lib/__pycache__/io.cpython-313.pyc, Lib/__pycache__/keyword.cpython-313.pyc, Lib/__pycache__/linecache.cpython-313.pyc, Lib/__pycache__/locale.cpython-313.pyc, Lib/__pycache__/lzma.cpython-313.pyc, Lib/__pycache__/numbers.cpython-313.pyc, Lib/__pycache__/opcode.cpython-313.pyc, Lib/__pycache__/operator.cpython-313.pyc, Lib/__pycache__/os.cpython-313.pyc, Lib/__pycache__/posixpath.cpython-313.pyc, Lib/__pycache__/reprlib.cpython-313.pyc, Lib/__pycache__/selectors.cpython-313.pyc, Lib/__pycache__/shutil.cpython-313.pyc, Lib/__pycache__/signal.cpython-313.pyc, Lib/__pycache__/site.cpython-313.pyc, Lib/__pycache__/socket.cpython-313.pyc, Lib/__pycache__/ssl.cpython-313.pyc, Lib/__pycache__/stat.cpython-313.pyc, Lib/__pycache__/string.cpython-313.pyc, Lib/__pycache__/struct.cpython-313.pyc, Lib/__pycache__/subprocess.cpython-313.pyc, Lib/__pycache__/textwrap.cpython-313.pyc, Lib/__pycache__/threading.cpython-313.pyc, Lib/__pycache__/token.cpython-313.pyc, Lib/__pycache__/tokenize.cpython-313.pyc, Lib/__pycache__/traceback.cpython-313.pyc, Lib/__pycache__/types.cpython-313.pyc, Lib/__pycache__/typing.cpython-313.pyc, Lib/__pycache__/warnings.cpython-313.pyc, Lib/__pycache__/weakref.cpython-313.pyc, Lib/asyncio/__pycache__/__init__.cpython-313.pyc, Lib/asyncio/__pycache__/base_events.cpython-313.pyc, Lib/asyncio/__pycache__/base_futures.cpython-313.pyc, Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc, Lib/asyncio/__pycache__/constants.cpython-313.pyc, Lib/asyncio/__pycache__/coroutines.cpython-313.pyc, Lib/asyncio/__pycache__/events.cpython-313.pyc, Lib/asyncio/__pycache__/exceptions.cpython-313.pyc, Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc, Lib/asyncio/__pycache__/futures.cpython-313.pyc, Lib/asyncio/__pycache__/locks.cpython-313.pyc, Lib/asyncio/__pycache__/log.cpython-313.pyc, Lib/asyncio/__pycache__/mixins.cpython-313.pyc, Lib/asyncio/__pycache__/protocols.cpython-313.pyc, Lib/asyncio/__pycache__/queues.cpython-313.pyc, Lib/asyncio/__pycache__/runners.cpython-313.pyc, Lib/asyncio/__pycache__/selector_events.cpython-313.pyc, Lib/asyncio/__pycache__/sslproto.cpython-313.pyc, Lib/asyncio/__pycache__/staggered.cpython-313.pyc, Lib/asyncio/__pycache__/streams.cpython-313.pyc, Lib/asyncio/__pycache__/subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc, Lib/asyncio/__pycache__/tasks.cpython-313.pyc, Lib/asyncio/__pycache__/threads.cpython-313.pyc, Lib/asyncio/__pycache__/timeouts.cpython-313.pyc, Lib/asyncio/__pycache__/transports.cpython-313.pyc, Lib/asyncio/__pycache__/trsock.cpython-313.pyc, Lib/asyncio/__pycache__/unix_events.cpython-313.pyc, Lib/collections/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc, Lib/encodings/__pycache__/__init__.cpython-313.pyc, Lib/encodings/__pycache__/aliases.cpython-313.pyc, Lib/encodings/__pycache__/ascii.cpython-313.pyc, Lib/encodings/__pycache__/utf_8.cpython-313.pyc, Lib/importlib/__pycache__/__init__.cpython-313.pyc, Lib/importlib/__pycache__/_abc.cpython-313.pyc, Lib/logging/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/_abc.cpython-313.pyc, Lib/pathlib/__pycache__/_local.cpython-313.pyc, Lib/re/__pycache__/__init__.cpython-313.pyc, Lib/re/__pycache__/_casefix.cpython-313.pyc, Lib/re/__pycache__/_compiler.cpython-313.pyc, Lib/re/__pycache__/_constants.cpython-313.pyc, Lib/re/__pycache__/_parser.cpython-313.pyc, Lib/sysconfig/__pycache__/__init__.cpython-313.pyc, Lib/sysconfig/__pycache__/__main__.cpython-313.pyc, Lib/xml/__pycache__/__init__.cpython-313.pyc, Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc, Lib/xml/etree/__pycache__/__init__.cpython-313.pyc, Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc, Lib/zoneinfo/__pycache__/_common.cpython-313.pyc, Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc, Makefile, Makefile.pre, Misc/python-config.sh, Misc/python-embed.pc, Misc/python.pc, Modules/Setup.bootstrap, Modules/Setup.local, Modules/Setup.stdlib, Modules/_abc.o, Modules/_asyncio.cpython-313-x86_64-linux-gnu.so, Modules/_asynciomodule.o, Modules/_bisect.cpython-313-x86_64-linux-gnu.so, Modules/_bisectmodule.o, Modules/_blake2.cpython-313-x86_64-linux-gnu.so, Modules/_blake2/blake2b_impl.o, Modules/_blake2/blake2mo

[truncated 27774 bytes]

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` under `/usr/bin/python3.13`, with excerpts showing a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts. The evidence names `python3.13`, but the executable entrypoint is `supervisord`, which is not part of the CPython source tree.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: diagnose the observed `supervisord` poll/wait cadence as application-level or environmental evidence, not an upstream interpreter defect.

## Patch Plan
Do not edit files in this pass unless new evidence directly implicates CPython. The embedded strace shows one-second blocking `poll()` calls, not a tight CPython busy loop, and the process state is sleeping in `poll_schedule_timeout`.

Check the application path first: the evidence entrypoint is `supervisord`, so any source fix would need evidence from Supervisor’s loop before changing CPython runtime code. The raw artifact paths referenced by `evidence.json` were unavailable in this workspace, so the current basis is limited to embedded excerpts.

If later evidence points into CPython, follow CPython conventions found in `README.rst` and nearby code: Argument Clinic-generated wrappers in `Modules/posixmodule.c`, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` in `Modules/selectmodule.c`. No relevant CPython helper was found that should change for the current `supervisord` loop evidence.

No prior Fixer patch for this finding was found via workspace search. Since no source patch is currently justified, there is no control-flow change to make; if new evidence does require C changes, keep the existing bounded retry-loop style rather than adding avoidable `goto`.

## Risks
A CPython patch from this evidence would likely mask or misattribute a Supervisor configuration/runtime behavior. The profiler summary says “busy-poll,” but the visible syscall evidence shows timed blocking, so claiming a reproduced interpreter bug would be misleading.

The gdb top frame around `pthread_attr_destroy()` is not enough to identify a CPython defect because symbols are incomplete and the shown syscalls are ordinary application behavior.

## Validation
Before reporting any source patch, try the project-level build entrypoint from the workspace root:

```sh
./configure && make
```

If that fails because dependencies or generated files are missing, record the exact failure and then use the narrowest relevant CPython check.

For the current no-patch diagnosis, use one bounded independent check without claiming reproduction: run a short Python snippet that performs `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)` under `strace -e wait4,poll` to confirm those syscalls represent a sleeping one-second cadence, not a reproduced CPython runaway loop.

## Patch Pass

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The collected signal points at a Supervisor event loop running under Python, not at a CPython wait or poll bug. CPython’s local wait and poll wrappers already use the project’s normal syscall pattern: Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, signal checks with `PyErr_CheckSignals()`, and existing timeout handling in `select.poll()`.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected perf, strace, and `/proc` evidence for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The visible signal is repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` returning after about one second, with `/proc` showing the process sleeping in `poll_schedule_timeout`.

The cautious root-cause inference is that Supervisor is periodically checking for child processes and then blocking in its event loop. That is not a tight CPython busy loop: the embedded strace shows timed blocking, and the raw artifact paths named by the bundle were not readable from this workspace for stronger attribution.

I followed the saved plan in `plan-output.txt` and did not change course. I inspected CPython contribution/build guidance in `README.rst` and `Doc/README.rst`, then checked nearby wait/poll code in `Modules/posixmodule.c` and `Modules/selectmodule.c`. No relevant CPython helper was missing or misused, and no prior Fixer patch for this finding was present. No source diff was left because an inferred CPython patch would not be pull-request-ready.

The expected effect is no change to CPython behavior. A useful upstream report should instead include the Supervisor command line, the timed `wait4`/`poll` excerpts, the sleeping `/proc` state, and the note that the visible CPython syscall wrappers behave normally.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build completed with three optional modules not built (`_dbm`, `_gdbm`, `_tkinter`) due to missing optional dependencies, but this did not fail the build.

Attempted bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted`.

Ran the same bounded smoke command without `strace`:

```sh
./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.000`, confirming the observed wait/poll pattern can represent a normal one-second sleep rather than a reproduced CPython runaway.

## Review Pass 1 (local metadata check)

RESULT: fix-needed

## Findings
1. Patch metadata drift: the workspace currently changes `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`, but `## Git Add Paths` lists `None`. Update `## Git Add Paths` to match the real shipped file set exactly, and make sure `## Issue Connection` explains every functional file that remains in the patch.
2. Missing from `## Git Add Paths`: `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`.
2. Listed in `## Git Add Paths` but not actually changed: `None`.

## Refinement Pass 1

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The review finding was patch metadata drift from generated build artifacts, not a runtime bug in changed code. I removed the validation-generated files and kept the diagnosis: the collected signal points at a Supervisor event loop running under Python, not at a CPython wait or poll defect.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected perf, strace, and `/proc` evidence for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The visible signal is repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` returning after about one second, while `/proc` shows the process sleeping in `poll_schedule_timeout`.

The cautious inference is that Supervisor is periodically checking for child processes and then blocking in its event loop. That evidence does not identify a CPython code-level bug: the visible `wait4` and `poll` behavior is consistent with normal timed blocking, and the raw artifact paths named in the evidence bundle were not readable from this workspace for stronger attribution.

I re-read the plan and followed it. I also re-checked CPython contribution/build guidance in `README.rst` and `Doc/README.rst`, plus the nearby wait/poll code in `Modules/posixmodule.c` and `Modules/selectmodule.c`. The relevant local conventions remain Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()`; no relevant local helper was missing or needed because no source patch is justified.

The specific refinement change was cleanup only: `make distclean` removed the generated build outputs and `__pycache__` files called out by review. The expected effect is no CPython behavior change and a clean no-patch proposal suitable for an upstream diagnosis report rather than an inferred source diff.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` as not built because optional dependencies were missing, but the command exited successfully.

Checked whether `make check` is available after configure:

```sh
grep -q '^check:' Makefile
```

Result: no `check:` target was present, so `make check` was not run.

Attempted the bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python ...
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted`.

Ran the same bounded smoke command without `strace`:

```sh
./python - <<'PY'
import os, select, time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.001`.

Cleanup and final state:

```sh
make distclean
git status --short
```

Result: generated validation artifacts were removed, and `git status --short` produced no output.

## Review Pass 2

RESULT: ok

The refined proposal is now internally consistent and gittable. The workspace has no current diff or untracked build artifacts, `## Git Add Paths` correctly says `None`, and the maintainer-facing text keeps evidence confidence at `inferred` instead of presenting the profiler/strace signal as a confirmed CPython bug.

The diagnosis matches the evidence: the visible `wait4(..., WNOHANG)` plus one-second `poll()` timeout cadence points at the `supervisord` application loop, while the inspected CPython `wait4`/`poll` wrappers already follow local conventions (`Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and deadline helpers). Validation includes the project-level `./configure && make`, notes missing optional modules without overstating failure, records the blocked `strace` attempt, and confirms cleanup with a clean `git status --short`.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 09:50 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1 (local metadata check)

Local metadata consistency check

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing. The workspace currently changes these repo-relative paths: Lib/__pycache__/__future__.cpython-313.pyc, Lib/__pycache__/_collections_abc.cpython-313.pyc, Lib/__pycache__/_colorize.cpython-313.pyc, Lib/__pycache__/_compat_pickle.cpython-313.pyc, Lib/__pycache__/_compression.cpython-313.pyc, Lib/__pycache__/_opcode_metadata.cpython-313.pyc, Lib/__pycache__/_sitebuiltins.cpython-313.pyc, Lib/__pycache__/_weakrefset.cpython-313.pyc, Lib/__pycache__/abc.cpython-313.pyc, Lib/__pycache__/argparse.cpython-313.pyc, Lib/__pycache__/ast.cpython-313.pyc, Lib/__pycache__/base64.cpython-313.pyc, Lib/__pycache__/bz2.cpython-313.pyc, Lib/__pycache__/codecs.cpython-313.pyc, Lib/__pycache__/contextlib.cpython-313.pyc, Lib/__pycache__/contextvars.cpython-313.pyc, Lib/__pycache__/copy.cpython-313.pyc, Lib/__pycache__/copyreg.cpython-313.pyc, Lib/__pycache__/datetime.cpython-313.pyc, Lib/__pycache__/dis.cpython-313.pyc, Lib/__pycache__/enum.cpython-313.pyc, Lib/__pycache__/fnmatch.cpython-313.pyc, Lib/__pycache__/functools.cpython-313.pyc, Lib/__pycache__/genericpath.cpython-313.pyc, Lib/__pycache__/gettext.cpython-313.pyc, Lib/__pycache__/glob.cpython-313.pyc, Lib/__pycache__/heapq.cpython-313.pyc, Lib/__pycache__/inspect.cpython-313.pyc, Lib/__pycache__/io.cpython-313.pyc, Lib/__pycache__/keyword.cpython-313.pyc, Lib/__pycache__/linecache.cpython-313.pyc, Lib/__pycache__/locale.cpython-313.pyc, Lib/__pycache__/lzma.cpython-313.pyc, Lib/__pycache__/numbers.cpython-313.pyc, Lib/__pycache__/opcode.cpython-313.pyc, Lib/__pycache__/operator.cpython-313.pyc, Lib/__pycache__/os.cpython-313.pyc, Lib/__pycache__/posixpath.cpython-313.pyc, Lib/__pycache__/reprlib.cpython-313.pyc, Lib/__pycache__/selectors.cpython-313.pyc, Lib/__pycache__/shutil.cpython-313.pyc, Lib/__pycache__/signal.cpython-313.pyc, Lib/__pycache__/site.cpython-313.pyc, Lib/__pycache__/socket.cpython-313.pyc, Lib/__pycache__/ssl.cpython-313.pyc, Lib/__pycache__/stat.cpython-313.pyc, Lib/__pycache__/string.cpython-313.pyc, Lib/__pycache__/struct.cpython-313.pyc, Lib/__pycache__/subprocess.cpython-313.pyc, Lib/__pycache__/textwrap.cpython-313.pyc, Lib/__pycache__/threading.cpython-313.pyc, Lib/__pycache__/token.cpython-313.pyc, Lib/__pycache__/tokenize.cpython-313.pyc, Lib/__pycache__/traceback.cpython-313.pyc, Lib/__pycache__/types.cpython-313.pyc, Lib/__pycache__/typing.cpython-313.pyc, Lib/__pycache__/warnings.cpython-313.pyc, Lib/__pycache__/weakref.cpython-313.pyc, Lib/asyncio/__pycache__/__init__.cpython-313.pyc, Lib/asyncio/__pycache__/base_events.cpython-313.pyc, Lib/asyncio/__pycache__/base_futures.cpython-313.pyc, Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc, Lib/asyncio/__pycache__/constants.cpython-313.pyc, Lib/asyncio/__pycache__/coroutines.cpython-313.pyc, Lib/asyncio/__pycache__/events.cpython-313.pyc, Lib/asyncio/__pycache__/exceptions.cpython-313.pyc, Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc, Lib/asyncio/__pycache__/futures.cpython-313.pyc, Lib/asyncio/__pycache__/locks.cpython-313.pyc, Lib/asyncio/__pycache__/log.cpython-313.pyc, Lib/asyncio/__pycache__/mixins.cpython-313.pyc, Lib/asyncio/__pycache__/protocols.cpython-313.pyc, Lib/asyncio/__pycache__/queues.cpython-313.pyc, Lib/asyncio/__pycache__/runners.cpython-313.pyc, Lib/asyncio/__pycache__/selector_events.cpython-313.pyc, Lib/asyncio/__pycache__/sslproto.cpython-313.pyc, Lib/asyncio/__pycache__/staggered.cpython-313.pyc, Lib/asyncio/__pycache__/streams.cpython-313.pyc, Lib/asyncio/__pycache__/subprocess.cpython-313.pyc, Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc, Lib/asyncio/__pycache__/tasks.cpython-313.pyc, Lib/asyncio/__pycache__/threads.cpython-313.pyc, Lib/asyncio/__pycache__/timeouts.cpython-313.pyc, Lib/asyncio/__pycache__/transports.cpython-313.pyc, Lib/asyncio/__pycache__/trsock.cpython-313.pyc, Lib/asyncio/__pycache__/unix_events.cpython-313.pyc, Lib/collections/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc, Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc, Lib/encodings/__pycache__/__init__.cpython-313.pyc, Lib/encodings/__pycache__/aliases.cpython-313.pyc, Lib/encodings/__pycache__/ascii.cpython-313.pyc, Lib/encodings/__pycache__/utf_8.cpython-313.pyc, Lib/importlib/__pycache__/__init__.cpython-313.pyc, Lib/importlib/__pycache__/_abc.cpython-313.pyc, Lib/logging/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/__init__.cpython-313.pyc, Lib/pathlib/__pycache__/_abc.cpython-313.pyc, Lib/pathlib/__pycache__/_local.cpython-313.pyc, Lib/re/__pycache__/__init__.cpython-313.pyc, Lib/re/__pycache__/_casefix.cpython-313.pyc, Lib/re/__pycache__/_compiler.cpython-313.pyc, Lib/re/__pycache__/_constants.cpython-313.pyc, Lib/re/__pycache__/_parser.cpython-313.pyc, Lib/sysconfig/__pycache__/__init__.cpython-313.pyc, Lib/sysconfig/__pycache__/__main__.cpython-313.pyc, Lib/xml/__pycache__/__init__.cpython-313.pyc, Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc, Lib/xml/etree/__pycache__/__init__.cpython-313.pyc, Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc, Lib/zoneinfo/__pycache__/_common.cpython-313.pyc, Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc, Makefile, Makefile.pre, Misc/python-config.sh, Misc/python-embed.pc, Misc/python.pc, Modules/Setup.bootstrap, Modules/Setup.local, Modules/Setup.stdlib, Modules/_abc.o, Modules/_asyncio.cpython-313-x86_64-linux-gnu.so, Modules/_asynciomodule.o, Modules/_bisect.cpython-313-x86_64-linux-gnu.so, Modules/_bisectmodule.o, Modules/_blake2.cpython-313-x86_64-linux-gnu.so, Modules/_blake2/blake2b_impl.o, Modules/_blake2/blake2mo

[truncated 27774 bytes]

Response

## Plan Pass

## Problem
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` under `/usr/bin/python3.13`, with excerpts showing a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts. The evidence names `python3.13`, but the executable entrypoint is `supervisord`, which is not part of the CPython source tree.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: diagnose the observed `supervisord` poll/wait cadence as application-level or environmental evidence, not an upstream interpreter defect.

## Patch Plan
Do not edit files in this pass unless new evidence directly implicates CPython. The embedded strace shows one-second blocking `poll()` calls, not a tight CPython busy loop, and the process state is sleeping in `poll_schedule_timeout`.

Check the application path first: the evidence entrypoint is `supervisord`, so any source fix would need evidence from Supervisor’s loop before changing CPython runtime code. The raw artifact paths referenced by `evidence.json` were unavailable in this workspace, so the current basis is limited to embedded excerpts.

If later evidence points into CPython, follow CPython conventions found in `README.rst` and nearby code: Argument Clinic-generated wrappers in `Modules/posixmodule.c`, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()` in `Modules/selectmodule.c`. No relevant CPython helper was found that should change for the current `supervisord` loop evidence.

No prior Fixer patch for this finding was found via workspace search. Since no source patch is currently justified, there is no control-flow change to make; if new evidence does require C changes, keep the existing bounded retry-loop style rather than adding avoidable `goto`.

## Risks
A CPython patch from this evidence would likely mask or misattribute a Supervisor configuration/runtime behavior. The profiler summary says “busy-poll,” but the visible syscall evidence shows timed blocking, so claiming a reproduced interpreter bug would be misleading.

The gdb top frame around `pthread_attr_destroy()` is not enough to identify a CPython defect because symbols are incomplete and the shown syscalls are ordinary application behavior.

## Validation
Before reporting any source patch, try the project-level build entrypoint from the workspace root:

```sh
./configure && make
```

If that fails because dependencies or generated files are missing, record the exact failure and then use the narrowest relevant CPython check.

For the current no-patch diagnosis, use one bounded independent check without claiming reproduction: run a short Python snippet that performs `os.wait4(-1, os.WNOHANG)` with no children and `select.poll().poll(1000)` under `strace -e wait4,poll` to confirm those syscalls represent a sleeping one-second cadence, not a reproduced CPython runaway loop.

## Patch Pass

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The collected signal points at a Supervisor event loop running under Python, not at a CPython wait or poll bug. CPython’s local wait and poll wrappers already use the project’s normal syscall pattern: Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, signal checks with `PyErr_CheckSignals()`, and existing timeout handling in `select.poll()`.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected perf, strace, and `/proc` evidence for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The visible signal is repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` returning after about one second, with `/proc` showing the process sleeping in `poll_schedule_timeout`.

The cautious root-cause inference is that Supervisor is periodically checking for child processes and then blocking in its event loop. That is not a tight CPython busy loop: the embedded strace shows timed blocking, and the raw artifact paths named by the bundle were not readable from this workspace for stronger attribution.

I followed the saved plan in `plan-output.txt` and did not change course. I inspected CPython contribution/build guidance in `README.rst` and `Doc/README.rst`, then checked nearby wait/poll code in `Modules/posixmodule.c` and `Modules/selectmodule.c`. No relevant CPython helper was missing or misused, and no prior Fixer patch for this finding was present. No source diff was left because an inferred CPython patch would not be pull-request-ready.

The expected effect is no change to CPython behavior. A useful upstream report should instead include the Supervisor command line, the timed `wait4`/`poll` excerpts, the sleeping `/proc` state, and the note that the visible CPython syscall wrappers behave normally.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build completed with three optional modules not built (`_dbm`, `_gdbm`, `_tkinter`) due to missing optional dependencies, but this did not fail the build.

Attempted bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted`.

Ran the same bounded smoke command without `strace`:

```sh
./python - <<'PY'
import os
import select
import time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.000`, confirming the observed wait/poll pattern can represent a normal one-second sleep rather than a reproduced CPython runaway.

## Review Pass 1 (local metadata check)

RESULT: fix-needed

## Findings
1. Patch metadata drift: the workspace currently changes `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`, but `## Git Add Paths` lists `None`. Update `## Git Add Paths` to match the real shipped file set exactly, and make sure `## Issue Connection` explains every functional file that remains in the patch.
2. Missing from `## Git Add Paths`: `Lib/__pycache__/__future__.cpython-313.pyc`, `Lib/__pycache__/_collections_abc.cpython-313.pyc`, `Lib/__pycache__/_colorize.cpython-313.pyc`, `Lib/__pycache__/_compat_pickle.cpython-313.pyc`, `Lib/__pycache__/_compression.cpython-313.pyc`, `Lib/__pycache__/_opcode_metadata.cpython-313.pyc`, `Lib/__pycache__/_sitebuiltins.cpython-313.pyc`, `Lib/__pycache__/_weakrefset.cpython-313.pyc`, `Lib/__pycache__/abc.cpython-313.pyc`, `Lib/__pycache__/argparse.cpython-313.pyc`, `Lib/__pycache__/ast.cpython-313.pyc`, `Lib/__pycache__/base64.cpython-313.pyc`, `Lib/__pycache__/bz2.cpython-313.pyc`, `Lib/__pycache__/codecs.cpython-313.pyc`, `Lib/__pycache__/contextlib.cpython-313.pyc`, `Lib/__pycache__/contextvars.cpython-313.pyc`, `Lib/__pycache__/copy.cpython-313.pyc`, `Lib/__pycache__/copyreg.cpython-313.pyc`, `Lib/__pycache__/datetime.cpython-313.pyc`, `Lib/__pycache__/dis.cpython-313.pyc`, `Lib/__pycache__/enum.cpython-313.pyc`, `Lib/__pycache__/fnmatch.cpython-313.pyc`, `Lib/__pycache__/functools.cpython-313.pyc`, `Lib/__pycache__/genericpath.cpython-313.pyc`, `Lib/__pycache__/gettext.cpython-313.pyc`, `Lib/__pycache__/glob.cpython-313.pyc`, `Lib/__pycache__/heapq.cpython-313.pyc`, `Lib/__pycache__/inspect.cpython-313.pyc`, `Lib/__pycache__/io.cpython-313.pyc`, `Lib/__pycache__/keyword.cpython-313.pyc`, `Lib/__pycache__/linecache.cpython-313.pyc`, `Lib/__pycache__/locale.cpython-313.pyc`, `Lib/__pycache__/lzma.cpython-313.pyc`, `Lib/__pycache__/numbers.cpython-313.pyc`, `Lib/__pycache__/opcode.cpython-313.pyc`, `Lib/__pycache__/operator.cpython-313.pyc`, `Lib/__pycache__/os.cpython-313.pyc`, `Lib/__pycache__/posixpath.cpython-313.pyc`, `Lib/__pycache__/reprlib.cpython-313.pyc`, `Lib/__pycache__/selectors.cpython-313.pyc`, `Lib/__pycache__/shutil.cpython-313.pyc`, `Lib/__pycache__/signal.cpython-313.pyc`, `Lib/__pycache__/site.cpython-313.pyc`, `Lib/__pycache__/socket.cpython-313.pyc`, `Lib/__pycache__/ssl.cpython-313.pyc`, `Lib/__pycache__/stat.cpython-313.pyc`, `Lib/__pycache__/string.cpython-313.pyc`, `Lib/__pycache__/struct.cpython-313.pyc`, `Lib/__pycache__/subprocess.cpython-313.pyc`, `Lib/__pycache__/textwrap.cpython-313.pyc`, `Lib/__pycache__/threading.cpython-313.pyc`, `Lib/__pycache__/token.cpython-313.pyc`, `Lib/__pycache__/tokenize.cpython-313.pyc`, `Lib/__pycache__/traceback.cpython-313.pyc`, `Lib/__pycache__/types.cpython-313.pyc`, `Lib/__pycache__/typing.cpython-313.pyc`, `Lib/__pycache__/warnings.cpython-313.pyc`, `Lib/__pycache__/weakref.cpython-313.pyc`, `Lib/asyncio/__pycache__/__init__.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/base_tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/constants.cpython-313.pyc`, `Lib/asyncio/__pycache__/coroutines.cpython-313.pyc`, `Lib/asyncio/__pycache__/events.cpython-313.pyc`, `Lib/asyncio/__pycache__/exceptions.cpython-313.pyc`, `Lib/asyncio/__pycache__/format_helpers.cpython-313.pyc`, `Lib/asyncio/__pycache__/futures.cpython-313.pyc`, `Lib/asyncio/__pycache__/locks.cpython-313.pyc`, `Lib/asyncio/__pycache__/log.cpython-313.pyc`, `Lib/asyncio/__pycache__/mixins.cpython-313.pyc`, `Lib/asyncio/__pycache__/protocols.cpython-313.pyc`, `Lib/asyncio/__pycache__/queues.cpython-313.pyc`, `Lib/asyncio/__pycache__/runners.cpython-313.pyc`, `Lib/asyncio/__pycache__/selector_events.cpython-313.pyc`, `Lib/asyncio/__pycache__/sslproto.cpython-313.pyc`, `Lib/asyncio/__pycache__/staggered.cpython-313.pyc`, `Lib/asyncio/__pycache__/streams.cpython-313.pyc`, `Lib/asyncio/__pycache__/subprocess.cpython-313.pyc`, `Lib/asyncio/__pycache__/taskgroups.cpython-313.pyc`, `Lib/asyncio/__pycache__/tasks.cpython-313.pyc`, `Lib/asyncio/__pycache__/threads.cpython-313.pyc`, `Lib/asyncio/__pycache__/timeouts.cpython-313.pyc`, `Lib/asyncio/__pycache__/transports.cpython-313.pyc`, `Lib/asyncio/__pycache__/trsock.cpython-313.pyc`, `Lib/asyncio/__pycache__/unix_events.cpython-313.pyc`, `Lib/collections/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/__init__.cpython-313.pyc`, `Lib/concurrent/futures/__pycache__/_base.cpython-313.pyc`, `Lib/encodings/__pycache__/__init__.cpython-313.pyc`, `Lib/encodings/__pycache__/aliases.cpython-313.pyc`, `Lib/encodings/__pycache__/ascii.cpython-313.pyc`, `Lib/encodings/__pycache__/utf_8.cpython-313.pyc`, `Lib/importlib/__pycache__/__init__.cpython-313.pyc`, `Lib/importlib/__pycache__/_abc.cpython-313.pyc`, `Lib/logging/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/__init__.cpython-313.pyc`, `Lib/pathlib/__pycache__/_abc.cpython-313.pyc`, `Lib/pathlib/__pycache__/_local.cpython-313.pyc`, `Lib/re/__pycache__/__init__.cpython-313.pyc`, `Lib/re/__pycache__/_casefix.cpython-313.pyc`, `Lib/re/__pycache__/_compiler.cpython-313.pyc`, `Lib/re/__pycache__/_constants.cpython-313.pyc`, `Lib/re/__pycache__/_parser.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__init__.cpython-313.pyc`, `Lib/sysconfig/__pycache__/__main__.cpython-313.pyc`, `Lib/xml/__pycache__/__init__.cpython-313.pyc`, `Lib/xml/etree/__pycache__/ElementPath.cpython-313.pyc`, `Lib/xml/etree/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/__init__.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_common.cpython-313.pyc`, `Lib/zoneinfo/__pycache__/_tzpath.cpython-313.pyc`, `Makefile`, `Makefile.pre`, `Misc/python-config.sh`, `Misc/python-embed.pc`, `Misc/python.pc`, `Modules/Setup.bootstrap`, `Modules/Setup.local`, `Modules/Setup.stdlib`, `Modules/_abc.o`, `Modules/_asyncio.cpython-313-x86_64-linux-gnu.so`, `Modules/_asynciomodule.o`, `Modules/_bisect.cpython-313-x86_64-linux-gnu.so`, `Modules/_bisectmodule.o`, `Modules/_blake2.cpython-313-x86_64-linux-gnu.so`, `Modules/_blake2/blake2b_impl.o`, `Modules/_blake2/blake2module.o`, `Modules/_blake2/blake2s_impl.o`, `Modules/_bz2.cpython-313-x86_64-linux-gnu.so`, `Modules/_bz2module.o`, `Modules/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `Modules/_codecsmodule.o`, `Modules/_collectionsmodule.o`, `Modules/_contextvars.cpython-313-x86_64-linux-gnu.so`, `Modules/_contextvarsmodule.o`, `Modules/_csv.cpython-313-x86_64-linux-gnu.so`, `Modules/_csv.o`, `Modules/_ctypes.cpython-313-x86_64-linux-gnu.so`, `Modules/_ctypes/_ctypes.o`, `Modules/_ctypes/_ctypes_test.o`, `Modules/_ctypes/callbacks.o`, `Modules/_ctypes/callproc.o`, `Modules/_ctypes/cfield.o`, `Modules/_ctypes/stgdict.o`, `Modules/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `Modules/_curses_panel.o`, `Modules/_cursesmodule.o`, `Modules/_datetime.cpython-313-x86_64-linux-gnu.so`, `Modules/_datetimemodule.o`, `Modules/_decimal.cpython-313-x86_64-linux-gnu.so`, `Modules/_decimal/_decimal.o`, `Modules/_decimal/libmpdec/basearith.o`, `Modules/_decimal/libmpdec/constants.o`, `Modules/_decimal/libmpdec/context.o`, `Modules/_decimal/libmpdec/convolute.o`, `Modules/_decimal/libmpdec/crt.o`, `Modules/_decimal/libmpdec/difradix2.o`, `Modules/_decimal/libmpdec/fnt.o`, `Modules/_decimal/libmpdec/fourstep.o`, `Modules/_decimal/libmpdec/io.o`, `Modules/_decimal/libmpdec/libmpdec.a`, `Modules/_decimal/libmpdec/mpalloc.o`, `Modules/_decimal/libmpdec/mpdecimal.o`, `Modules/_decimal/libmpdec/numbertheory.o`, `Modules/_decimal/libmpdec/sixstep.o`, `Modules/_decimal/libmpdec/transpose.o`, `Modules/_elementtree.cpython-313-x86_64-linux-gnu.so`, `Modules/_elementtree.o`, `Modules/_functoolsmodule.o`, `Modules/_hacl/Hacl_Hash_MD5.o`, `Modules/_hacl/Hacl_Hash_SHA1.o`, `Modules/_hacl/Hacl_Hash_SHA2.o`, `Modules/_hacl/Hacl_Hash_SHA3.o`, `Modules/_hacl/libHacl_Hash_SHA2.a`, `Modules/_hashlib.cpython-313-x86_64-linux-gnu.so`, `Modules/_hashopenssl.o`, `Modules/_heapq.cpython-313-x86_64-linux-gnu.so`, `Modules/_heapqmodule.o`, `Modules/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpchannelsmodule.o`, `Modules/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpqueuesmodule.o`, `Modules/_interpreters.cpython-313-x86_64-linux-gnu.so`, `Modules/_interpretersmodule.o`, `Modules/_io/_iomodule.o`, `Modules/_io/bufferedio.o`, `Modules/_io/bytesio.o`, `Modules/_io/fileio.o`, `Modules/_io/iobase.o`, `Modules/_io/stringio.o`, `Modules/_io/textio.o`, `Modules/_json.cpython-313-x86_64-linux-gnu.so`, `Modules/_json.o`, `Modules/_localemodule.o`, `Modules/_lsprof.cpython-313-x86_64-linux-gnu.so`, `Modules/_lsprof.o`, `Modules/_lzma.cpython-313-x86_64-linux-gnu.so`, `Modules/_lzmamodule.o`, `Modules/_md5.cpython-313-x86_64-linux-gnu.so`, `Modules/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `Modules/_multiprocessing/multiprocessing.o`, `Modules/_multiprocessing/posixshmem.o`, `Modules/_multiprocessing/semaphore.o`, `Modules/_opcode.cpython-313-x86_64-linux-gnu.so`, `Modules/_opcode.o`, `Modules/_operator.o`, `Modules/_pickle.cpython-313-x86_64-linux-gnu.so`, `Modules/_pickle.o`, `Modules/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `Modules/_posixsubprocess.o`, `Modules/_queue.cpython-313-x86_64-linux-gnu.so`, `Modules/_queuemodule.o`, `Modules/_random.cpython-313-x86_64-linux-gnu.so`, `Modules/_randommodule.o`, `Modules/_sha1.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha2.cpython-313-x86_64-linux-gnu.so`, `Modules/_sha3.cpython-313-x86_64-linux-gnu.so`, `Modules/_socket.cpython-313-x86_64-linux-gnu.so`, `Modules/_sqlite/blob.o`, `Modules/_sqlite/connection.o`, `Modules/_sqlite/cursor.o`, `Modules/_sqlite/microprotocols.o`, `Modules/_sqlite/module.o`, `Modules/_sqlite/prepare_protocol.o`, `Modules/_sqlite/row.o`, `Modules/_sqlite/statement.o`, `Modules/_sqlite/util.o`, `Modules/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `Modules/_sre/sre.o`, `Modules/_ssl.cpython-313-x86_64-linux-gnu.so`, `Modules/_ssl.o`, `Modules/_stat.o`, `Modules/_statistics.cpython-313-x86_64-linux-gnu.so`, `Modules/_statisticsmodule.o`, `Modules/_struct.cpython-313-x86_64-linux-gnu.so`, `Modules/_struct.o`, `Modules/_suggestions.o`, `Modules/_sysconfig.o`, `Modules/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `Modules/_testbuffer.o`, `Modules/_testcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testcapi/abstract.o`, `Modules/_testcapi/buffer.o`, `Modules/_testcapi/bytes.o`, `Modules/_testcapi/code.o`, `Modules/_testcapi/codec.o`, `Modules/_testcapi/complex.o`, `Modules/_testcapi/datetime.o`, `Modules/_testcapi/dict.o`, `Modules/_testcapi/docstring.o`, `Modules/_testcapi/exceptions.o`, `Modules/_testcapi/file.o`, `Modules/_testcapi/float.o`, `Modules/_testcapi/gc.o`, `Modules/_testcapi/getargs.o`, `Modules/_testcapi/hash.o`, `Modules/_testcapi/heaptype.o`, `Modules/_testcapi/immortal.o`, `Modules/_testcapi/list.o`, `Modules/_testcapi/long.o`, `Modules/_testcapi/mem.o`, `Modules/_testcapi/monitoring.o`, `Modules/_testcapi/numbers.o`, `Modules/_testcapi/object.o`, `Modules/_testcapi/pyatomic.o`, `Modules/_testcapi/run.o`, `Modules/_testcapi/set.o`, `Modules/_testcapi/structmember.o`, `Modules/_testcapi/time.o`, `Modules/_testcapi/tuple.o`, `Modules/_testcapi/unicode.o`, `Modules/_testcapi/vectorcall.o`, `Modules/_testcapi/watchers.o`, `Modules/_testcapimodule.o`, `Modules/_testclinic.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic.o`, `Modules/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `Modules/_testclinic_limited.o`, `Modules/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `Modules/_testexternalinspection.o`, `Modules/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `Modules/_testimportmultiple.o`, `Modules/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testinternalcapi.o`, `Modules/_testinternalcapi/pytime.o`, `Modules/_testinternalcapi/set.o`, `Modules/_testinternalcapi/test_critical_sections.o`, `Modules/_testinternalcapi/test_lock.o`, `Modules/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `Modules/_testlimitedcapi.o`, `Modules/_testlimitedcapi/abstract.o`, `Modules/_testlimitedcapi/bytearray.o`, `Modules/_testlimitedcapi/bytes.o`, `Modules/_testlimitedcapi/complex.o`, `Modules/_testlimitedcapi/dict.o`, `Modules/_testlimitedcapi/eval.o`, `Modules/_testlimitedcapi/file.o`, `Modules/_testlimitedcapi/float.o`, `Modules/_testlimitedcapi/heaptype_relative.o`, `Modules/_testlimitedcapi/import.o`, `Modules/_testlimitedcapi/list.o`, `Modules/_testlimitedcapi/long.o`, `Modules/_testlimitedcapi/object.o`, `Modules/_testlimitedcapi/pyos.o`, `Modules/_testlimitedcapi/set.o`, `Modules/_testlimitedcapi/sys.o`, `Modules/_testlimitedcapi/tuple.o`, `Modules/_testlimitedcapi/unicode.o`, `Modules/_testlimitedcapi/vectorcall_limited.o`, `Modules/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testmultiphase.o`, `Modules/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `Modules/_testsinglephase.o`, `Modules/_threadmodule.o`, `Modules/_tracemalloc.o`, `Modules/_typingmodule.o`, `Modules/_uuid.cpython-313-x86_64-linux-gnu.so`, `Modules/_uuidmodule.o`, `Modules/_weakref.o`, `Modules/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `Modules/_xxtestfuzz/_xxtestfuzz.o`, `Modules/_xxtestfuzz/fuzzer.o`, `Modules/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `Modules/_zoneinfo.o`, `Modules/array.cpython-313-x86_64-linux-gnu.so`, `Modules/arraymodule.o`, `Modules/atexitmodule.o`, `Modules/binascii.cpython-313-x86_64-linux-gnu.so`, `Modules/binascii.o`, `Modules/cjkcodecs/_codecs_cn.o`, `Modules/cjkcodecs/_codecs_hk.o`, `Modules/cjkcodecs/_codecs_iso2022.o`, `Modules/cjkcodecs/_codecs_jp.o`, `Modules/cjkcodecs/_codecs_kr.o`, `Modules/cjkcodecs/_codecs_tw.o`, `Modules/cjkcodecs/multibytecodec.o`, `Modules/cmath.cpython-313-x86_64-linux-gnu.so`, `Modules/cmathmodule.o`, `Modules/config.c`, `Modules/config.o`, `Modules/errnomodule.o`, `Modules/expat/libexpat.a`, `Modules/expat/xmlparse.o`, `Modules/expat/xmlrole.o`, `Modules/expat/xmltok.o`, `Modules/faulthandler.o`, `Modules/fcntl.cpython-313-x86_64-linux-gnu.so`, `Modules/fcntlmodule.o`, `Modules/gcmodule.o`, `Modules/getbuildinfo.o`, `Modules/getpath.o`, `Modules/getpath_noop.o`, `Modules/grp.cpython-313-x86_64-linux-gnu.so`, `Modules/grpmodule.o`, `Modules/itertoolsmodule.o`, `Modules/ld_so_aix`, `Modules/main.o`, `Modules/math.cpython-313-x86_64-linux-gnu.so`, `Modules/mathmodule.o`, `Modules/md5module.o`, `Modules/mmap.cpython-313-x86_64-linux-gnu.so`, `Modules/mmapmodule.o`, `Modules/posixmodule.o`, `Modules/pwdmodule.o`, `Modules/pyexpat.cpython-313-x86_64-linux-gnu.so`, `Modules/pyexpat.o`, `Modules/readline.cpython-313-x86_64-linux-gnu.so`, `Modules/readline.o`, `Modules/resource.cpython-313-x86_64-linux-gnu.so`, `Modules/resource.o`, `Modules/rotatingtree.o`, `Modules/select.cpython-313-x86_64-linux-gnu.so`, `Modules/selectmodule.o`, `Modules/sha1module.o`, `Modules/sha2module.o`, `Modules/sha3module.o`, `Modules/signalmodule.o`, `Modules/socketmodule.o`, `Modules/symtablemodule.o`, `Modules/syslog.cpython-313-x86_64-linux-gnu.so`, `Modules/syslogmodule.o`, `Modules/termios.cpython-313-x86_64-linux-gnu.so`, `Modules/termios.o`, `Modules/timemodule.o`, `Modules/unicodedata.cpython-313-x86_64-linux-gnu.so`, `Modules/unicodedata.o`, `Modules/xxlimited.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited.o`, `Modules/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `Modules/xxlimited_35.o`, `Modules/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `Modules/xxsubtype.o`, `Modules/zlib.cpython-313-x86_64-linux-gnu.so`, `Modules/zlibmodule.o`, `Objects/abstract.o`, `Objects/boolobject.o`, `Objects/bytearrayobject.o`, `Objects/bytes_methods.o`, `Objects/bytesobject.o`, `Objects/call.o`, `Objects/capsule.o`, `Objects/cellobject.o`, `Objects/classobject.o`, `Objects/codeobject.o`, `Objects/complexobject.o`, `Objects/descrobject.o`, `Objects/dictobject.o`, `Objects/enumobject.o`, `Objects/exceptions.o`, `Objects/fileobject.o`, `Objects/floatobject.o`, `Objects/frameobject.o`, `Objects/funcobject.o`, `Objects/genericaliasobject.o`, `Objects/genobject.o`, `Objects/iterobject.o`, `Objects/listobject.o`, `Objects/longobject.o`, `Objects/memoryobject.o`, `Objects/methodobject.o`, `Objects/moduleobject.o`, `Objects/namespaceobject.o`, `Objects/object.o`, `Objects/obmalloc.o`, `Objects/odictobject.o`, `Objects/picklebufobject.o`, `Objects/rangeobject.o`, `Objects/setobject.o`, `Objects/sliceobject.o`, `Objects/structseq.o`, `Objects/tupleobject.o`, `Objects/typeobject.o`, `Objects/typevarobject.o`, `Objects/unicodectype.o`, `Objects/unicodeobject.o`, `Objects/unionobject.o`, `Objects/weakrefobject.o`, `Parser/action_helpers.o`, `Parser/lexer/buffer.o`, `Parser/lexer/lexer.o`, `Parser/lexer/state.o`, `Parser/myreadline.o`, `Parser/parser.o`, `Parser/peg_api.o`, `Parser/pegen.o`, `Parser/pegen_errors.o`, `Parser/string_parser.o`, `Parser/token.o`, `Parser/tokenizer/file_tokenizer.o`, `Parser/tokenizer/helpers.o`, `Parser/tokenizer/readline_tokenizer.o`, `Parser/tokenizer/string_tokenizer.o`, `Parser/tokenizer/utf8_tokenizer.o`, `Programs/_bootstrap_python.o`, `Programs/_freeze_module`, `Programs/_freeze_module.o`, `Programs/_testembed`, `Programs/_testembed.o`, `Programs/python.o`, `Python/Python-ast.o`, `Python/Python-tokenize.o`, `Python/_warnings.o`, `Python/asdl.o`, `Python/asm_trampoline.o`, `Python/assemble.o`, `Python/ast.o`, `Python/ast_opt.o`, `Python/ast_unparse.o`, `Python/bltinmodule.o`, `Python/bootstrap_hash.o`, `Python/brc.o`, `Python/ceval.o`, `Python/ceval_gil.o`, `Python/codecs.o`, `Python/compile.o`, `Python/context.o`, `Python/critical_section.o`, `Python/crossinterp.o`, `Python/dtoa.o`, `Python/dynamic_annotations.o`, `Python/dynload_shlib.o`, `Python/errors.o`, `Python/fileutils.o`, `Python/flowgraph.o`, `Python/formatter_unicode.o`, `Python/frame.o`, `Python/frozen.o`, `Python/frozen_modules/__hello__.h`, `Python/frozen_modules/__phello__.h`, `Python/frozen_modules/__phello__.ham.eggs.h`, `Python/frozen_modules/__phello__.ham.h`, `Python/frozen_modules/__phello__.spam.h`, `Python/frozen_modules/_collections_abc.h`, `Python/frozen_modules/_sitebuiltins.h`, `Python/frozen_modules/abc.h`, `Python/frozen_modules/codecs.h`, `Python/frozen_modules/frozen_only.h`, `Python/frozen_modules/genericpath.h`, `Python/frozen_modules/getpath.h`, `Python/frozen_modules/importlib._bootstrap.h`, `Python/frozen_modules/importlib._bootstrap_external.h`, `Python/frozen_modules/importlib.machinery.h`, `Python/frozen_modules/importlib.util.h`, `Python/frozen_modules/io.h`, `Python/frozen_modules/ntpath.h`, `Python/frozen_modules/os.h`, `Python/frozen_modules/posixpath.h`, `Python/frozen_modules/runpy.h`, `Python/frozen_modules/site.h`, `Python/frozen_modules/stat.h`, `Python/frozen_modules/zipimport.h`, `Python/frozenmain.o`, `Python/future.o`, `Python/gc.o`, `Python/gc_free_threading.o`, `Python/gc_gil.o`, `Python/getargs.o`, `Python/getcompiler.o`, `Python/getcopyright.o`, `Python/getopt.o`, `Python/getplatform.o`, `Python/getversion.o`, `Python/hamt.o`, `Python/hashtable.o`, `Python/import.o`, `Python/importdl.o`, `Python/initconfig.o`, `Python/instruction_sequence.o`, `Python/instrumentation.o`, `Python/interpconfig.o`, `Python/intrinsics.o`, `Python/jit.o`, `Python/legacy_tracing.o`, `Python/lock.o`, `Python/marshal.o`, `Python/modsupport.o`, `Python/mysnprintf.o`, `Python/mystrtoul.o`, `Python/object_stack.o`, `Python/optimizer.o`, `Python/optimizer_analysis.o`, `Python/optimizer_symbols.o`, `Python/parking_lot.o`, `Python/pathconfig.o`, `Python/perf_jit_trampoline.o`, `Python/perf_trampoline.o`, `Python/preconfig.o`, `Python/pyarena.o`, `Python/pyctype.o`, `Python/pyfpe.o`, `Python/pyhash.o`, `Python/pylifecycle.o`, `Python/pymath.o`, `Python/pystate.o`, `Python/pystrcmp.o`, `Python/pystrhex.o`, `Python/pystrtod.o`, `Python/pythonrun.o`, `Python/pytime.o`, `Python/qsbr.o`, `Python/specialize.o`, `Python/structmember.o`, `Python/suggestions.o`, `Python/symtable.o`, `Python/sysmodule.o`, `Python/thread.o`, `Python/traceback.o`, `Python/tracemalloc.o`, `_bootstrap_python`, `build/lib.linux-x86_64-3.13/__pycache__/_sysconfigdata__linux_x86_64-linux-gnu.cpython-313.pyc`, `build/lib.linux-x86_64-3.13/_asyncio.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bisect.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_blake2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_bz2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_cn.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_hk.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_jp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_kr.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_codecs_tw.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_contextvars.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_csv.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ctypes_test.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_curses_panel.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_datetime.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_decimal.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_elementtree.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_hashlib.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_heapq.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpchannels.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpqueues.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_interpreters.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_json.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lsprof.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_lzma.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_md5.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multibytecodec.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_multiprocessing.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_opcode.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_pickle.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixshmem.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_posixsubprocess.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_queue.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_random.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha1.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha2.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sha3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_socket.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sqlite3.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_ssl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_statistics.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_struct.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_sysconfigdata__linux_x86_64-linux-gnu.py`, `build/lib.linux-x86_64-3.13/_testbuffer.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testclinic_limited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testexternalinspection.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testimportmultiple.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testinternalcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testlimitedcapi.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testmultiphase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_testsinglephase.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_uuid.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_xxtestfuzz.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/_zoneinfo.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/array.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/binascii.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/cmath.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/fcntl.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/grp.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/math.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/mmap.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/pyexpat.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/readline.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/resource.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/select.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/syslog.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/termios.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/unicodedata.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxlimited_35.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/xxsubtype.cpython-313-x86_64-linux-gnu.so`, `build/lib.linux-x86_64-3.13/zlib.cpython-313-x86_64-linux-gnu.so`, `build/scripts-3.13/idle3.13`, `build/scripts-3.13/pydoc3.13`, `config.log`, `config.status`, `libpython3.13.a`, `platform`, `pybuilddir.txt`, `pyconfig.h`, `python`, `python-config`, `python-config.py`, `python-gdb.py`.
2. Listed in `## Git Add Paths` but not actually changed: `None`.

## Refinement Pass 1

Subject: Diagnose supervisord poll loop outside CPython

## Commit Message
No source change is proposed. The review finding was patch metadata drift from generated build artifacts, not a runtime bug in changed code. I removed the validation-generated files and kept the diagnosis: the collected signal points at a Supervisor event loop running under Python, not at a CPython wait or poll defect.

## Evidence Confidence
inferred

## Issue Connection
Fixer collected perf, strace, and `/proc` evidence for `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The visible signal is repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` returning after about one second, while `/proc` shows the process sleeping in `poll_schedule_timeout`.

The cautious inference is that Supervisor is periodically checking for child processes and then blocking in its event loop. That evidence does not identify a CPython code-level bug: the visible `wait4` and `poll` behavior is consistent with normal timed blocking, and the raw artifact paths named in the evidence bundle were not readable from this workspace for stronger attribution.

I re-read the plan and followed it. I also re-checked CPython contribution/build guidance in `README.rst` and `Doc/README.rst`, plus the nearby wait/poll code in `Modules/posixmodule.c` and `Modules/selectmodule.c`. The relevant local conventions remain Argument Clinic entrypoints, `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and `_PyDeadline_Init()` / `_PyDeadline_Get()`; no relevant local helper was missing or needed because no source patch is justified.

The specific refinement change was cleanup only: `make distclean` removed the generated build outputs and `__pycache__` files called out by review. The expected effect is no CPython behavior change and a clean no-patch proposal suitable for an upstream diagnosis report rather than an inferred source diff.

## Git Add Paths
None

## Validation
Ran the project-level entrypoint from the workspace root:

```sh
./configure && make
```

Result: passed. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` as not built because optional dependencies were missing, but the command exited successfully.

Checked whether `make check` is available after configure:

```sh
grep -q '^check:' Makefile
```

Result: no `check:` target was present, so `make check` was not run.

Attempted the bounded independent syscall reproduction:

```sh
strace -qq -e trace=wait4,poll ./python ...
```

Result: blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted`.

Ran the same bounded smoke command without `strace`:

```sh
./python - <<'PY'
import os, select, time
start = time.monotonic()
try:
    os.wait4(-1, os.WNOHANG)
except ChildProcessError as exc:
    print(type(exc).__name__, exc.errno)
p = select.poll()
print(p.poll(1000))
print(f"elapsed={time.monotonic() - start:.3f}")
PY
```

Result: `ChildProcessError 10`, `[]`, `elapsed=1.001`.

Cleanup and final state:

```sh
make distclean
git status --short
```

Result: generated validation artifacts were removed, and `git status --short` produced no output.

## Review Pass 2

RESULT: ok

The refined proposal is now internally consistent and gittable. The workspace has no current diff or untracked build artifacts, `## Git Add Paths` correctly says `None`, and the maintainer-facing text keeps evidence confidence at `inferred` instead of presenting the profiler/strace signal as a confirmed CPython bug.

The diagnosis matches the evidence: the visible `wait4(..., WNOHANG)` plus one-second `poll()` timeout cadence points at the `supervisord` application loop, while the inspected CPython `wait4`/`poll` wrappers already follow local conventions (`Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()`, `posix_error()`, and deadline helpers). Validation includes the project-level `./configure && make`, notes missing optional modules without overstating failure, records the blocked `strace` attempt, and confirms cleanup with a clean `git status --short`.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 08:29 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. Address the review findings with the smallest reasonable follow-up changes. If the review identifies a runtime or correctness bug in the changed code, you must update the code itself before answering; a metadata-only response is not sufficient. Keep the patch upstream-friendly, use local project helpers and compat APIs when available, avoid awkward control flow when a simpler structure will do, keep the final response gittable, make the maintainer-facing explanation plain and direct, keep `## Evidence Confidence` honest, add short comments for any non-obvious translation or remapping logic, run relevant project-level build/tests from the workspace root before narrower checks when possible, try a bounded independent reproduction command/test if the review or plan shows one is safe, and summarize which review findings you addressed.

In every au

[truncated 6139 bytes]

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `/usr/bin/python3.13`, but the captured command line is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The direct signal is an application event loop: repeated `wait4(..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`, with the process state sleeping in `poll_schedule_timeout`. That does not identify a CPython runtime tight loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch proposed: the evidence is insufficient to justify an upstream `python3.13` change.

## Patch Plan
Do not edit CPython in this pass. Treat this as a diagnosis/report plan unless extra evidence ties the CPU burn to a specific interpreter defect.

I checked CPython contribution/build guidance in `README.rst`, which points to the CPython Developer Guide and gives the normal Unix entrypoints `./configure`, `make`, and `make test`. I also scanned the nearby runtime code paths: `Python/thread_pthread.h`, `Modules/selectmodule.c`, and `Modules/posixmodule.c`. Relevant local conventions/helpers include `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper was found that would make the observed `supervisord` idle polling a CPython bug.

The `pthread_attr_destroy` frame is not enough to patch thread startup: the backtrace is mostly unresolved, the syscall trace is in `poll`/`wait4`, and the process is sleeping. A patch that reshapes pthread cleanup, adds an avoidable `goto`, or changes `select.poll()`/`os.wait4()` behavior would not address the observed evidence. No prior Fixer patch for this issue was found in the workspace.

## Risks
A CPython patch here would likely be speculative and upstream-hostile: it could alter stable `select`, `os.wait4`, or thread behavior without a reproducer showing CPython misbehavior.

The profiler signal may be from `supervisord`, the kernel scheduler, attribution across multiple Python processes, or missing debug symbols rather than a Python interpreter defect.

## Validation
If a source patch later becomes justified, first try the project-level command from the workspace root:

`./configure && make`

If that fails due to missing dependencies or generated files, record the exact failure and then run the narrowest relevant compile/test.

Bounded independent reproduction attempt before editing: run a small `/usr/bin/python3.13` script that performs the observed pattern, `os.wait4(-1, os.WNOHANG)` with no children plus `select.poll().poll(1000)`, under `timeout`/`strace` to confirm it blocks for about one second and does not reproduce runaway CPU. Only claim `reproduced` if that command actually shows the failure.

## Patch Pass

Subject: No source change for supervisord poll evidence

## Commit Message
No CPython patch is proposed. The collected evidence points to an application-level `supervisord` polling cadence, not to a demonstrated Python interpreter bug.

CPython’s `README.rst` points contributors to the Developer Guide and uses `./configure`, `make`, and `make test` as the Unix build/test flow. I inspected the relevant local helpers and conventions around `select.poll()`, `os.wait4()`, and pthread setup: `Py_BEGIN_ALLOW_THREADS`, `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper or subsystem pattern indicated a safe CPython change for this evidence.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is a `/usr/bin/python3.13` process running `supervisord`, with perf time attributed to kernel scheduler symbols and strace showing repeated `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` state is sleeping, and the kernel stack is in `poll_schedule_timeout`, meaning the sampled thread was blocked in `poll`, not spinning in a CPython runtime loop.

The cautious code-level inference is that this is an application event loop wakeup pattern or profiler attribution issue, not a proven defect in CPython’s `select.poll()`, `os.wait4()`, or pthread cleanup paths. The unresolved `pthread_attr_destroy` frame is not enough to justify changing thread startup or cleanup code.

I made no source change. This follows the saved plan in `plan-output.txt`; I did not change course. The expected effect is that no speculative upstream patch is produced until stronger observed or reproduced evidence ties the reported CPU behavior to a concrete CPython bug.

## Git Add Paths
None

## Validation
Ran the project-level workspace-root entrypoint:

`./configure && make`

Result: passed. Configure warned that system `libmpdec` was unavailable and fell back to bundled `libmpdec`; build completed with 112 modules checked, 3 optional modules missing (`_dbm`, `_gdbm`, `_tkinter`), and 0 failed imports.

Attempted bounded independent syscall reproduction:

`timeout 6s strace -qq -tt -e trace=wait4,poll /usr/bin/python3.13 -c '...'`

Result: blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran bounded non-strace smoke check of the same pattern:

`/usr/bin/time -f 'real=%e user=%U sys=%S' /usr/bin/python3.13 -c '...'`

Result: `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`. This did not reproduce runaway CPU; it showed the expected one-second blocking poll cadence. Cleaned generated build artifacts with `make distclean`; final worktree is clean.

## Review Pass 1

RESULT: fix-needed

## Findings
- `## Validation` abbreviates both independent reproduction commands as `-c '...'`, so the report is not reproducible as written. Even for a no-patch diagnosis, the validation section should include the exact Python snippet or command that was run, especially because the conclusion depends on the smoke check showing `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`.

- The worktree is clean and there is no source diff, which is appropriate for the `inferred` confidence level and the evidence. I found no code-level regression to review.

## Refinement Pass 1

Subject: No source change for supervisord poll evidence

## Commit Message
No CPython patch is proposed. The collected evidence points to an application-level `supervisord` polling cadence, not to a demonstrated Python interpreter bug. This refinement addresses the review finding by spelling out the exact validation commands instead of using ellipses.

CPython’s `README.rst` points contributors to the Developer Guide and uses `./configure`, `make`, and `make test` as the Unix build/test flow. I inspected the relevant local helpers and conventions around `select.poll()`, `os.wait4()`, and pthread setup: `Py_BEGIN_ALLOW_THREADS`, `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper or subsystem pattern indicated a safe CPython change for this evidence.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is a `/usr/bin/python3.13` process running `/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, with perf time attributed to kernel scheduler symbols and strace showing repeated `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` state is sleeping, and the kernel stack is in `poll_schedule_timeout`, meaning the sampled thread was blocked in `poll`, not spinning in a CPython runtime loop.

The cautious code-level inference is that this is an application event loop wakeup pattern or profiler attribution issue, not a proven defect in CPython’s `select.poll()`, `os.wait4()`, or pthread cleanup paths. The unresolved `pthread_attr_destroy` frame is not enough to justify changing thread startup or cleanup code.

I made no source change. This follows the saved plan in `plan-output.txt`; I did not change course. The expected effect is that no speculative upstream patch is produced until stronger observed or reproduced evidence ties the reported CPU behavior to a concrete CPython bug.

## Git Add Paths
None

## Validation
Ran the project-level workspace-root entrypoint:

```bash
./configure && make
```

Result: passed. Configure warned that system `libmpdec` was unavailable and fell back to bundled `libmpdec`; build completed with 112 modules checked, 3 optional modules missing (`_dbm`, `_gdbm`, `_tkinter`), and 0 failed imports.

Attempted bounded independent syscall reproduction:

```bash
timeout 6s strace -qq -tt -e trace=wait4,poll /usr/bin/python3.13 -c 'import os, select, time
r, w = os.pipe()
p = select.poll(); p.register(r, select.POLLIN)
start = time.monotonic()
for _ in range(3):
    try:
        os.wait4(-1, os.WNOHANG)
    except ChildProcessError:
        pass
    p.poll(1000)
print(f"elapsed={time.monotonic()-start:.3f}")
os.close(r); os.close(w)'
```

Result: blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran bounded non-strace smoke check of the same pattern:

```bash
/usr/bin/time -f 'real=%e user=%U sys=%S' /usr/bin/python3.13 -c 'import os, select, time
r, w = os.pipe()
p = select.poll(); p.register(r, select.POLLIN)
start = time.monotonic()
for _ in range(3):
    try:
        os.wait4(-1, os.WNOHANG)
    except ChildProcessError:
        pass
    p.poll(1000)
print(f"elapsed={time.monotonic()-start:.3f}")
os.close(r); os.close(w)'
```

Result: `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`. This did not reproduce runaway CPU; it showed the expected one-second blocking poll cadence. Cleaned generated build artifacts with `make distclean`; final worktree is clean.

## Review Pass 2

RESULT: ok

No findings. The refined report keeps `inferred` confidence, leaves no source diff, explains why the profiler/strace evidence is insufficient for an upstream CPython patch, names the relevant local CPython helpers/conventions, reports the project-level `./configure && make`, and now includes exact reproduction/smoke commands instead of ellipses.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 08:29 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

## Refinement Pass 1

You are refining a fixer patch after an explicit code review.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Read the latest author response at `./patch-output.txt`. Read the review report at `./review-1-output.txt`. This is refinement round 1. The original pre-edit snapshot is available at `./source` if you need to compare the current patch against it. Re-read the planning pass at `./plan-output.txt` before editing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. Address the review findings with the smallest reasonable follow-up changes. If the review identifies a runtime or correctness bug in the changed code, you must update the code itself before answering; a metadata-only response is not sufficient. Keep the patch upstream-friendly, use local project helpers and compat APIs when available, avoid awkward control flow when a simpler structure will do, keep the final response gittable, make the maintainer-facing explanation plain and direct, keep `## Evidence Confidence` honest, add short comments for any non-obvious translation or remapping logic, run relevant project-level build/tests from the workspace root before narrower checks when possible, try a bounded independent reproduction command/test if the review or plan shows one is safe, and summarize which review findings you addressed.

In every au

[truncated 6139 bytes]

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `/usr/bin/python3.13`, but the captured command line is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The direct signal is an application event loop: repeated `wait4(..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`, with the process state sleeping in `poll_schedule_timeout`. That does not identify a CPython runtime tight loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch proposed: the evidence is insufficient to justify an upstream `python3.13` change.

## Patch Plan
Do not edit CPython in this pass. Treat this as a diagnosis/report plan unless extra evidence ties the CPU burn to a specific interpreter defect.

I checked CPython contribution/build guidance in `README.rst`, which points to the CPython Developer Guide and gives the normal Unix entrypoints `./configure`, `make`, and `make test`. I also scanned the nearby runtime code paths: `Python/thread_pthread.h`, `Modules/selectmodule.c`, and `Modules/posixmodule.c`. Relevant local conventions/helpers include `Py_BEGIN_ALLOW_THREADS` / `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper was found that would make the observed `supervisord` idle polling a CPython bug.

The `pthread_attr_destroy` frame is not enough to patch thread startup: the backtrace is mostly unresolved, the syscall trace is in `poll`/`wait4`, and the process is sleeping. A patch that reshapes pthread cleanup, adds an avoidable `goto`, or changes `select.poll()`/`os.wait4()` behavior would not address the observed evidence. No prior Fixer patch for this issue was found in the workspace.

## Risks
A CPython patch here would likely be speculative and upstream-hostile: it could alter stable `select`, `os.wait4`, or thread behavior without a reproducer showing CPython misbehavior.

The profiler signal may be from `supervisord`, the kernel scheduler, attribution across multiple Python processes, or missing debug symbols rather than a Python interpreter defect.

## Validation
If a source patch later becomes justified, first try the project-level command from the workspace root:

`./configure && make`

If that fails due to missing dependencies or generated files, record the exact failure and then run the narrowest relevant compile/test.

Bounded independent reproduction attempt before editing: run a small `/usr/bin/python3.13` script that performs the observed pattern, `os.wait4(-1, os.WNOHANG)` with no children plus `select.poll().poll(1000)`, under `timeout`/`strace` to confirm it blocks for about one second and does not reproduce runaway CPU. Only claim `reproduced` if that command actually shows the failure.

## Patch Pass

Subject: No source change for supervisord poll evidence

## Commit Message
No CPython patch is proposed. The collected evidence points to an application-level `supervisord` polling cadence, not to a demonstrated Python interpreter bug.

CPython’s `README.rst` points contributors to the Developer Guide and uses `./configure`, `make`, and `make test` as the Unix build/test flow. I inspected the relevant local helpers and conventions around `select.poll()`, `os.wait4()`, and pthread setup: `Py_BEGIN_ALLOW_THREADS`, `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper or subsystem pattern indicated a safe CPython change for this evidence.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is a `/usr/bin/python3.13` process running `supervisord`, with perf time attributed to kernel scheduler symbols and strace showing repeated `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` state is sleeping, and the kernel stack is in `poll_schedule_timeout`, meaning the sampled thread was blocked in `poll`, not spinning in a CPython runtime loop.

The cautious code-level inference is that this is an application event loop wakeup pattern or profiler attribution issue, not a proven defect in CPython’s `select.poll()`, `os.wait4()`, or pthread cleanup paths. The unresolved `pthread_attr_destroy` frame is not enough to justify changing thread startup or cleanup code.

I made no source change. This follows the saved plan in `plan-output.txt`; I did not change course. The expected effect is that no speculative upstream patch is produced until stronger observed or reproduced evidence ties the reported CPU behavior to a concrete CPython bug.

## Git Add Paths
None

## Validation
Ran the project-level workspace-root entrypoint:

`./configure && make`

Result: passed. Configure warned that system `libmpdec` was unavailable and fell back to bundled `libmpdec`; build completed with 112 modules checked, 3 optional modules missing (`_dbm`, `_gdbm`, `_tkinter`), and 0 failed imports.

Attempted bounded independent syscall reproduction:

`timeout 6s strace -qq -tt -e trace=wait4,poll /usr/bin/python3.13 -c '...'`

Result: blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran bounded non-strace smoke check of the same pattern:

`/usr/bin/time -f 'real=%e user=%U sys=%S' /usr/bin/python3.13 -c '...'`

Result: `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`. This did not reproduce runaway CPU; it showed the expected one-second blocking poll cadence. Cleaned generated build artifacts with `make distclean`; final worktree is clean.

## Review Pass 1

RESULT: fix-needed

## Findings
- `## Validation` abbreviates both independent reproduction commands as `-c '...'`, so the report is not reproducible as written. Even for a no-patch diagnosis, the validation section should include the exact Python snippet or command that was run, especially because the conclusion depends on the smoke check showing `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`.

- The worktree is clean and there is no source diff, which is appropriate for the `inferred` confidence level and the evidence. I found no code-level regression to review.

## Refinement Pass 1

Subject: No source change for supervisord poll evidence

## Commit Message
No CPython patch is proposed. The collected evidence points to an application-level `supervisord` polling cadence, not to a demonstrated Python interpreter bug. This refinement addresses the review finding by spelling out the exact validation commands instead of using ellipses.

CPython’s `README.rst` points contributors to the Developer Guide and uses `./configure`, `make`, and `make test` as the Unix build/test flow. I inspected the relevant local helpers and conventions around `select.poll()`, `os.wait4()`, and pthread setup: `Py_BEGIN_ALLOW_THREADS`, `Py_END_ALLOW_THREADS`, `_PyDeadline_*`, `_PyTime_AsMilliseconds`, `posix_error()`, `wait_helper()`, and `PyMem_RawMalloc` / `PyMem_RawFree`. No relevant local helper or subsystem pattern indicated a safe CPython change for this evidence.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is a `/usr/bin/python3.13` process running `/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`, with perf time attributed to kernel scheduler symbols and strace showing repeated `wait4(-1, ..., WNOHANG) = ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` state is sleeping, and the kernel stack is in `poll_schedule_timeout`, meaning the sampled thread was blocked in `poll`, not spinning in a CPython runtime loop.

The cautious code-level inference is that this is an application event loop wakeup pattern or profiler attribution issue, not a proven defect in CPython’s `select.poll()`, `os.wait4()`, or pthread cleanup paths. The unresolved `pthread_attr_destroy` frame is not enough to justify changing thread startup or cleanup code.

I made no source change. This follows the saved plan in `plan-output.txt`; I did not change course. The expected effect is that no speculative upstream patch is produced until stronger observed or reproduced evidence ties the reported CPU behavior to a concrete CPython bug.

## Git Add Paths
None

## Validation
Ran the project-level workspace-root entrypoint:

```bash
./configure && make
```

Result: passed. Configure warned that system `libmpdec` was unavailable and fell back to bundled `libmpdec`; build completed with 112 modules checked, 3 optional modules missing (`_dbm`, `_gdbm`, `_tkinter`), and 0 failed imports.

Attempted bounded independent syscall reproduction:

```bash
timeout 6s strace -qq -tt -e trace=wait4,poll /usr/bin/python3.13 -c 'import os, select, time
r, w = os.pipe()
p = select.poll(); p.register(r, select.POLLIN)
start = time.monotonic()
for _ in range(3):
    try:
        os.wait4(-1, os.WNOHANG)
    except ChildProcessError:
        pass
    p.poll(1000)
print(f"elapsed={time.monotonic()-start:.3f}")
os.close(r); os.close(w)'
```

Result: blocked by sandbox ptrace permissions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.

Ran bounded non-strace smoke check of the same pattern:

```bash
/usr/bin/time -f 'real=%e user=%U sys=%S' /usr/bin/python3.13 -c 'import os, select, time
r, w = os.pipe()
p = select.poll(); p.register(r, select.POLLIN)
start = time.monotonic()
for _ in range(3):
    try:
        os.wait4(-1, os.WNOHANG)
    except ChildProcessError:
        pass
    p.poll(1000)
print(f"elapsed={time.monotonic()-start:.3f}")
os.close(r); os.close(w)'
```

Result: `elapsed=3.003`, `real=3.01 user=0.00 sys=0.00`. This did not reproduce runaway CPU; it showed the expected one-second blocking poll cadence. Cleaned generated build artifacts with `make distclean`; final worktree is clean.

## Review Pass 2

RESULT: ok

No findings. The refined report keeps `inferred` confidence, leaves no source diff, explains why the profiler/strace evidence is insufficient for an upstream CPython patch, names the relevant local CPython helpers/conventions, reports the project-level `./configure && make`, and now includes exact reproduction/smoke commands instead of ellipses.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 07:09 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer attributed high CPU to `python3.13`, but the evidence entrypoint is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The embedded `strace` shows a one-second application loop: `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. CPython source evidence does not currently show an interpreter/runtime busy loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose likely misattribution to an application-level Supervisor loop, and block a `python3.13` upstream patch until evidence ties the behavior to CPython runtime or stdlib code.

## Patch Plan
1. Do not edit the workspace in this pass.
2. Treat the command-line entrypoint as primary evidence, per instruction: investigate Supervisor’s process/event loop before CPython internals.
3. Note that the raw artifact path named in `evidence.json` was missing, so the plan relies on embedded excerpts. I found later same-fingerprint investigation directories, but their command lines differ, so they should not be used as proof for this finding.
4. If more evidence is collected before editing, require a bounded reproducer that shows CPython itself causing excessive wakeups or CPU, not merely expected `poll(timeout=1000)` plus `wait4(WNOHANG)` behavior.
5. If a real CPython defect is later proven, follow CPython conventions found in the tree: `README.rst` build/test flow, Developer Guide style, Argument Clinic-generated wrappers in `Modules/posixmodule.c`, `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `PyErr_CheckSignals()` on `EINTR`, and existing helpers such as `PyMem_*`. No relevant local helper was found for changing Supervisor’s loop because Supervisor is not in this source package.
6. No prior Fixer patch is present in the workspace to improve or replace. No new control flow is planned; avoid introducing awkward `goto` cleanup unless matching a nearby CPython C pattern and clearly necessary.

## Risks
A CPython patch based on this bundle would likely be speculative and upstream-unacceptable: the observed process is sleeping in `poll_schedule_timeout`, the top-level command is Supervisor, and `os.wait4()`/`os.waitpid()` wrappers already delegate directly to platform syscalls with established EINTR handling.

## Validation
If this proceeds to an actual CPython patch, first try the project-level entrypoint from the workspace root: `./configure && make`. If that fails because dependencies or generated files are missing, record the exact failure, then run the narrowest relevant compile/test.

For this no-patch diagnosis, the safe bounded reproduction to collect before editing would be syscall-level only, not a failure claim: run a small Python script under `strace -e poll,wait4` that performs `waitpid(-1, WNOHANG)` with no children and a one-second poll/select timeout, confirming that this cadence is ordinary application behavior unless CPU remains high.

## Patch Pass

Subject: No patch: diagnose supervisord poll loop attribution

## Commit Message
No source change. The collected evidence points to a Python-hosted `supervisord` process waking once per second, not to a CPython runtime or standard-library defect. CPython’s `wait4`, `waitpid`, and `poll` wrappers already use the local syscall patterns: `Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()` on `EINTR`, `_PyDeadline_*` timeout handling, and `PyMem_*` allocation helpers where needed.

## Evidence Confidence
inferred

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. `/proc` also showed the process sleeping in `poll_schedule_timeout`, and the scheduler excerpt had zero recent runnable/load average, which does not support a tight CPython busy loop.

The cautious inference is that Supervisor’s application event loop is periodically checking for child exits when no children are waitable, then sleeping for a one-second poll timeout. The hot kernel symbols are profiler-level evidence and do not identify a CPython source-level cause. I followed the saved plan and did not change course: no source diff is left because an inferred CPython patch would not be pull-request-ready.

I inspected CPython’s relevant code in `Modules/posixmodule.c` and `Modules/selectmodule.c`; the wrappers delegate directly to platform `wait4`, `waitpid`, and `poll` and follow existing CPython helper conventions. No relevant local helper was found that would make a safe CPython-side mitigation for Supervisor’s loop, and Supervisor itself is not in this repository.

The expected effect is no behavioral change in CPython. A useful upstream report would instead need stronger evidence tying CPU consumption to CPython itself, not just to an application loop running under the interpreter.

## Git Add Paths
None

## Validation
`./configure && make` from the workspace root completed successfully. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing due absent dependencies, but returned success.

Attempted syscall-level reproduction with:
```sh
command -v strace && timeout 4s strace -f -tt -e trace=poll,wait4 python3 - <<'PY'
...
PY
```
Blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 6): Operation not permitted`.

Ran a bounded Python-level smoke check for the collected cadence. It produced `ChildProcessError: [Errno 10] No child processes`, empty poll results, and about `1.001s` elapsed per iteration, matching the non-busy one-second wait pattern but not reproducing high CPU. Worktree status is clean after removing validation build outputs with `make distclean`.

## Review Pass 1

RESULT: ok

No source changes are present, which is the right outcome for this evidence level. The author’s diagnosis stays within the collected perf/strace/proc evidence, does not invent a CPython reproducer, classifies confidence as `inferred`, and explains why a CPython upstream patch would be speculative.

Validation is acceptable: the project-level `./configure && make` entrypoint was run successfully, the blocked `strace` reproduction attempt reports the exact ptrace failure, and the fallback Python smoke check is described as cadence-only rather than a high-CPU reproduction.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 07:09 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer attributed high CPU to `python3.13`, but the evidence entrypoint is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The embedded `strace` shows a one-second application loop: `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. CPython source evidence does not currently show an interpreter/runtime busy loop.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose likely misattribution to an application-level Supervisor loop, and block a `python3.13` upstream patch until evidence ties the behavior to CPython runtime or stdlib code.

## Patch Plan
1. Do not edit the workspace in this pass.
2. Treat the command-line entrypoint as primary evidence, per instruction: investigate Supervisor’s process/event loop before CPython internals.
3. Note that the raw artifact path named in `evidence.json` was missing, so the plan relies on embedded excerpts. I found later same-fingerprint investigation directories, but their command lines differ, so they should not be used as proof for this finding.
4. If more evidence is collected before editing, require a bounded reproducer that shows CPython itself causing excessive wakeups or CPU, not merely expected `poll(timeout=1000)` plus `wait4(WNOHANG)` behavior.
5. If a real CPython defect is later proven, follow CPython conventions found in the tree: `README.rst` build/test flow, Developer Guide style, Argument Clinic-generated wrappers in `Modules/posixmodule.c`, `Py_BEGIN_ALLOW_THREADS` around blocking syscalls, `PyErr_CheckSignals()` on `EINTR`, and existing helpers such as `PyMem_*`. No relevant local helper was found for changing Supervisor’s loop because Supervisor is not in this source package.
6. No prior Fixer patch is present in the workspace to improve or replace. No new control flow is planned; avoid introducing awkward `goto` cleanup unless matching a nearby CPython C pattern and clearly necessary.

## Risks
A CPython patch based on this bundle would likely be speculative and upstream-unacceptable: the observed process is sleeping in `poll_schedule_timeout`, the top-level command is Supervisor, and `os.wait4()`/`os.waitpid()` wrappers already delegate directly to platform syscalls with established EINTR handling.

## Validation
If this proceeds to an actual CPython patch, first try the project-level entrypoint from the workspace root: `./configure && make`. If that fails because dependencies or generated files are missing, record the exact failure, then run the narrowest relevant compile/test.

For this no-patch diagnosis, the safe bounded reproduction to collect before editing would be syscall-level only, not a failure claim: run a small Python script under `strace -e poll,wait4` that performs `waitpid(-1, WNOHANG)` with no children and a one-second poll/select timeout, confirming that this cadence is ordinary application behavior unless CPU remains high.

## Patch Pass

Subject: No patch: diagnose supervisord poll loop attribution

## Commit Message
No source change. The collected evidence points to a Python-hosted `supervisord` process waking once per second, not to a CPython runtime or standard-library defect. CPython’s `wait4`, `waitpid`, and `poll` wrappers already use the local syscall patterns: `Py_BEGIN_ALLOW_THREADS`, `PyErr_CheckSignals()` on `EINTR`, `_PyDeadline_*` timeout handling, and `PyMem_*` allocation helpers where needed.

## Evidence Confidence
inferred

## Issue Connection
Fixer observed `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf` with a repeated `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. `/proc` also showed the process sleeping in `poll_schedule_timeout`, and the scheduler excerpt had zero recent runnable/load average, which does not support a tight CPython busy loop.

The cautious inference is that Supervisor’s application event loop is periodically checking for child exits when no children are waitable, then sleeping for a one-second poll timeout. The hot kernel symbols are profiler-level evidence and do not identify a CPython source-level cause. I followed the saved plan and did not change course: no source diff is left because an inferred CPython patch would not be pull-request-ready.

I inspected CPython’s relevant code in `Modules/posixmodule.c` and `Modules/selectmodule.c`; the wrappers delegate directly to platform `wait4`, `waitpid`, and `poll` and follow existing CPython helper conventions. No relevant local helper was found that would make a safe CPython-side mitigation for Supervisor’s loop, and Supervisor itself is not in this repository.

The expected effect is no behavioral change in CPython. A useful upstream report would instead need stronger evidence tying CPU consumption to CPython itself, not just to an application loop running under the interpreter.

## Git Add Paths
None

## Validation
`./configure && make` from the workspace root completed successfully. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing due absent dependencies, but returned success.

Attempted syscall-level reproduction with:
```sh
command -v strace && timeout 4s strace -f -tt -e trace=poll,wait4 python3 - <<'PY'
...
PY
```
Blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 6): Operation not permitted`.

Ran a bounded Python-level smoke check for the collected cadence. It produced `ChildProcessError: [Errno 10] No child processes`, empty poll results, and about `1.001s` elapsed per iteration, matching the non-busy one-second wait pattern but not reproducing high CPU. Worktree status is clean after removing validation build outputs with `make distclean`.

## Review Pass 1

RESULT: ok

No source changes are present, which is the right outcome for this evidence level. The author’s diagnosis stays within the collected perf/strace/proc evidence, does not invent a CPython reproducer, classifies confidence as `inferred`, and explains why a CPython upstream patch would be speculative.

Validation is acceptable: the project-level `./configure && make` entrypoint was run successfully, the blocked `strace` reproduction attempt reports the exact ptrace failure, and the fallback Python smoke check is described as cadence-only rather than a high-CPU reproduction.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 05:58 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer attributed a runaway CPU signal to `python3.13`, but the entrypoint evidence is an application process: `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The collected syscall excerpt shows `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0` about once per second. That is supervisord’s event loop shape, not a demonstrated CPython runtime defect.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: diagnose this as an application-level supervisord polling pattern or a profiler attribution issue until stronger evidence ties the CPU use to CPython itself.

## Patch Plan
Do not edit files in this pass. The bundled evidence is indirect/profiler-derived and does not show a failing CPython API contract.

The relevant CPython code paths already follow local conventions: `Modules/posixmodule.c` implements `os.wait4()`/`os.waitpid()` with `Py_BEGIN_ALLOW_THREADS`, EINTR retry plus `PyErr_CheckSignals()`, `posix_error()`, and `wait_helper()`; `Modules/selectmodule.c` converts timeouts with `_PyTime_*`, releases the GIL around `poll()`, handles EINTR, and avoids concurrent `poll()` invocation. No relevant missing helper or compatibility wrapper was found.

Contribution/style docs checked: top-level `README.rst` points to the CPython Developer Guide and documents `./configure`, `make`, and `make test`; Debian `debian/README.source` says the package uses quilt patches. No top-level `CONTRIBUTING`, `HACKING`, or `README-hacking` file was present. No prior Fixer source patch was found to improve or replace beyond the baseline commit.

If stronger evidence later identifies a CPython bug, plan a small upstream-style change in the implicated runtime/stdlib function, following the local helper patterns above and using bounded control flow rather than avoidable `goto`.

## Risks
Changing CPython based on this evidence would risk altering correct `poll()`/`wait4()` semantics for all Python programs to address behavior that appears to come from supervisord’s own loop.

The evidence bundle’s raw artifact paths are unavailable in the workspace, so the diagnosis relies on the included excerpts. The reported high CPU conflicts with `State: S`, `wchan: poll_schedule_timeout`, load averages of zero, and one-second blocking `poll()` calls.

## Validation
For any eventual source patch, first try the workspace-root project entrypoint: `./configure && make`. If that fails because dependencies or generated files are missing, report the exact failure and then run the narrowest relevant compile/test.

For this no-patch diagnosis, use a bounded diagnostic reproduction only: run a short Python script under `strace -tt -e poll,wait4` that performs `os.wait4(-1, os.WNOHANG)` and `select.poll().poll(1000)` in a loop. This can compare syscall shape with the evidence, but it must not be claimed as reproducing the reported runaway CPU unless it actually shows the same CPU behavior.

## Patch Pass

Subject: Diagnose supervisord poll loop attribution

## Commit Message
No source change is included. The collected signal points at a `supervisord` process running under Python, not at a CPython wait or poll bug. CPython’s existing `os.wait4()` and `select.poll()` implementations already use the local runtime conventions for releasing the GIL, retrying interrupted syscalls, and reporting POSIX errors.

## Evidence Confidence
inferred

## Issue Connection
The collected signal was a high-CPU attribution to `/usr/bin/python3.13`, with perf samples in kernel scheduler code and strace showing a repeated sequence of `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` evidence names the process as `supervisord`, reports state `S (sleeping)`, and shows `wchan` in `poll_schedule_timeout`, which is consistent with a daemon waking once per second rather than a tight CPython busy loop.

The cautious code-level inference is that the evidence is an application event loop or profiler attribution issue. I inspected the relevant CPython helpers: `Modules/posixmodule.c` uses `Py_BEGIN_ALLOW_THREADS`, EINTR retry with `PyErr_CheckSignals()`, `posix_error()`, and `wait_helper()` for wait APIs; `Modules/selectmodule.c` uses `_PyTime_*` timeout handling, releases the GIL around `poll()`, and guards concurrent poll invocation. No relevant missing local helper was found.

No source change was made, following the saved plan. The expected effect is no behavioral change in CPython; this avoids landing a speculative upstream patch for evidence that does not demonstrate a CPython defect.

Style/contribution docs checked: no top-level `CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, lowercase `docs/`, or `dev-docs/` were present. `README.rst` points contributors to the CPython Developer Guide and documents `./configure`, `make`, and `make test`; Debian `debian/README.source` notes the package uses quilt patches. The raw artifact directory referenced by `evidence.json` was not present, so only the bundled excerpts were available.

## Git Add Paths
None

## Validation
`./configure && make` from the workspace root: passed. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` as missing, with 112 modules checked and 0 failed on import.

Independent reproduction attempt: `timeout 6s strace -tt -e trace=poll,wait4 ./python -c ...` was blocked by the container with `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`, so the strace signal could not be independently reproduced.

Fallback smoke check: `/usr/bin/time -f 'elapsed=%e user=%U sys=%S cpu=%P' ./python -c ...` running the same `wait4(-1, os.WNOHANG)` plus `poll(1000)` loop completed with `elapsed=3.01 user=0.00 sys=0.00 cpu=0%`, which did not reproduce a CPU spin.

Cleanup: `make distclean` restored the workspace to a clean git status after the validation build.

## Review Pass 1

RESULT: ok

No source changes are present in the workspace, and the author correctly treated the evidence as `inferred` rather than forcing a speculative CPython patch. The report connects the perf/strace/proc evidence to an application-level `supervisord` polling pattern, names the relevant CPython local conventions/helpers, and documents project-level validation with `./configure && make`.

Validation reporting is acceptable: the project build passed, the strace reproduction attempt was blocked by ptrace permissions, and the fallback timing smoke check did not reproduce CPU spin. The workspace is clean after `make distclean`.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 05:58 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer attributed a runaway CPU signal to `python3.13`, but the entrypoint evidence is an application process: `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The collected syscall excerpt shows `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0` about once per second. That is supervisord’s event loop shape, not a demonstrated CPython runtime defect.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch: diagnose this as an application-level supervisord polling pattern or a profiler attribution issue until stronger evidence ties the CPU use to CPython itself.

## Patch Plan
Do not edit files in this pass. The bundled evidence is indirect/profiler-derived and does not show a failing CPython API contract.

The relevant CPython code paths already follow local conventions: `Modules/posixmodule.c` implements `os.wait4()`/`os.waitpid()` with `Py_BEGIN_ALLOW_THREADS`, EINTR retry plus `PyErr_CheckSignals()`, `posix_error()`, and `wait_helper()`; `Modules/selectmodule.c` converts timeouts with `_PyTime_*`, releases the GIL around `poll()`, handles EINTR, and avoids concurrent `poll()` invocation. No relevant missing helper or compatibility wrapper was found.

Contribution/style docs checked: top-level `README.rst` points to the CPython Developer Guide and documents `./configure`, `make`, and `make test`; Debian `debian/README.source` says the package uses quilt patches. No top-level `CONTRIBUTING`, `HACKING`, or `README-hacking` file was present. No prior Fixer source patch was found to improve or replace beyond the baseline commit.

If stronger evidence later identifies a CPython bug, plan a small upstream-style change in the implicated runtime/stdlib function, following the local helper patterns above and using bounded control flow rather than avoidable `goto`.

## Risks
Changing CPython based on this evidence would risk altering correct `poll()`/`wait4()` semantics for all Python programs to address behavior that appears to come from supervisord’s own loop.

The evidence bundle’s raw artifact paths are unavailable in the workspace, so the diagnosis relies on the included excerpts. The reported high CPU conflicts with `State: S`, `wchan: poll_schedule_timeout`, load averages of zero, and one-second blocking `poll()` calls.

## Validation
For any eventual source patch, first try the workspace-root project entrypoint: `./configure && make`. If that fails because dependencies or generated files are missing, report the exact failure and then run the narrowest relevant compile/test.

For this no-patch diagnosis, use a bounded diagnostic reproduction only: run a short Python script under `strace -tt -e poll,wait4` that performs `os.wait4(-1, os.WNOHANG)` and `select.poll().poll(1000)` in a loop. This can compare syscall shape with the evidence, but it must not be claimed as reproducing the reported runaway CPU unless it actually shows the same CPU behavior.

## Patch Pass

Subject: Diagnose supervisord poll loop attribution

## Commit Message
No source change is included. The collected signal points at a `supervisord` process running under Python, not at a CPython wait or poll bug. CPython’s existing `os.wait4()` and `select.poll()` implementations already use the local runtime conventions for releasing the GIL, retrying interrupted syscalls, and reporting POSIX errors.

## Evidence Confidence
inferred

## Issue Connection
The collected signal was a high-CPU attribution to `/usr/bin/python3.13`, with perf samples in kernel scheduler code and strace showing a repeated sequence of `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000) = 0`. The `/proc` evidence names the process as `supervisord`, reports state `S (sleeping)`, and shows `wchan` in `poll_schedule_timeout`, which is consistent with a daemon waking once per second rather than a tight CPython busy loop.

The cautious code-level inference is that the evidence is an application event loop or profiler attribution issue. I inspected the relevant CPython helpers: `Modules/posixmodule.c` uses `Py_BEGIN_ALLOW_THREADS`, EINTR retry with `PyErr_CheckSignals()`, `posix_error()`, and `wait_helper()` for wait APIs; `Modules/selectmodule.c` uses `_PyTime_*` timeout handling, releases the GIL around `poll()`, and guards concurrent poll invocation. No relevant missing local helper was found.

No source change was made, following the saved plan. The expected effect is no behavioral change in CPython; this avoids landing a speculative upstream patch for evidence that does not demonstrate a CPython defect.

Style/contribution docs checked: no top-level `CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, lowercase `docs/`, or `dev-docs/` were present. `README.rst` points contributors to the CPython Developer Guide and documents `./configure`, `make`, and `make test`; Debian `debian/README.source` notes the package uses quilt patches. The raw artifact directory referenced by `evidence.json` was not present, so only the bundled excerpts were available.

## Git Add Paths
None

## Validation
`./configure && make` from the workspace root: passed. The build reported optional modules `_dbm`, `_gdbm`, and `_tkinter` as missing, with 112 modules checked and 0 failed on import.

Independent reproduction attempt: `timeout 6s strace -tt -e trace=poll,wait4 ./python -c ...` was blocked by the container with `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`, so the strace signal could not be independently reproduced.

Fallback smoke check: `/usr/bin/time -f 'elapsed=%e user=%U sys=%S cpu=%P' ./python -c ...` running the same `wait4(-1, os.WNOHANG)` plus `poll(1000)` loop completed with `elapsed=3.01 user=0.00 sys=0.00 cpu=0%`, which did not reproduce a CPU spin.

Cleanup: `make distclean` restored the workspace to a clean git status after the validation build.

## Review Pass 1

RESULT: ok

No source changes are present in the workspace, and the author correctly treated the evidence as `inferred` rather than forcing a speculative CPython patch. The report connects the perf/strace/proc evidence to an application-level `supervisord` polling pattern, names the relevant CPython local conventions/helpers, and documents project-level validation with `./configure && make`.

Validation reporting is acceptable: the project build passed, the strace reproduction attempt was blocked by ptrace permissions, and the fallback timing smoke check did not reproduce CPU spin. The workspace is clean after `make distclean`.

diagnosis-only report

report

python3.13 likely remains stuck in a busy-poll loop. A diagnosis report and patch proposal were created locally.

state: readycreated: 2026-05-11 04:45 UTCvalidation: ready
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

## Patch Pass

You are working on a bounded fixer proposal.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Produce the smallest reasonable patch for the target repository, keep the change upstreamable, prefer the clearest control flow available, and do not keep avoidable `goto` when a simpler structure would read better. Before introducing new file, process, allocation, locking, networking, or platform APIs, inspect nearby code and project contribution docs for existing helpers or compatibility wrappers and use those local patterns unless you can explain why they do not fit. Validate from a reproducible workspace-root entrypoint before falling back to focused leaf commands; if a build or test cannot run, report the exact command, the exact blocker, and any narrower check you ran instead. During validation, also try one bounded independent reproduction of the collected failure signal when it is safe and cheap, such as a failing test, smoke command, perf/strace comparison, or before/after runtime check. Only use `reproduced` if that command or test actually reproduced the failure; otherwise keep `observed` and report the reproduction blocker. The final explanation must connect the observed issue evidence to the actual code change, not just paraphrase the diff. Write like a maintainer is going to read the patch mail cold: explain the bug in plain language, define subsystem-specific jargon the first time you need it, and make the causal story obvious. Explicitly classify evidence confidence as `reproduced`, `observed`, or `inferred`: `reproduced` means you reproduced the failure locally; `observed` means Fixer has direct crash/log/trace evidence but you did not independently reproduce it; `inferred` means the source patch is not pull-request-ready, so do not leave a source diff unless you first gather stronger observed/reproduced evidence; otherwise return a no-patch diagnosis/report. For any source-changing `observed` patch, say explicitly in `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If you introduce non-obvious state translation, index remapping, or backend split logic, add a short source comment that explains the invariant being preserved.

Start by explaining the likely root cause from the collected perf, strace, and /proc evidence. If you cannot land a safe patch, leave a diagnosis that is strong enough for an upstream bug report.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround. 

Keep the change narrowly scoped and summarize validation clearly.

In every authoring pass, your final response must start with `Subject: <single-line git commit subject>` and then include these markdown sections exactly:

## Commit Message
A short upstream-friendly explanation of what changed and why. Write it in plain language that a maintainer can follow without local complaint context. If you use subsystem jargon, define it immediately.

## Evidence Confidence
Exactly one word: `reproduced`, `observed`, or `inferred`. Use `reproduced` only when you reproduced the failure locally with a command or test, and include that command/test in `## Validation`. Use `observed` when Fixer has direct crash/log/trace evidence but you did not independently reproduce it. If `## Git Add Paths` lists source files for an `observed` patch, `## Issue Connection` must explicitly say the failure was observed by Fixer and not independently reproduced. Use `inferred` for profiler/strace/indirect evidence; inferred responses may be no-patch diagnoses or reports, but inferred source patches are not pull-request-ready until stronger evidence is gathered.

## Issue Connection
Write this as maintainer-facing patch mail, not as local Fixer notes. Cover four things explicitly in readable sentences: the user-visible symptom or the exact collected signal, the code-level cause or the cautious inference from evidence, the specific change you made, and the expected effect. Do not invent a reproducer, command line, crash, or user-visible failure that is not present in the evidence bundle. If the evidence is direct-but-not-reproduced, say it was observed by Fixer and not independently reproduced. If the evidence is indirect and you did not gather stronger evidence, do not leave a source diff; write a no-patch diagnosis/report instead. Include an explicit effect sentence such as `The expected effect is ...`, `This should reduce ...`, or `This prevents ...` for source patches. If the logic is non-obvious in code, mention that you added a short explanatory comment.

## Git Add Paths
List the repo-relative paths that belong in the final patch, one per line. Use `None` only when you intentionally made no source changes. Include intentionally new files, and do not list generated build artifacts.

## Validation
List the checks you ran, or say clearly that you could not run them. Include the independent reproduction command/test and result when `## Evidence Confidence` is `reproduced`; if reproduction was attempted but blocked, name the exact blocker and keep confidence at `observed` or `inferred`.

Before editing, read the plan at `./plan-output.txt` and follow it unless the code proves part of it wrong. If you change course, say so explicitly in the final write-up instead of silently drifting from the plan.

## Review Pass 1

You are reviewing a freshly generated fixer patch.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `debian-source`. Review the first patch pass. The original pre-edit snapshot is available at `./source` for diffing.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `python3.13` upstream patch, not just a Debian-local workaround.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout. The latest author response is at `./patch-output.txt`. Inspect the current code and changed paths like a strict code reviewer. Focus on correctness, regressions, maintainability, awkward control flow such as avoidable `goto`, missing validation, weak or non-gittable commit message text, and explanations that fail to connect the observed issue evidence to the code change. Also review the maintainer experience: the patch mail should be easy to accept upstream, the user-visible bug should be explained in plain language, subsystem-specific jargon should be defined when first used, and any non-obvious state translation or index remapping in code should have a short explanatory comment. Reject patches that omit `## Evidence Confidence`, use anything other than `reproduced`, `observed`, or `inferred`, or sound more certain than that evidence level allows. Reject patches that claim `reproduced` unless `## Validation` names the concrete reproduction command or test and its result. Reject patches that invent a reproducer, command line, crash, or user-visible failure not present in the evidence bundle; indirect profiler or strace evidence may justify a cautious mitigation, but the author must say it is indirect instead of presenting it as a confirmed upstream bug. Reject patches that introduce generic libc/std APIs when nearby code or project docs provide a local compat/helper API for the same job, unless the author explicitly justifies the exception. Reject validation that only reports a leaf object/syntax build when a project-level configure/build/test entrypoint exists and was not attempted; if a full build cannot run, the author must show the exact failed command and blocker.

Do not apply code changes in this pass.

Return a short markdown review report. The first non-empty line must be exactly one of:

RESULT: ok
RESULT: fix-needed

If you choose `RESULT: fix-needed`, add a `## Findings` section with concrete, actionable items.

Response

## Plan Pass

## Problem
Fixer observed high CPU attributed to `/usr/bin/python3.13`, but the sampled command line is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The embedded strace shows `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timeouts, which looks like an application-level supervisor event loop waking once per second, not a confirmed CPython interpreter defect.

## Evidence Confidence
inferred

## Proposed Subject
No CPython source patch yet: diagnose as insufficient evidence for an upstream `python3.13` fix, and collect a bounded reproduction against the script/application entrypoint before editing CPython.

## Patch Plan
- Do not edit CPython from the current evidence alone. The evidence is profiler/strace-only, the raw investigation artifacts are unavailable, and the backtrace is not symbolized enough to identify a CPython fault.
- Treat `supervisord` as the first investigation target, per the command-line evidence. Only move into CPython runtime code if a reduced script shows Python 3.13 itself causing excessive wakeups or CPU.
- If extra evidence later identifies `subprocess`, follow local conventions in `Lib/subprocess.py`: use `_waitpid_lock`, `_try_wait()`, and `_handle_exitstatus()` rather than ad hoc `os.waitpid()` handling. Existing code already handles `ECHILD` in `_internal_poll()` and `_try_wait()`.
- If extra evidence identifies selector timeout handling, follow `Lib/selectors.py`’s existing `_PollLikeSelector.select()` rounding and `InterruptedError` conventions.
- No prior Fixer patch was present in the workspace (`git status` clean, no relevant Fixer references found), so there is nothing to improve or replace.
- Avoid awkward control flow such as `goto`; if a later C-level fix is justified, use CPython’s local helper APIs and a bounded, structured branch/cleanup pattern.

## Risks
- Patching CPython now would likely be speculative and not pull-request-ready.
- The observed one-second `poll()` timeout may be normal `supervisord` behavior or configuration-dependent.
- A CPython change in process waiting or selector behavior could regress long-standing subprocess semantics, especially `SIGCHLD` ignored / `ECHILD` handling.

## Validation
- First try the project-level entrypoint from the workspace root after any future patch: `./configure && make`, then relevant tests with `make test TESTOPTS="-v test_subprocess test_selectors"` if the build succeeds.
- Bounded independent reproduction attempt before editing: run a small Python 3.13 script that sets `SIGCHLD` to `SIG_IGN`, starts a short child via `subprocess.Popen`, polls it with a small sleep, and verify it exits instead of spinning. This mirrors existing `Lib/test/subprocessdata/sigchild_ignore.py`.
- If `./configure && make` fails because dependencies or generated files are missing, record the exact failure and fall back to the narrowest reproducible check, likely `./python -m test -v test_subprocess` after whatever partial build exists.

## Patch Pass

Subject: No patch: diagnose supervisord poll evidence

## Commit Message
No source change is proposed. The collected evidence points at a `supervisord` process running under Python, with periodic process-reaping and polling behavior, but does not identify a CPython bug strongly enough for an upstream patch.

## Evidence Confidence
inferred

## Issue Connection
The collected signal is a high-CPU investigation for `/usr/bin/python3.13`, but the command line is `/usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf`. The `/proc` evidence shows the sampled task named `supervisord` in sleeping state, with `wchan` in `poll_schedule_timeout`, and the strace excerpt repeats `wait4(-1, ..., WNOHANG) = -1 ECHILD` followed by `poll(..., 1000)` timing out after about one second.

That pattern is a cautious indication of an application event loop waking periodically to reap child processes and poll a file descriptor, not direct evidence of an interpreter-level busy loop. The perf hot symbols are kernel scheduler/lock paths, and the Python backtrace is mostly unsymbolized, so there is no clear CPython call site to patch.

I inspected the nearby CPython helpers that would matter for such a patch. `Lib/subprocess.py` already handles `ECHILD` through its existing `_waitpid_lock`, `_try_wait()`, and `_handle_exitstatus()` conventions, and `Lib/selectors.py` already centralizes poll timeout handling in `_PollLikeSelector.select()`. The existing subprocess regression script for ignored `SIGCHLD` also completed normally with the locally built interpreter. Based on that, I followed the saved plan and did not leave a speculative source diff.

The expected effect is that this proposal remains suitable as an upstream bug-report diagnosis rather than a premature CPython patch. Stronger evidence would need to come from a reduced `supervisord` or Python script that reproduces excessive wakeups or CPU in CPython itself.

## Git Add Paths
None

## Validation
- `./configure && make` from the workspace root: passed. Configure reported optional modules `_dbm`, `_gdbm`, and `_tkinter` missing, but the interpreter build completed.
- `./python Lib/test/subprocessdata/sigchild_ignore.py`: passed; it printed `albatross` twice and exited.
- Bounded independent reproduction attempt:
  `./python - <<'PY' ... SIGCHLD=SIG_IGN, subprocess.Popen(...), poll loop ... PY`
  Result: `returncode=0 polls=1 elapsed=0.010`, so it did not reproduce a runaway poll loop.
- Short `strace` comparison attempt:
  `strace -f -e trace=wait4,poll ./python - <<'PY' ... PY`
  Blocked by sandbox ptrace restrictions: `PTRACE_TRACEME: Operation not permitted` and `ptrace(PTRACE_SEIZE, 5): Operation not permitted`.
- `make distclean` was run after validation to remove generated build artifacts; final `git status --short` was clean.

## Review Pass 1

RESULT: ok

No source diff is present, and the `inferred` no-patch diagnosis is appropriate for the evidence level. The response does not overstate the profiler/strace evidence, identifies the `supervisord` command line and sleeping `poll` state, and avoids inventing a CPython reproducer.

Validation is acceptable: the project-level `./configure && make` entrypoint was attempted and passed, the focused `SIGCHLD`/`ECHILD` subprocess check was run, and the blocked `strace` attempt reports the exact ptrace permission failure. The workspace is clean.