Add filters for the sub module dicts and module attributes dicts.

This commit is contained in:
Dave Halter
2016-10-12 02:19:52 +02:00
parent 5f46b48433
commit 862e4a6176
4 changed files with 34 additions and 26 deletions
+19 -1
View File
@@ -44,7 +44,8 @@ class AbstractUsedNamesFilter(AbstractFilter):
return list(self._filter(names))
def values(self):
return self._filter(self._used_names.values())
names = [name for name_list in self._used_names.values() for name in name_list]
return self._filter(names)
class ParserTreeFilter(AbstractUsedNamesFilter):
@@ -105,6 +106,23 @@ class GlobalNameFilter(AbstractUsedNamesFilter):
yield name
class DictFilter(AbstractFilter):
def __init__(self, dct, origin_scope=None):
super(DictFilter, self).__init__(origin_scope)
self._dct = dct
def get(self, name):
try:
leaf_name = self._dct[str(name)]
except KeyError:
return []
return list(self._filter([leaf_name]))
def values(self):
return self._filter(self._dct.values())
def get_global_filters(evaluator, context, until_position):
"""
Returns all filters in order of priority for name resolution.