make __getitem__ call get_primary rather than the other way around

this makes subclassing easier
This commit is contained in:
Jan Petykiewicz 2020-09-28 23:49:33 -07:00
parent 682a99470f
commit b873a5ddf3

View File

@ -2,7 +2,8 @@
Library class for managing unique name->pattern mappings and Library class for managing unique name->pattern mappings and
deferred loading or creation. deferred loading or creation.
""" """
from typing import Dict, Callable, TypeVar, Generic, TYPE_CHECKING, Any, Tuple, Union from typing import Dict, Callable, TypeVar, Generic, TYPE_CHECKING
from typing import Any, Tuple, Union, Iterator
import logging import logging
from pprint import pformat from pprint import pformat
from dataclasses import dataclass from dataclasses import dataclass
@ -81,6 +82,10 @@ class Library:
del self.cache[key] del self.cache[key]
def __getitem__(self, key: str) -> 'Pattern': def __getitem__(self, key: str) -> 'Pattern':
return self.get_primary(key)
def get_primary(self, key: str) -> 'Pattern':
if self.enable_cache and key in self.cache: if self.enable_cache and key in self.cache:
logger.debug(f'found {key} in cache') logger.debug(f'found {key} in cache')
return self.cache[key] return self.cache[key]
@ -92,9 +97,6 @@ class Library:
self.cache[key] = pat self.cache[key] = pat
return pat return pat
def get_primary(self, key: str) -> 'Pattern':
return self[key]
def get_secondary(self, key: str, tag: str) -> 'Pattern': def get_secondary(self, key: str, tag: str) -> 'Pattern':
logger.debug(f'get_secondary({key}, {tag})') logger.debug(f'get_secondary({key}, {tag})')
key2 = (key, tag) key2 = (key, tag)
@ -115,7 +117,7 @@ class Library:
key = sp.identifier[0] key = sp.identifier[0]
if key in self.primary: if key in self.primary:
sp.pattern = self[key] sp.pattern = self.get_primary(key)
continue continue
if (key, tag) in self.secondary: if (key, tag) in self.secondary: