mirror of
https://github.com/rembo10/headphones.git
synced 2026-03-21 20:29:27 +00:00
- Delete from Releases when deleting artist/album - Searcher - Size limits not quite working - Searcher - 1st newznab used even if disabled - Rutracker search stopped working for me, fixed by updating Beautiful Soup. Moved bs4 and html5lib to lib and ensured (I think) it’s imported from the right place
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from __future__ import absolute_import, division, unicode_literals
|
|
|
|
from datrie import Trie as DATrie
|
|
from six import text_type
|
|
|
|
from ._base import Trie as ABCTrie
|
|
|
|
|
|
class Trie(ABCTrie):
|
|
def __init__(self, data):
|
|
chars = set()
|
|
for key in data.keys():
|
|
if not isinstance(key, text_type):
|
|
raise TypeError("All keys must be strings")
|
|
for char in key:
|
|
chars.add(char)
|
|
|
|
self._data = DATrie("".join(chars))
|
|
for key, value in data.items():
|
|
self._data[key] = value
|
|
|
|
def __contains__(self, key):
|
|
return key in self._data
|
|
|
|
def __len__(self):
|
|
return len(self._data)
|
|
|
|
def __iter__(self):
|
|
raise NotImplementedError()
|
|
|
|
def __getitem__(self, key):
|
|
return self._data[key]
|
|
|
|
def keys(self, prefix=None):
|
|
return self._data.keys(prefix)
|
|
|
|
def has_keys_with_prefix(self, prefix):
|
|
return self._data.has_keys_with_prefix(prefix)
|
|
|
|
def longest_prefix(self, prefix):
|
|
return self._data.longest_prefix(prefix)
|
|
|
|
def longest_prefix_item(self, prefix):
|
|
return self._data.longest_prefix_item(prefix)
|