1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
from __future__ import annotations
from enum import Enum
from typing import Callable, Dict, Optional, TypeVar
TK = TypeVar('TK')
TV = TypeVar('TV')
class LiteralType(Enum):
All = 'all'
One = 'one'
class DefaultPutDict(Dict[TK, TV]):
def get_or_put(
self,
key: TK,
default: Optional[TV] = None,
default_factory: Optional[Callable[[TK], TV]] = None,
) -> TV:
if key in self:
return self[key]
elif default: # pragma: no cover
value = self[key] = default
return value
elif default_factory:
value = self[key] = default_factory(key)
return value
raise ValueError('Not found default and default_factory') # pragma: no cover
__all__ = ['LiteralType']
|