1.1 --- a/importer.py Mon Sep 05 00:12:56 2016 +0200
1.2 +++ b/importer.py Mon Sep 05 19:50:21 2016 +0200
1.3 @@ -169,6 +169,14 @@
1.4
1.5 self.objects[name] = ref
1.6
1.7 + # Identification of both stored object names and name references.
1.8 +
1.9 + def identify(self, name):
1.10 +
1.11 + "Identify 'name' using stored object and external name records."
1.12 +
1.13 + return self.objects.get(name) or self.all_name_references.get(name)
1.14 +
1.15 # Indirect object retrieval.
1.16
1.17 def get_attributes(self, ref, attrname):
1.18 @@ -328,24 +336,25 @@
1.19
1.20 "Resolve dependencies between modules."
1.21
1.22 - resolved = {}
1.23 + for d in [self.objects, self.all_name_references]:
1.24 + resolved = {}
1.25
1.26 - for name, ref in self.objects.items():
1.27 - if ref.has_kind("<depends>"):
1.28 - found = self.find_dependency(ref)
1.29 - if found:
1.30 - resolved[name] = found
1.31 - else:
1.32 - print >>sys.stderr, "Name %s references an unknown object: %s" % (name, ref.get_origin())
1.33 + for name, ref in d.items():
1.34 + if ref.has_kind("<depends>"):
1.35 + found = self.find_dependency(ref)
1.36 + if found:
1.37 + resolved[name] = found
1.38 + else:
1.39 + print >>sys.stderr, "Name %s references an unknown object: %s" % (name, ref.get_origin())
1.40
1.41 - # Record the resolved names and identify required modules.
1.42 + # Record the resolved names and identify required modules.
1.43
1.44 - for name, ref in resolved.items():
1.45 - self.objects[name] = ref
1.46 + for name, ref in resolved.items():
1.47 + d[name] = ref
1.48
1.49 - module_name = self.get_module_provider(ref)
1.50 - if module_name:
1.51 - self.required.add(module_name)
1.52 + module_name = self.get_module_provider(ref)
1.53 + if module_name:
1.54 + self.required.add(module_name)
1.55
1.56 def find_dependency(self, ref):
1.57