Factor out logic to generate ModuleNotFoundError in importlib?
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 48/100
Piste de recherche
Commencez par localiser le point d'entrée _find_and_load_unlocked ainsi que la construction existante de _ERR_MSG et ModuleNotFoundError. Factorisez cette construction dans _get_module_not_found_error(name), remplacez la construction directe dans le chemin de spec manquante et vérifiez que l'erreur obtenue contient toujours le nom du module tout en restant adaptée au monkey patching.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Feature or enhancement
PEP 534 discusses improving error messages for standard library modules. We like to do this in Pyodide because some stdlib modules either are removed or are not included by default but can be installed. If someone tries to import these modules, we want to print some extra info about why the import is failing.
The following patch is a simple change that makes it easy to monkey patch _get_module_not_found_error to improve the ModuleNotFound errors:
+def _get_module_not_found_error(name):
+ return ModuleNotFoundError(_ERR_MSG.format(name), name=name)
+
def _find_and_load_unlocked(name, import_):
path = None
parent = name.rpartition('.')[0]
@@ -1001,7 +1004,7 @@ def _find_and_load_unlocked(name, import_):
raise ModuleNotFoundError(msg, name=name) from None
spec = _find_spec(name, path)
if spec is None:
- raise ModuleNotFoundError(_ERR_MSG.format(name), name=name)
+ raise _get_module_not_found_error(name)
else:
module = _load_unlocked(spec)
if parent:
In Pyodide since we are fairly tightly coupled to the Python version we would be okay with risking the possibility that this gets rearranged in the future.
Pitch
It would be nice to apply this patch. See the Pyodide PR: https://github.com/pyodide/pyodide/pull/3263
Previous discussion
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Merge moyen
- 1 j 9 h
- PR mergées (30 j)
- 558
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/cpython
-
docs pending
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
stdlib type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
stdlib type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
build type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
stdlib topic-email type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Toutes les issues de python/cpython
Issues similaires
-
fix: inaccuracy ⚠️
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
uabrc/uabrc.github.io#1255 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
ethereum-optimism/factory#64 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
duckdb/duckdb-python#627 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Add link for tutorial Ouvertedocumentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
Qiskit/qiskit-addon-sqd#376 ·