compileall doesn't recompile when invalidation mode changes even if timestamps match
Offen
Dieses Issue hat noch niemand übernommen.
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
λ rm -rf __pycache__ 130
λ python -m compileall x.py --invalidation-mode timestamp
Compiling 'x.py'...
λ python -m compileall x.py --invalidation-mode timestamp
λ python -m compileall x.py --invalidation-mode checked-hash
λ python
>>> import importlib.util
>>> with open("__pycache__/x.cpython-311.pyc", "rb") as f:
... d = f.read()
...
>>> d[:4]
b'\xa7\r\r\n'
>>> d[4:8]
b'\x00\x00\x00\x00'
λ rm -rf __pycache__
λ python -m compileall x.py --invalidation-mode checked-hash
Compiling 'x.py'...
λ python
>>> with open("__pycache__/x.cpython-311.pyc", "rb") as f:
... d = f.read()
...
>>> d[:4]
b'\xa7\r\r\n'
>>> d[4:8]
b'\x03\x00\x00\x00'
CPython versions tested on:
3.11
Operating systems tested on:
No response
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere das Verhalten mit x.py unter Verwendung von python -m compileall und untersuche die generierte Datei in pycache. Beginne am Einstiegspunkt des compileall-Befehls und vergleiche wiederholte Läufe mit timestamp und checked-hash. Erledigt bedeutet, dass eine Änderung des Invalidation-Modus eine Neukompilierung verursacht oder andernfalls den pyc-Header aktualisiert, selbst wenn die timestamps übereinstimmen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- build-system, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100