576 @return fixed up file name |
576 @return fixed up file name |
577 @rtype str |
577 @rtype str |
578 """ |
578 """ |
579 # get module name from __file__ |
579 # get module name from __file__ |
580 fn = frame.f_globals.get('__file__') |
580 fn = frame.f_globals.get('__file__') |
581 try: |
581 if fn is not None: |
582 return self._fnCache[fn] |
582 try: |
583 except KeyError: |
583 return self._fnCache[fn] |
584 absFilename = os.path.abspath(fn) |
584 except KeyError: |
585 if absFilename.endswith(('.pyc', '.pyo')): |
585 absFilename = os.path.abspath(fn) |
586 fixedName = absFilename[:-1] |
586 if absFilename.endswith(('.pyc', '.pyo')): |
587 if not os.path.exists(fixedName): |
587 fixedName = absFilename[:-1] |
|
588 if not os.path.exists(fixedName): |
|
589 fixedName = absFilename |
|
590 else: |
588 fixedName = absFilename |
591 fixedName = absFilename |
589 else: |
592 # update cache |
590 fixedName = absFilename |
593 self._fnCache[fn] = fixedName |
591 # update cache |
594 return fixedName |
592 self._fnCache[fn] = fixedName |
595 else: |
593 return fixedName |
596 return frame.f_code.co_filename |
594 |
597 |
595 def __checkBreakInFrame(self, frame): |
598 def __checkBreakInFrame(self, frame): |
596 """ |
599 """ |
597 Private method to check if the function / method has a line number |
600 Private method to check if the function / method has a line number |
598 which is a breakpoint. |
601 which is a breakpoint. |