python / python/mypy

Add test that prevents increasing import cycles in the mypy implementation

Offen
#7,407 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

priority-1-normal topic-developer topic-tests
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

It's easy to accidentally introduce new modules in import cycles, which can make the structure of the codebase worse and slow down incremental builds. Add a test that checks that this does not happen.

See #7397 for context. Here is one idea from that PR:

We could perhaps run another incremental build after self check in verbose mode and assert that the largest import cycle is below some size limit by parsing the verbose output. Alternatively, we could modify verbose mode to write more details about SCCs in incremental mode and make more specific assertions, such as requiring that the nodes, typeops and checker cycles are disjoint.

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, den Kontext in #7397 zu lesen und die Einstiegspunkte für inkrementelles Bauen, Selbstprüfung und den ausführlichen Modus nachzuverfolgen. Bestimme, welche der vorgeschlagenen Assertions praktikabel ist, und füge dann einen Regressionstest hinzu, der eine Zunahme der Größe des Importzyklus erkennt oder die relevanten SCC-Einschränkungen überprüft; fertig ist es, wenn der Test fehlschlägt, sobald sich die Zyklen verschlechtern, und bei der aktuellen Implementierung besteht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
build-system, compilers, testing-qa
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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