Daniel Dunbar | 9da6b12 | 2011-11-03 17:56:10 +0000 | [diff] [blame] | 1 | import inspect |
| 2 | import os |
| 3 | import sys |
| 4 | |
| 5 | def _write_message(kind, message): |
| 6 | # Get the file/line where this message was generated. |
| 7 | f = inspect.currentframe() |
| 8 | # Step out of _write_message, and then out of wrapper. |
| 9 | f = f.f_back.f_back |
| 10 | file,line,_,_,_ = inspect.getframeinfo(f) |
| 11 | location = '%s:%d' % (os.path.basename(file), line) |
| 12 | |
| 13 | print >>sys.stderr, '%s: %s: %s' % (location, kind, message) |
| 14 | |
| 15 | note = lambda message: _write_message('note', message) |
| 16 | warning = lambda message: _write_message('warning', message) |
| 17 | error = lambda message: _write_message('error', message) |
| 18 | fatal = lambda message: (_write_message('fatal error', message), sys.exit(1)) |
| 19 | |
| 20 | __all__ = ['note', 'warning', 'error', 'fatal'] |