Étant donné le code source d'un fichier Python, je souhaite détecter tous les objets importés. Par exemple, étant donné cette source:Détection des objets importés
import mymod
from mymod2 import obj1, obj2, obj3
from mymod3 import aobj
Je veux:
[('mymod2', 'obj1', 'obj2', 'obj3'), ('mymod3', 'aobj')]
Je l'ai déjà essayé regex:
r'from (?P<mod>[_\w\d]+) import (?:(?P<obj>[_\w\d]+)[,\s]?)+'
Mais je n'obtenir le premier objet importé:
[('mymod2', 'obj1'), ('mymod3', 'aobj')]
Cela semble une mauvaise idée de le faire avec des expressions régulières. Que se passe-t-il si la déclaration d'importation s'étend sur plusieurs lignes à l'aide de la continuation de la barre oblique inversée? Ou des parenthèses? Qu'en est-il des importations au niveau des fonctions? C'est trop complexe pour être traité par les regex. –
... vous avez raison! : D – rubik