Simplify Namespace
This commit is contained in:
parent
e2b27b619f
commit
fff34b8d45
|
@ -359,29 +359,25 @@ def definition_not_found(module_path, name):
|
||||||
|
|
||||||
class Namespace:
|
class Namespace:
|
||||||
def __init__(self, prefix):
|
def __init__(self, prefix):
|
||||||
super(Namespace, self).__setattr__('_items', {})
|
self._prefix = prefix
|
||||||
super(Namespace, self).__setattr__('_prefix', prefix)
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
|
||||||
return self[name]
|
|
||||||
|
|
||||||
def __setattr__(self, name, value):
|
|
||||||
self[name] = value
|
|
||||||
|
|
||||||
def __getitem__(self, name):
|
def __getitem__(self, name):
|
||||||
return self._items[Symbol(name)]
|
return safegetattr(self, Symbol(name).name)
|
||||||
|
|
||||||
def __setitem__(self, name, value):
|
def __setitem__(self, name, value):
|
||||||
name = Symbol(name)
|
name = Symbol(name).name
|
||||||
if name in self._items:
|
if name in self.__dict__:
|
||||||
raise ValueError('Name conflict: ' + module_path_str(self._prefix + (name.name,)))
|
raise ValueError('Name conflict: ' + module_path_str(self._prefix + (name,)))
|
||||||
self._items[name] = value
|
safesetattr(self, name, value)
|
||||||
|
|
||||||
def __contains__(self, name):
|
def __contains__(self, name):
|
||||||
return Symbol(name) in self._items
|
return Symbol(name).name in self.__dict__
|
||||||
|
|
||||||
|
def _items(self):
|
||||||
|
return dict((k, v) for (k, v) in self.__dict__.items() if k[0] != '_')
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return repr(self._items)
|
return repr(self._items())
|
||||||
|
|
||||||
class Compiler:
|
class Compiler:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -446,8 +442,7 @@ if __name__ == '__main__':
|
||||||
with open(path_bin_filename, 'rb') as f:
|
with open(path_bin_filename, 'rb') as f:
|
||||||
x = Decoder(f.read()).next()
|
x = Decoder(f.read()).next()
|
||||||
print(meta.Schema.decode(x))
|
print(meta.Schema.decode(x))
|
||||||
print(meta.Schema.decode(x) == meta.Schema.decode(x))
|
assert meta.Schema.decode(x) == meta.Schema.decode(x)
|
||||||
print(meta.Schema.decode(x)._encode())
|
|
||||||
assert meta.Schema.decode(x)._encode() == x
|
assert meta.Schema.decode(x)._encode() == x
|
||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
Loading…
Reference in New Issue