python-dependency-injector/src/dependency_injector/resources.py

43 lines
798 B
Python
Raw Normal View History

"""Resources module."""
import abc
import sys
from typing import TypeVar, Generic
if sys.version_info < (3, 7):
from typing import GenericMeta
else:
class GenericMeta(type):
...
T = TypeVar('T')
class ResourceMeta(GenericMeta, abc.ABCMeta):
def __getitem__(cls, item):
# Spike for Python 3.6
return cls(item)
class Resource(Generic[T], metaclass=ResourceMeta):
@abc.abstractmethod
def init(self, *args, **kwargs) -> T:
...
@abc.abstractmethod
def shutdown(self, resource: T) -> None:
...
class AsyncResource(Generic[T], metaclass=ResourceMeta):
@abc.abstractmethod
async def init(self, *args, **kwargs) -> T:
...
@abc.abstractmethod
async def shutdown(self, resource: T) -> None:
...