Dolda2000 GitWeb
/
coe.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5fa2011
)
data: Replace usymbol/string equivalence with obj __getattr__ implementation.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Thu, 13 Jan 2022 22:24:14 +0000
(23:24 +0100)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Thu, 13 Jan 2022 22:24:14 +0000
(23:24 +0100)
coe/data.py
patch
|
blob
|
blame
|
history
diff --git
a/coe/data.py
b/coe/data.py
index
b65dbae
..
aaa862d
100644
(file)
--- a/
coe/data.py
+++ b/
coe/data.py
@@
-1,4
+1,5
@@
class symbol(object):
class symbol(object):
+ __slots__ = []
isafe = set("abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"$%^&*_=/.")
isafe = set("abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"$%^&*_=/.")
@@
-47,18
+48,15
@@
class symbol(object):
return "%s:%s" % (self.quote(self.ns), self.quote(self.name))
class usymbol(symbol):
return "%s:%s" % (self.quote(self.ns), self.quote(self.name))
class usymbol(symbol):
+ __slots__ = ["name"]
ns = ""
ns = ""
+
def __init__(self, name):
self.name = name
def __init__(self, name):
self.name = name
- def __hash__(self):
- return hash(self.name)
- def __eq__(s, o):
- if isinstance(o, str):
- return s.name == o
- return super().__eq__(o)
-
class nssymbol(symbol):
class nssymbol(symbol):
+ __slots__ = ["ns", "name"]
+
def __init__(self, ns, name, *args, **kw):
super().__init__(*args, **kw)
self.name = name
def __init__(self, ns, name, *args, **kw):
super().__init__(*args, **kw)
self.name = name
@@
-77,3
+75,8
@@
class obj(object):
self.__dict__[key] = val
def __delitem__(self, key):
del self.__dict__[key]
self.__dict__[key] = val
def __delitem__(self, key):
del self.__dict__[key]
+ def __getattr__(self, name):
+ try:
+ return self.__dict__[symbol.get("", name)]
+ except KeyError:
+ raise AttributeError(name) from None