mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-12-02 06:24:03 +03:00
32 lines
566 B
Python
32 lines
566 B
Python
|
"""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:
|
||
|
...
|