mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-06 22:50:52 +03:00
47c79b2772
* Add prototype * Add example * Remove typing erros in Python 2.7 and 3.4 * Move resources example * Draft resources docs * Update resources docs * Fix repr * Rename dict provider test * Add more tests * Add tests + refactoring * Add more tests * Update tests to run only on 3.5+ * Update setup.py * Add typing tests * Update changelog * Fix generator iteration * Remove contextlib * Hotfix aiohttp issue * Move aiohttp fix to tox.ini * Move aiohttp fix to a different place in tox
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:
|
|
...
|