• from my lab 4

    From Stefan Ram@21:1/5 to All on Sat Feb 11 18:02:55 2023
    main.py

    import io
    import sys
    import trace

    def factorial( n ):
    return n * factorial( n - 1 ) if n else 1

    def main():
    factorial( 2 )

    tracer = trace.Trace\
    ( ignoredirs=[ sys.prefix, sys.exec_prefix ], trace=1, count=1 )
    old_stdout = sys.stdout; sys.stdout = io.StringIO()
    tracer.run( 'main()' )
    for line in sys.stdout.getvalue().split('\n'):
    if 'modulename' not in line:
    print( line, file=old_stdout )

    output

    main.py(9): factorial( 2 )
    main.py(6): return n * factorial( n - 1 ) if n else 1
    main.py(6): return n * factorial( n - 1 ) if n else 1
    main.py(6): return n * factorial( n - 1 ) if n else 1

    previous "from my lab" posts

    Adding "start" and "end" methods to a logger
    1 How a function can get its own name
    2 Logging function entry and exit
    3 Logging function entry and exit with indentation

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)