historical/toontown-classic.git/panda/direct/showbase/VerboseImport.py
2024-01-16 11:20:27 -06:00

35 lines
910 B
Python

"""
This module hooks into Python's import mechanism to print out all imports to
the standard output as they happen.
"""
__all__ = []
import sys
# Save a pointer to the old import function
oldimport = __import__
# The current indent level, every time we import, this is incremented
# so we can hierarchically see who imports who by the indentation
indentLevel = 0
# The new import function
def newimport(*args, **kw):
global indentLevel
fPrint = 0
name = args[0]
# Only print the name if we have not imported this before
if name not in sys.modules:
print((" "*indentLevel + "import " + args[0]))
fPrint = 1
indentLevel += 1
result = oldimport(*args, **kw)
indentLevel -= 1
if fPrint:
print((" "*indentLevel + "DONE: import " + args[0]))
return result
# Replace the builtin import with our new import
__builtins__["__import__"] = newimport