提交 0ed8c288 编写于 作者: HansBug's avatar HansBug 😆

dev(hansbug): remove validation of the keys in treevalue

上级 f9d13d95
......@@ -111,12 +111,14 @@ class TestTreeStorage:
assert isinstance(t.get('d'), TreeStorage)
assert t.get('_0a') is None
with pytest.raises(KeyError):
t.set('', 233)
with pytest.raises(KeyError):
t.set('a' * 1000, 233)
with pytest.raises(KeyError):
t.set('0' + 'a' * 10, 233)
t.set('', 233)
assert t.get('') == 233
t.set('a' * 1000, 234)
assert t.get('a' * 1000) == 234
t.set('0' * 1000, 235)
assert t.get('0' * 1000) == 235
def test_del_(self):
t = create_storage({'a': 1, 'b': 2, 'c': raw({'x': 3, 'y': 4}), 'd': {'x': 3, 'y': 4}})
......
......@@ -6,8 +6,6 @@ from libcpp cimport bool
ctypedef unsigned char boolean
ctypedef unsigned int uint
cdef void _key_validate(const char *key) except *
cdef class TreeStorage:
cdef readonly dict map
......
......@@ -12,19 +12,6 @@ from .delay cimport undelay
cdef inline object _keep_object(object obj):
return obj
cdef inline void _key_validate(const char *key) except *:
cdef int n = strlen(key)
if n < 1:
raise KeyError(f'Key {repr(key)} is too short, minimum length is 1 but {n} found.')
elif n > 256:
raise KeyError(f'Key {repr(key)} is too long, maximum length is 256 but {n} found.')
cdef int i
for i in range(n):
if not (b'a' <= key[i] <= b'z' or b'A' <= key[i] <= b'Z' or key[i] == b'_'
or (i > 0 and b'0' <= key[i] <= b'9')):
raise KeyError(f'Invalid char {repr(key[i])} detected in position {repr(i)} of key {repr(key)}.')
cdef class TreeStorage:
def __cinit__(self, dict map_):
self.map = map_
......@@ -33,7 +20,6 @@ cdef class TreeStorage:
return ({},), {}
cpdef public void set(self, str key, object value) except *:
_key_validate(key.encode())
self.map[key] = value
cpdef public object get(self, str key):
......@@ -206,7 +192,6 @@ cpdef object create_storage(dict value):
cdef str k
cdef object v
for k, v in value.items():
_key_validate(k.encode())
if isinstance(v, dict):
_map[k] = create_storage(v)
else:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册