Run without module detection logic
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par le comportement de mypy concernant l’association des fichiers aux modules, décrit dans l’issue, et reproduisez les exemples de modules en double avec les commandes indiquées. Définissez le comportement de l’option pour les fichiers autonomes, les fichiers importés et plusieurs racines de packages ; le travail est considéré comme terminé lorsque le flag proposé évite les erreurs indésirables de modules en double sans perturber la résolution des imports nécessaires.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Feature
Allow mypy --no-module-detection (or similar flag) to run without mypy attempting to map files as modules. For example, linting standalone scripts should not require module detection magic.
Pitch
Mypy has (somewhat confusing?) file-to-module mapping logic explained in https://mypy.readthedocs.io/en/latest/running_mypy.html#mapping-file-paths-to-modules. The key take away is that mypy attempts to determine a module name for each imported file (in various ways). For example, a/b/c.py -> a.b.c.
However, the documentation doesn't give rationale for why this actually needs to be always done. If you merely want to check standalone files like mypy one.py then why does this require determining module name for the file?
(AFAIK, other linters like pylint don't have this kind of magic, perhaps because they don't follow imports like mypy does.)
If we have two files mypy one.py two.py and two imports one, then the detection logic is needed, so that module one is found (and it's fine).
However, if I have sub-directories with similarly named files, doing mypy one/file.py two/file.py throws:
two/file.py: error: Duplicate module named 'file' (also at 'one/file.py')
But these are two standalone files, in separate directories, not part of the same package. Why is the error there?
Similar trouble is faced when maintaining a monorepo with multiple packages:
package1/
setup.py
...
package2/
setup.py
...
Mypy will throw error about duplicate module name on setup.py files (and others).
Now, without arguing on how mypy should determine module name of the files is looks up (surely there's reasoning for that), I'm suggesting to add an option to completely skip this magic. In my case, I always pip install -e . the packages that I'm developing, so whatever imports the code (wherever), those imports are already resolvable. All the packages are already importable and whatever files reside out of the packages, are stand-alone scripts and never imported.
One downside is that something like this would no longer work:
package1/
src/
...
setup.py
tasks.py # imports util.py
util.py
For that I don't have suggestion :( Could it be solved by multiple entries in MYPYPATH or PYTHONPATH?
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/mypy
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug topic-configuration topic-error-reporting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Toutes les issues de python/mypy
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
bancolombia/sentinel#23 ·
-
test md OuverteCI
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100