AFAIU, эта информация не существует в ast
. Более формально, абстрактная грамматика для модуля в Python:
mod = Module(stmt* body)
| Interactive(stmt* body)
| Expression(expr body)
-- not really an actual node but useful in Jython's typesystem.
| Suite(stmt* body)
Итак, как вы можете видеть, Module
просто имеет тело, представляющее собой список узлов операторов. Там нет имени.
Обратите внимание, что вы передаете f.read()
посетителю. Это возвращает содержимое файла, фактически не зная или не заботясь о том, как назван этот файл - где вы можете взять имя модуля из него?
При выполнении кода Python вы можете использовать __name__
и __package__
из кода Python.