.. deprecated:: 3.7
This ABC is deprecated in favour of supporting resource loading
through :class:`importlib.resources.abc.TraversableResources`.
+ This class exists for backwards compatibility only with other ABCs in
+ this module.
.. method:: get_data(path)
:abstractmethod:
class ResourceLoader(Loader):
"""Abstract base class for loaders which can return data from their
- back-end storage.
+ back-end storage to facilitate reading data to perform an import.
This ABC represents one of the optional protocols specified by PEP 302.
- """
-
- def __init__(self):
- import warnings
- warnings.warn('importlib.abc.ResourceLoader is deprecated in '
- 'favour of supporting resource loading through '
- 'importlib.resources.abc.TraversableResources.',
- DeprecationWarning, stacklevel=2)
- super().__init__()
+ For directly loading resources, use TraversableResources instead. This class
+ primarily exists for backwards compatibility with other ABCs in this module.
+ """
@abc.abstractmethod
def get_data(self, path):
SPLIT = make_abc_subclasses(ResourceLoader)
def test_get_data(self):
- with (
- self.assertRaises(IOError),
- self.assertWarnsRegex(
- DeprecationWarning,
- r"importlib\.abc\.ResourceLoader is deprecated in favour of "
- r"supporting resource loading through importlib\.resources"
- r"\.abc\.TraversableResources.",
- ),
- ):
+ with self.assertRaises(IOError):
self.ins.get_data('/some/path')
def path_stats(self, path):
return {'mtime': 1}
- with self.assertWarnsRegex(
- DeprecationWarning,
- r"importlib\.abc\.ResourceLoader is deprecated in favour of "
- r"supporting resource loading through importlib\.resources"
- r"\.abc\.TraversableResources.",
- ):
- loader = DummySourceLoader()
+
+ loader = DummySourceLoader()
with self.assertWarnsRegex(
DeprecationWarning,
loader.path_mtime('foo.py')
-class ResourceLoaderDeprecationWarningsTests(unittest.TestCase):
- """Tests ResourceLoader deprecation warnings."""
-
- def test_deprecated_resource_loader(self):
- from importlib.abc import ResourceLoader
- class DummyLoader(ResourceLoader):
- def get_data(self, path):
- return b''
-
- with self.assertWarns(DeprecationWarning):
- DummyLoader()
-
if __name__ == '__main__':
unittest.main()