| #!/usr/bin/env python |
| |
| # Copyright (c) 2001, MetaSlash Inc. All rights reserved. |
| # Portions Copyright (c) 2005, Google, Inc. All rights reserved. |
| |
| """ |
| Warning class to hold info about each warning. |
| """ |
| |
| |
| class Warning : |
| "Class which holds error information." |
| |
| def __init__(self, file, line, err) : |
| if hasattr(file, "function") : |
| file = file.function.func_code.co_filename |
| elif hasattr(file, "co_filename") : |
| file = file.co_filename |
| elif hasattr(line, "co_filename") : |
| file = line.co_filename |
| if file[:2] == './' : |
| file = file[2:] |
| self.file = file |
| |
| if hasattr(line, "co_firstlineno") : |
| line = line.co_firstlineno |
| if line == None : |
| line = 1 |
| self.line = line |
| self.err = err |
| self.level = err.level |
| |
| def __cmp__(self, warn) : |
| if warn == None : |
| return 1 |
| if not self.file and not self.line: |
| return 1 |
| if self.file != warn.file : |
| return cmp(self.file, warn.file) |
| if self.line != warn.line : |
| return cmp(self.line, warn.line) |
| return cmp(self.err, warn.err) |
| |
| def format(self) : |
| if not self.file and not self.line: |
| return str(self.err) |
| return "%s:%d: %s" % (self.file, self.line, self.err) |
| |
| def output(self, stream) : |
| stream.write(self.format() + "\n") |