1.1 --- a/referencing.py Sun Sep 04 00:08:11 2016 +0200
1.2 +++ b/referencing.py Sun Sep 04 17:44:39 2016 +0200
1.3 @@ -131,19 +131,30 @@
1.4
1.5 return Reference("<var>", None, self.name)
1.6
1.7 - def provided_by_module(self, module_name):
1.8 -
1.9 - "Return whether the reference is provided by 'module_name'."
1.10 -
1.11 - path = self.origin
1.12 - return not path or path.rsplit(".", 1)[0] == module_name
1.13 -
1.14 def alias(self, name):
1.15
1.16 "Alias this reference employing 'name'."
1.17
1.18 return Reference(self.get_kind(), self.get_origin(), name)
1.19
1.20 + def ancestors(self):
1.21 +
1.22 + """
1.23 + Return ancestors of this reference's origin in order of decreasing
1.24 + depth.
1.25 + """
1.26 +
1.27 + if not self.origin:
1.28 + return None
1.29 +
1.30 + parts = self.get_origin().split(".")
1.31 + ancestors = []
1.32 +
1.33 + for i in range(len(parts) - 1, 0, -1):
1.34 + ancestors.append(".".join(parts[:i]))
1.35 +
1.36 + return ancestors
1.37 +
1.38 def decode_reference(s, name=None):
1.39
1.40 "Decode 's', making a reference."