Skip to content

Commit ffe011b

Browse files
committed
enh: env: support item/attr deletion
1 parent 80f1a50 commit ffe011b

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

unpythonic/env.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ def __getattr__(self, name):
8383
raise AttributeError("name '{:s}' is not defined".format(name))
8484
return e[name]
8585

86+
def __delattr__(self, name):
87+
if not name.isidentifier():
88+
raise ValueError("'{}' is not a valid identifier".format(name))
89+
e = self._env # __getattr__ not called if direct attr lookup succeeds, no need for hook.
90+
if name not in e:
91+
raise AttributeError("name '{:s}' is not defined".format(name))
92+
del e[name]
93+
8694
# membership test (in, not in)
8795
def __contains__(self, k):
8896
return self._env.__contains__(k)
@@ -115,6 +123,9 @@ def __getitem__(self, k):
115123
def __setitem__(self, k, v):
116124
setattr(self, k, v)
117125

126+
def __delitem__(self, k):
127+
delattr(self, k)
128+
118129
# context manager
119130
def __enter__(self):
120131
return self

0 commit comments

Comments
 (0)