1.1 --- a/inspector.py Thu Mar 30 19:41:24 2017 +0200
1.2 +++ b/inspector.py Fri Mar 31 00:17:01 2017 +0200
1.3 @@ -132,9 +132,9 @@
1.4
1.5 key = "%s.%s" % (path, name)
1.6
1.7 - # Find local definitions (within dynamic namespaces).
1.8 + # Find local definitions.
1.9
1.10 - ref = self.get_resolved_object(key)
1.11 + ref = self.get_resolved_object(key, True)
1.12 if ref:
1.13 self.set_name_reference(key, ref)
1.14 continue
1.15 @@ -1287,13 +1287,11 @@
1.16 # Function local names.
1.17
1.18 elif self.in_function:
1.19 - path = self.get_object_path(name)
1.20 self.set_function_local(name, init_value)
1.21
1.22 # Other namespaces (classes).
1.23
1.24 else:
1.25 - path = self.get_object_path(name)
1.26 self.set_name(name, init_value)
1.27
1.28 def set_name(self, name, ref=None):
2.1 --- a/resolving.py Thu Mar 30 19:41:24 2017 +0200
2.2 +++ b/resolving.py Fri Mar 31 00:17:01 2017 +0200
2.3 @@ -431,7 +431,7 @@
2.4
2.5 # Object resolution.
2.6
2.7 - def get_resolved_object(self, path):
2.8 + def get_resolved_object(self, path, defer=False):
2.9
2.10 """
2.11 Get the details of an object with the given 'path' within this module.
2.12 @@ -442,7 +442,7 @@
2.13
2.14 if self.objects.has_key(path):
2.15 ref = self.objects[path]
2.16 - if ref.has_kind("<depends>"):
2.17 + if not defer and ref.has_kind("<depends>"):
2.18 return None
2.19 else:
2.20 return ref
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/tests/attr_class.py Fri Mar 31 00:17:01 2017 +0200
3.3 @@ -0,0 +1,43 @@
3.4 +class SignalState:
3.5 + Red = 1
3.6 + Amber = 2
3.7 + Green = 3
3.8 + AmberAgain = 4
3.9 + Off = None
3.10 +
3.11 +class Signal:
3.12 + def __init__(self):
3.13 + self.disable()
3.14 +
3.15 + def enable(self):
3.16 + self.state = SignalState.Red
3.17 +
3.18 + def disable(self):
3.19 + self.state = SignalState.Off
3.20 +
3.21 + def next(self):
3.22 + if self.state == SignalState.Red:
3.23 + self.state = SignalState.Amber
3.24 + elif self.state == SignalState.Amber:
3.25 + self.state = SignalState.Green
3.26 + elif self.state == SignalState.Green:
3.27 + self.state = SignalState.AmberAgain
3.28 + elif self.state == SignalState.AmberAgain:
3.29 + self.state = SignalState.Red
3.30 + else:
3.31 + self.state = SignalState.Off
3.32 +
3.33 +s = Signal()
3.34 +print s.state # None
3.35 +s.next()
3.36 +print s.state # None
3.37 +s.enable()
3.38 +print s.state # 1
3.39 +s.next()
3.40 +print s.state # 2
3.41 +s.next()
3.42 +print s.state # 3
3.43 +s.next()
3.44 +print s.state # 4
3.45 +s.next()
3.46 +print s.state # 1