Graham Dumpleton : Importation... Note

Graham Dumpleton : Importations paresseuses utilisant wrapt

PEP 810 introduit une syntaxe explicite pour les importations de modules paresseuses en Python. Auparavant, les packages offraient des fonctionnalités similaires mais manquaient d'un support linguistique dédié. La nouvelle fonctionnalité de proxy d'objet paresseux de la bibliothèque wrapt peut implémenter facilement des importations paresseuses. L'objectif principal de wrapt est le "monkey patching", qui implique des proxies d'objets transparents. Ces proxies interceptent l'accès aux objets cibles, permettant des actions spécifiques. Un proxy d'objet paresseux prend une fonction qui crée l'objet cible lors du premier accès plutôt que l'objet lui-même. Cela permet l'importation paresseuse de modules, comme démontré avec un exemple utilisant wrapt.LazyObjectProxy et __import__. Contrairement à certaines méthodes qui modifient sys.modules à l'avance avec un faux module, cette approche évite les changements globaux. L'impact de l'exemple wrapt est limité à la portée où l'importation paresseuse est effectuée, s'alignant sur l'objectif de PEP 810 d'effets localisés. Cependant, cela nécessite une syntaxe différente de celle des instructions d'importation standard. PEP 810 vise à éviter les faux objets de module dans la portée, garantissant que la référence devient le module réel lors de la première utilisation. L'exemple wrapt maintient un objet proxy, avec de futures améliorations potentielles pour le remplacer par le module réel.