(funcname, filename)
| 95 | "post_mortem", "help"] |
| 96 | |
| 97 | def find_function(funcname, filename): |
| 98 | cre = re.compile(r'def\s+%s\s*[(]' % re.escape(funcname)) |
| 99 | try: |
| 100 | fp = tokenize.open(filename) |
| 101 | except OSError: |
| 102 | return None |
| 103 | # consumer of this info expects the first line to be 1 |
| 104 | with fp: |
| 105 | for lineno, line in enumerate(fp, start=1): |
| 106 | if cre.match(line): |
| 107 | return funcname, filename, lineno |
| 108 | return None |
| 109 | |
| 110 | def lasti2lineno(code, lasti): |
| 111 | linestarts = list(dis.findlinestarts(code)) |