1.1 --- a/micropython/inspect.py Fri Nov 02 01:50:43 2007 +0100
1.2 +++ b/micropython/inspect.py Fri Nov 02 02:01:01 2007 +0100
1.3 @@ -51,6 +51,9 @@
1.4 def __delitem__(self, name):
1.5 del self.namespace[name]
1.6
1.7 + def has_key(self, name):
1.8 + return self.namespace.has_key(name)
1.9 +
1.10 def keys(self):
1.11 return self.namespace.keys()
1.12
1.13 @@ -103,7 +106,7 @@
1.14 self.instattr = set() # instance attributes
1.15
1.16 self.all_instattr = None # cache for instance_attributes
1.17 - self.all_instattr_names = [] # from all_instattr
1.18 + self.all_instattr_names = None # from all_instattr
1.19 self.classattr = None # cache for class_attributes
1.20 self.classattr_names = None # from classattr
1.21 self.all_classattr = None # cache for all_class_attributes
1.22 @@ -138,7 +141,7 @@
1.23
1.24 if self.classattr is None:
1.25 self.classattr = {}
1.26 - self.classattr_names = self.namespace.keys()
1.27 + self.classattr_names = self.keys()
1.28
1.29 for i, name in enumerate(self.classattr_names):
1.30 self.classattr[name] = Attr(i, self, self[name])
1.31 @@ -259,7 +262,7 @@
1.32 )
1.33
1.34 def make_global(self, name):
1.35 - if name not in self.argnames and not self.namespace.has_key(name):
1.36 + if name not in self.argnames and not self.has_key(name):
1.37 self.globals.add(name)
1.38 else:
1.39 raise InspectError, "Name %r is global and local in %r" % (name, self)
1.40 @@ -283,7 +286,7 @@
1.41 if self.localnames is None:
1.42 self.localnames = {}
1.43 start = len(self.argnames)
1.44 - for i, name in enumerate(self.namespace.keys()):
1.45 + for i, name in enumerate(self.keys()):
1.46 self.localnames[name] = Attr(start + i, None)
1.47 return self.localnames
1.48
1.49 @@ -310,6 +313,9 @@
1.50 def all_class_attributes(self):
1.51 return {}
1.52
1.53 + def instance_attributes(self):
1.54 + return {}
1.55 +
1.56 def __repr__(self):
1.57 return "UnresolvedName(%r, %r)" % (self.name, self.parent_name)
1.58
1.59 @@ -364,7 +370,7 @@
1.60
1.61 self.module = module
1.62 processed = self.dispatch(module)
1.63 - if self.namespace.has_key("__all__"):
1.64 + if self.has_key("__all__"):
1.65 all = self["__all__"]
1.66 if isinstance(all, compiler.ast.List):
1.67 for n in all.nodes:
1.68 @@ -375,7 +381,7 @@
1.69
1.70 "Vacuum the module namespace, removing unloaded module references."
1.71
1.72 - for name, value in self.namespace.items():
1.73 + for name, value in self.items():
1.74 if isinstance(value, Module) and not value.loaded:
1.75 del self[name]
1.76
1.77 @@ -401,7 +407,7 @@
1.78
1.79 if self.modattr is None:
1.80 self.modattr = {}
1.81 - self.modattr_names = self.namespace.keys()
1.82 + self.modattr_names = self.keys()
1.83 for i, name in enumerate(self.modattr_names):
1.84 self.modattr[name] = Attr(i, self, self[name])
1.85
1.86 @@ -651,7 +657,7 @@
1.87 name = node.name
1.88 if name == "self":
1.89 return Self()
1.90 - elif self.namespace.has_key(name):
1.91 + elif self.has_key(name):
1.92 return self[name]
1.93 elif builtins_namespace.has_key(name):
1.94 return builtins_namespace[name]