From 068b3651c16916877eb8d5fdfec52485a507e204 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Mon, 31 Oct 2022 13:05:31 +0100 Subject: path and stat readers --- bsie/reader/__init__.py | 19 +++++++++++++++++++ bsie/reader/path.py | 31 +++++++++++++++++++++++++++++++ bsie/reader/stat.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 bsie/reader/__init__.py create mode 100644 bsie/reader/path.py create mode 100644 bsie/reader/stat.py (limited to 'bsie/reader') diff --git a/bsie/reader/__init__.py b/bsie/reader/__init__.py new file mode 100644 index 0000000..a45f22b --- /dev/null +++ b/bsie/reader/__init__.py @@ -0,0 +1,19 @@ +"""The Reader classes return high-level content structures from files. + +The Reader fulfills two purposes: + First, it brokers between multiple libraries and file formats. + Second, it separates multiple aspects of a file into distinct content types. + +Often, different libraries focus on reading different types of content from a +file. E.g. one would use different modules to read file system infos than to +read exif or pixel data of an image. Hence, this module is organized by content +type. Each distinct type can be implemented in a file or submodule that +provides a Reader implementation. Through utilization of submodules, different +file formats can be supported. + +Part of the bsie module. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" + +## EOF ## diff --git a/bsie/reader/path.py b/bsie/reader/path.py new file mode 100644 index 0000000..d27c664 --- /dev/null +++ b/bsie/reader/path.py @@ -0,0 +1,31 @@ +"""The Path reader produces a file path. + +Part of the bsie module. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" +# imports +import os +import typing + +# inner-module imports +from bsie.base import reader + +# exports +__all__: typing.Sequence[str] = ( + 'Path', + ) + + +## code ## + +class Path(reader.Reader): + """Return the path.""" + + CONTENT_TYPE = typing.Union[str] + + def __call__(self, path: str) -> CONTENT_TYPE: + return path + + +## EOF ## diff --git a/bsie/reader/stat.py b/bsie/reader/stat.py new file mode 100644 index 0000000..f0b83fb --- /dev/null +++ b/bsie/reader/stat.py @@ -0,0 +1,34 @@ +"""The Stat reader produces filesystem stat information. + +Part of the bsie module. +A copy of the license is provided with the project. +Author: Matthias Baumgartner, 2022 +""" +# imports +import os +import typing + +# inner-module imports +from bsie.base import reader, errors + +# exports +__all__: typing.Sequence[str] = ( + 'Stat', + ) + + +## code ## + +class Stat(reader.Reader): + """Read and return the filesystem's stat infos.""" + + CONTENT_TYPE = typing.Union[os.stat_result] + + def __call__(self, path: str) -> CONTENT_TYPE: + try: + return os.stat(path) + except Exception: + raise errors.ReaderError(path) + + +## EOF ## -- cgit v1.2.3 From b96c6e2096c387b70e2a4c1f0bc53b6044a0dc6f Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 25 Nov 2022 14:36:27 +0100 Subject: decouple readers and extractors; use strings for reference and repeated type annotations --- bsie/reader/path.py | 7 ++----- bsie/reader/stat.py | 6 ++---- 2 files changed, 4 insertions(+), 9 deletions(-) (limited to 'bsie/reader') diff --git a/bsie/reader/path.py b/bsie/reader/path.py index d27c664..d60f187 100644 --- a/bsie/reader/path.py +++ b/bsie/reader/path.py @@ -5,10 +5,9 @@ A copy of the license is provided with the project. Author: Matthias Baumgartner, 2022 """ # imports -import os import typing -# inner-module imports +# bsie imports from bsie.base import reader # exports @@ -22,9 +21,7 @@ __all__: typing.Sequence[str] = ( class Path(reader.Reader): """Return the path.""" - CONTENT_TYPE = typing.Union[str] - - def __call__(self, path: str) -> CONTENT_TYPE: + def __call__(self, path: str) -> str: return path diff --git a/bsie/reader/stat.py b/bsie/reader/stat.py index f0b83fb..6d40ab8 100644 --- a/bsie/reader/stat.py +++ b/bsie/reader/stat.py @@ -8,7 +8,7 @@ Author: Matthias Baumgartner, 2022 import os import typing -# inner-module imports +# bsie imports from bsie.base import reader, errors # exports @@ -22,9 +22,7 @@ __all__: typing.Sequence[str] = ( class Stat(reader.Reader): """Read and return the filesystem's stat infos.""" - CONTENT_TYPE = typing.Union[os.stat_result] - - def __call__(self, path: str) -> CONTENT_TYPE: + def __call__(self, path: str) -> os.stat_result: try: return os.stat(path) except Exception: -- cgit v1.2.3 From c9a1dea230054f5d6f40b7fd5e3930609c5f6416 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Fri, 25 Nov 2022 14:41:38 +0100 Subject: code analysis tool configs and minor fixes --- bsie/reader/stat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'bsie/reader') diff --git a/bsie/reader/stat.py b/bsie/reader/stat.py index 6d40ab8..592d912 100644 --- a/bsie/reader/stat.py +++ b/bsie/reader/stat.py @@ -25,8 +25,8 @@ class Stat(reader.Reader): def __call__(self, path: str) -> os.stat_result: try: return os.stat(path) - except Exception: - raise errors.ReaderError(path) + except Exception as err: + raise errors.ReaderError(path) from err ## EOF ## -- cgit v1.2.3 From 49cf03fc212c813862453de5352436dc90d1e458 Mon Sep 17 00:00:00 2001 From: Matthias Baumgartner Date: Thu, 15 Dec 2022 16:50:53 +0100 Subject: imports and init files --- bsie/reader/stat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bsie/reader') diff --git a/bsie/reader/stat.py b/bsie/reader/stat.py index 592d912..fc5fb24 100644 --- a/bsie/reader/stat.py +++ b/bsie/reader/stat.py @@ -9,7 +9,7 @@ import os import typing # bsie imports -from bsie.base import reader, errors +from bsie.base import errors, reader # exports __all__: typing.Sequence[str] = ( -- cgit v1.2.3