forked from ethanchewy/PythonBuddy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfrozenlist.py
More file actions
19 lines (17 loc) · 901 Bytes
/
frozenlist.py
File metadata and controls
19 lines (17 loc) · 901 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from rpython.tool.sourcetools import func_with_new_name
def forbid(*args):
raise TypeError("cannot mutate a frozenlist")
class frozenlist(list):
__setitem__ = func_with_new_name(forbid, '__setitem__')
__delitem__ = func_with_new_name(forbid, '__delitem__')
__setslice__ = func_with_new_name(forbid, '__setslice__')
__delslice__ = func_with_new_name(forbid, '__delslice__')
__iadd__ = func_with_new_name(forbid, '__iadd__')
__imul__ = func_with_new_name(forbid, '__imul__')
append = func_with_new_name(forbid, 'append')
insert = func_with_new_name(forbid, 'insert')
pop = func_with_new_name(forbid, 'pop')
remove = func_with_new_name(forbid, 'remove')
reverse = func_with_new_name(forbid, 'reverse')
sort = func_with_new_name(forbid, 'sort')
extend = func_with_new_name(forbid, 'extend')