summaryrefslogtreecommitdiff
path: root/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py')
-rw-r--r--venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py
new file mode 100644
index 0000000..cb1af60
--- /dev/null
+++ b/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg/pip/_vendor/html5lib/_trie/datrie.py
@@ -0,0 +1,44 @@
1from __future__ import absolute_import, division, unicode_literals
2
3from datrie import Trie as DATrie
4from pip._vendor.six import text_type
5
6from ._base import Trie as ABCTrie
7
8
9class Trie(ABCTrie):
10 def __init__(self, data):
11 chars = set()
12 for key in data.keys():
13 if not isinstance(key, text_type):
14 raise TypeError("All keys must be strings")
15 for char in key:
16 chars.add(char)
17
18 self._data = DATrie("".join(chars))
19 for key, value in data.items():
20 self._data[key] = value
21
22 def __contains__(self, key):
23 return key in self._data
24
25 def __len__(self):
26 return len(self._data)
27
28 def __iter__(self):
29 raise NotImplementedError()
30
31 def __getitem__(self, key):
32 return self._data[key]
33
34 def keys(self, prefix=None):
35 return self._data.keys(prefix)
36
37 def has_keys_with_prefix(self, prefix):
38 return self._data.has_keys_with_prefix(prefix)
39
40 def longest_prefix(self, prefix):
41 return self._data.longest_prefix(prefix)
42
43 def longest_prefix_item(self, prefix):
44 return self._data.longest_prefix_item(prefix)