(funcname, filename)
| 91 | "post_mortem", "help"] |
| 92 | |
| 93 | def find_function(funcname, filename): |
| 94 | cre = re.compile(r'def\s+%s\s*[(]' % re.escape(funcname)) |
| 95 | try: |
| 96 | fp = open(filename) |
| 97 | except OSError: |
| 98 | return None |
| 99 | # consumer of this info expects the first line to be 1 |
| 100 | with fp: |
| 101 | for lineno, line in enumerate(fp, start=1): |
| 102 | if cre.match(line): |
| 103 | return funcname, filename, lineno |
| 104 | return None |
| 105 | |
| 106 | def getsourcelines(obj): |
| 107 | lines, lineno = inspect.findsource(obj) |