Simple question – can I print the source code of this if
?
if __name__ == '__main__':
# ...
# this is the `if` I want to print
# V
if args and args[0][0] == '-':
if args[0] in ('--help','-h','-?'):
print_source_of_block(level=2)
icase = 'i' in args[0]
desc = 'd' in args[0]
args = args[1:]
Please don't ask me why I need it, nor give me advice on how to write user help. I want to know it because I'm curious.
Yeah, that's doable. Here's a quick sketch of how you could do it and what tools would be involved:
print_source_of_block
's caller with inspect.currentframe().f_back
.inspect.getframeinfo
.ast.parse
to parse the file, ortokenize.tokenize
to tokenize it.