commit f0a9ce6846d040b97b8c0f7173ef0f902b70cd11 Author: ado Date: Tue Oct 10 09:29:04 2023 -0400 Add serviceContainer.py diff --git a/serviceContainer.py b/serviceContainer.py new file mode 100644 index 0000000..b11b0ed --- /dev/null +++ b/serviceContainer.py @@ -0,0 +1,19 @@ +from dataclasses import dataclass +from typing import Mapping, Type, TypeVar + +T = TypeVar("T") + +@dataclass +class ServiceContainer: + _dependencies: Mapping[str, T] = {} + + def register(self, name: str, instance: T) -> None: + self._dependencies[name] = instance + + def retrieve(self, name: str, _: Type[T]) -> T: + return self._dependencies[name] + + + +# in python 3.12 we can use retrieve[T] :) +# https://docs.python.org/3/reference/compound_stmts.html#type-params \ No newline at end of file