fixed a bug that made it impossible to load two cbuiltins from the same directory / 2.5 compatibility

This commit is contained in:
David Halter
2012-07-13 15:04:10 +02:00
parent 364405166b
commit 4ee9faacec
3 changed files with 19 additions and 18 deletions

View File

@@ -81,8 +81,6 @@ class Parser(CachedModule):
if not name:
name = os.path.basename(path)
name = name.rpartition('.')[0] # cut file type (normally .so)
path = os.path.dirname(path)
#print self.name, self.path
super(Parser, self).__init__(path=path, name=name)
self.sys_path = sys_path
@@ -138,23 +136,22 @@ class Parser(CachedModule):
# remove class line
c = re.sub(r'^[^\n]+', '', code_block)
# remove whitespace
c = re.sub(r'^[ ]{4}', '', c, flags=re.MULTILINE)
c = re.compile(r'^[ ]{4}', re.MULTILINE).sub('', c)
funcs[name] = process_code(c)
else:
raise NotImplementedError()
return funcs
if not self.path:
try:
name = self.name
if name == '__builtin__' and sys.hexversion < 0x03000000:
name = 'builtins'
f = open(os.path.sep.join(['mixin', name]) + '.py')
except IOError:
return {}
else:
return process_code(f.read())
try:
name = self.name
if name == '__builtin__' and sys.hexversion < 0x03000000:
name = 'builtins'
f = open(os.path.sep.join(['mixin', name]) + '.py')
except IOError:
return {}
else:
return process_code(f.read())
def _generate_code(self, scope, mixin_funcs, depth=0):
"""

View File

@@ -957,6 +957,9 @@ class PyFuzzyParser(object):
# delete code again, only the parser needs it
del self.code
def __repr__(self):
return "<%s: %s>" % (self.__class__.__name__, self.top)
@property
def line_nr(self):
return self._line_of_tokenize_restart + self._tokenize_line_nr

View File

@@ -10,6 +10,11 @@ import functions
from _compatibility import unicode, BytesIO
only_line = int(sys.argv[2]) if len(sys.argv) > 2 else None
if only_line is not None:
import debug
debug.debug_function = \
functions.debug.print_to_stdout
debug.ignored_modules = ['parsing', 'builtin']
#functions.set_debug_function(functions.debug.print_to_stdout)
def run_completion_test(correct, source, line_nr, line):
@@ -109,12 +114,8 @@ def run_test(source):
correct = None
else:
# reset the test, if only one specific test is wanted
if only_line is not None and line_nr != only_line:
if only_line and line_nr != only_line:
correct = None
import debug
debug.debug_function = \
functions.debug.print_to_stdout
debug.ignored_modules = ['parsing', 'builtin']
return tests, fails
# completion tests: