python / python/cpython

test_lazy_import: add coverage for reload() and sys.modules deletion after reification

Ouverte
#149,013 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

3.15 tests topic-lazy-imports type-feature
Langage dominant
Python
Étoiles
77.2k
Forks
35.9k
Métriques de merge des PR
Métriques de PR en attente

Description

Bug report / test coverage gap

Lib/test/test_lazy_import/__init__.py has broad lazy import coverage, but it misses two practical state-transition scenarios after reification:

  1. importlib.reload() on a module that was first imported lazily and then reified.
  2. Deleting sys.modules[name] after reification and then importing again.

Why this matters

These are common import-state operations and can regress subtly when lazy import behavior changes.
Adding tests helps lock in expected semantics and prevents regressions in future import machinery refactors.

Proposed change

Add two tests in test_lazy_import:

  • test_reload_after_lazy_reification_keeps_single_module_object

    • Reify a lazily imported module.
    • Call importlib.reload().
    • Assert identity consistency between the binding and sys.modules[name].
  • test_reimport_after_deleting_sys_modules_entry_creates_new_module

    • Reify a lazily imported module.
    • Delete sys.modules[name].
    • Verify old binding still works.
    • Re-import module and assert a new module object is cached.

Affected files

  • Lib/test/test_lazy_import/__init__.py

Version

  • main (3.15 development branch)

Additional notes

This is test-only; no runtime behavior change is introduced.

Linked PRs
  • gh-149014

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans Lib/test/test_lazy_import/init.py et lisez la couverture existante des lazy-imports ainsi que les helpers associés. Exécutez d’abord les tests test_lazy_import, puis ajoutez une couverture pour reload() après la réification et pour la réimportation après la suppression de sys.modules[name]. Le travail est terminé lorsque le binding et le module mis en cache conservent le comportement d’identité indiqué, tandis que la réimportation après la suppression de l’entrée crée un nouveau module mis en cache.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
testing-qa
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.