344 self.text = text |
344 self.text = text |
345 |
345 |
346 try: |
346 try: |
347 # Python 2.3 and 2.4 don't like partial last lines, so be sure |
347 # Python 2.3 and 2.4 don't like partial last lines, so be sure |
348 # the text ends nicely for them. |
348 # the text ends nicely for them. |
349 self.code = compile(text + '\n', filename, "exec") |
349 if sys.version_info[0] == 2 and isinstance(filename, unicode): |
|
350 filenameEnc = filename.encode('utf-8') |
|
351 else: |
|
352 filenameEnc = filename |
|
353 self.code = compile(text + '\n', filenameEnc, "exec") |
350 except SyntaxError: |
354 except SyntaxError: |
351 _, synerr, _ = sys.exc_info() |
355 _, synerr, _ = sys.exc_info() |
352 raise NotPython( |
356 raise NotPython( |
353 "Couldn't parse '%s' as Python source: '%s' at line %d" % |
357 "Couldn't parse '%s' as Python source: '%s' at line %d" % |
354 (filename, synerr.msg, synerr.lineno) |
358 (filename, synerr.msg, synerr.lineno) |