From: Barry Warsaw Date: Thu, 9 Sep 1999 23:24:33 +0000 (+0000) Subject: canonic(): This used to be equivalent to str() but that caused too X-Git-Tag: v1.6a1~936 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=148ffbc886a35751ca65447de5c22387ce7ca6f0;p=thirdparty%2FPython%2Fcpython.git canonic(): This used to be equivalent to str() but that caused too much breakage (esp. in JPython which holds absolute path names in co_filename already). This implementation uses os.path.abspath() as a slightly better way to canonicalize path names. It implements a cache. --- diff --git a/Lib/bdb.py b/Lib/bdb.py index abfb7ded1304..89908fc1d16a 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -1,6 +1,7 @@ # Debugger basics import sys +import os import types BdbQuit = 'bdb.BdbQuit' # Exception to give up completely @@ -17,12 +18,14 @@ class Bdb: def __init__(self): self.breaks = {} - # We want to have a method self.canonic() which - # canonicalizes filenames before comparing them - # but we want the default to be a very fast no-op. - # Solution: the built-in str function. - if not hasattr(self, "canonic"): - self.canonic = str + self.fncache = {} + + def canonic(self, filename): + canonic = self.fncache.get(filename) + if not canonic: + canonic = os.path.abspath(filename) + self.fncache[filename] = canonic + return canonic def reset(self): import linecache