Skip to content

Commit

Permalink
Split and move trieregex.py to own folder, update import order
Browse files Browse the repository at this point in the history
  • Loading branch information
ermanh committed Jun 21, 2020
1 parent b219226 commit 096a400
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 31 deletions.
Empty file removed __init__.py
Empty file.
3 changes: 2 additions & 1 deletion tests/test_add.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest

from trieregex import TrieRegEx as TRE


class TestAdd(unittest.TestCase):
"""Tests for TrieRegEx().add()
Expand Down
3 changes: 2 additions & 1 deletion tests/test_finals.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest
from collections import defaultdict

from trieregex import TrieRegEx as TRE


class TestFinals(unittest.TestCase):
"""Tests for TrieRegEx().finals() and TrieRegEx()._finals
Expand Down
3 changes: 2 additions & 1 deletion tests/test_has.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest

from trieregex import TrieRegEx as TRE


class TestHas(unittest.TestCase):
"""Tests for TrieRegEx().has()
Expand Down
3 changes: 2 additions & 1 deletion tests/test_initials.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest
from collections import defaultdict

from trieregex import TrieRegEx as TRE


class TestInitials(unittest.TestCase):
"""Tests for TrieRegEx().initials() and TrieRegEx()._initials
Expand Down
5 changes: 3 additions & 2 deletions tests/test_regex.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest
import re
from typing import List
import unittest

from trieregex import TrieRegEx as TRE


class TestRegex(unittest.TestCase):
Expand Down
3 changes: 2 additions & 1 deletion tests/test_remove.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest

from trieregex import TrieRegEx as TRE


class TestRemove(unittest.TestCase):
"""Tests for TrieRegEx().remove()
Expand Down
4 changes: 3 additions & 1 deletion tests/test_trieregex.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from trieregex.trieregex import TrieRegEx as TRE
import unittest

from trieregex import TrieRegEx as TRE


class TestTrieRegEx(unittest.TestCase):
"""Basic tests for each function in the trieregex.TrieRegEx class.
Expand Down Expand Up @@ -28,6 +29,7 @@ def test_add(self):
)

def test_remove(self):
self.tre = TRE(*self.words)
self.tre.remove('healthy', 'change')
self.assertEqual(
self.tre._trie,
Expand Down
1 change: 1 addition & 0 deletions trieregex/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .trieregex import TrieRegEx
23 changes: 23 additions & 0 deletions trieregex/memoizer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from functools import partial


class Memoizer:
__slots__ = ['func', 'cache']

def __init__(self, func):
self.func = func
self.cache = {}

def __call__(self, *args):
stringed = str(args)
if stringed not in self.cache:
self.cache[stringed] = self.func(*args)
return self.cache[stringed]

def __get__(self, obj, objtype):
fn = partial(self.__call__, obj)
fn.clear_cache = self._clear_cache
return fn

def _clear_cache(self):
self.cache.clear()
25 changes: 2 additions & 23 deletions trieregex.py → trieregex/trieregex.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,8 @@
from re import escape
from collections import defaultdict
from re import escape
from typing import Dict, List
from functools import partial


class Memoizer:
__slots__ = ['func', 'cache']

def __init__(self, func):
self.func = func
self.cache = {}

def __call__(self, *args):
stringed = str(args)
if stringed not in self.cache:
self.cache[stringed] = self.func(*args)
return self.cache[stringed]

def __get__(self, obj, objtype):
fn = partial(self.__call__, obj)
fn.clear_cache = self._clear_cache
return fn

def _clear_cache(self):
self.cache.clear()
from .memoizer import Memoizer


class TrieRegEx():
Expand Down

0 comments on commit 096a400

Please sign in to comment.