From d7ff6e7616796263d042499740db55bd1e969c6b Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Mon, 18 Jan 2021 19:16:03 -0500 Subject: [PATCH] Update Traversable to provide basic concrete implementations of read_bytes and read_text based on open and __truediv__ based on joinpath. Add docstring to TraversableResources. --- importlib_resources/abc.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/importlib_resources/abc.py b/importlib_resources/abc.py index 4371a77c..56dc8127 100644 --- a/importlib_resources/abc.py +++ b/importlib_resources/abc.py @@ -59,26 +59,28 @@ def iterdir(self): Yield Traversable objects in self """ - @abc.abstractmethod def read_bytes(self): """ Read contents of self as bytes """ + with self.open('rb') as strm: + return strm.read() - @abc.abstractmethod def read_text(self, encoding=None): """ - Read contents of self as bytes + Read contents of self as text """ + with self.open(encoding=encoding) as strm: + return strm.read() @abc.abstractmethod - def is_dir(self): + def is_dir(self) -> bool: """ Return True if self is a dir """ @abc.abstractmethod - def is_file(self): + def is_file(self) -> bool: """ Return True if self is a file """ @@ -89,11 +91,11 @@ def joinpath(self, child): Return Traversable child in self """ - @abc.abstractmethod def __truediv__(self, child): """ Return Traversable child in self """ + return self.joinpath(child) @abc.abstractmethod def open(self, mode='r', *args, **kwargs): @@ -113,6 +115,11 @@ def name(self) -> str: class TraversableResources(ResourceReader): + """ + The required interface for providing traversable + resources. + """ + @abc.abstractmethod def files(self): """Return a Traversable object for the loaded package."""