python / python/cpython

-m trace --count missing lines

Offen
#142,867 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stdlib type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:
def x() -> tuple[
        int,
]:
    return (1, 'fred')

x()

python 3.13 (good):

xju@xjutv:~/tmp$ python3 --version
Python 3.13.1
xju@xjutv:~/tmp$ rm -f xxx.cover
xju@xjutv:~/tmp$ python3 -m trace --count -m xxx.py
xju@xjutv:~/tmp$ cat xxx.cover
    2: def x() -> tuple[
    1:         int,
       ]:
    1:     return (1, 'fred')
       
    1: x()

python 3.14 (bad):

xju@xjutv:~/tmp$ python3 --version
Python 3.14.2
xju@xjutv:~/tmp$ rm -f xxx.cover
xju@xjutv:~/tmp$ python3 -m trace --count -m xxx.py
xju@xjutv:~/tmp$ cat xxx.cover
    1: def x() -> tuple[
>>>>>>         int,
       ]:
    1:     return (1, 'fred')
       
    1: x()

... trace._get_executable_linenos returns the same in both 3.13 and 3.14; seems that Trace.run does not see that the type hint is "executed"? Could equally have trace._get_executable_linenos not report the type hint... they just need to agree.

Above is about the simplest example I came up with, but similar disagreement with class attribute hints like:

class X:
  a: int

... a: int is reported as "not covered".

CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs
  • gh-143161

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduzieren Sie die Abweichung mit dem Python-Snippet und vergleichen Sie die Coverage-Ausgabe von 3.13 und 3.14. Untersuchen Sie trace.Trace.run und trace._get_executable_linenos, bei denen der Bericht feststellt, dass sie hinsichtlich ausgeführter Annotationen nicht übereinstimmen. Als erledigt gilt die Aufgabe, wenn beide Pfade übereinstimmen und Zeilen mit Type Hints, einschließlich Hints für Klassenattribute, konsistente Coverage-Ergebnisse erhalten.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.