python / python/mypy

Support adding class variables to class through assignment

Offen
#8,723 5 Kommentare 19 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature priority-2-low
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Mypy supports adding items to self during test setUp, which is great. However in many cases it's useful to be able to add items to the class during setUpClass (or Django's setUpTestData).

import unittest

class Tests(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.foo = 42  # "Type[Tests]" has no attribute "foo"

    def test_foo(self) -> None:
        print(self.foo)  # "Tests" has no attribute "foo"

Adding a ClassVar allows for a workaround to this, however it would be nice if that wasn't needed.

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

Beginne damit nachzuverfolgen, wie mypy Zuweisungen an self in setUp und Deklarationen von Klassenvariablen behandelt, und untersuche dann Tests, die ClassVar und unittest-Setup-Hooks abdecken. Lege die erwarteten Diagnosen für cls.foo und self.foo in setUpClass oder setUpTestData fest, und füge fokussierte Regressionstests hinzu, die zeigen, dass die unterstützten Zuweisungen keine Attributfehler mehr erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

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