From b00c60f448bca1d3382ce43a19ac032efde2b651 Mon Sep 17 00:00:00 2001 From: trueold89 Date: Mon, 5 Aug 2024 14:56:18 +0300 Subject: [PATCH] Add OSGetter implementation of DirGetter - init dirgetter.getter - add OSGetter class --- tubot/dirgetter/abc.py | 4 +++- tubot/dirgetter/getter.py | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tubot/dirgetter/getter.py diff --git a/tubot/dirgetter/abc.py b/tubot/dirgetter/abc.py index ef583d0..3a52fe6 100644 --- a/tubot/dirgetter/abc.py +++ b/tubot/dirgetter/abc.py @@ -11,7 +11,9 @@ from tubot.dirgetter.types import GetterTypes class DirGetter(IValidatable, ABC): - + """ + DirectoryGetter Abstract class + """ _gtype: GetterTypes def __init__(self) -> None: diff --git a/tubot/dirgetter/getter.py b/tubot/dirgetter/getter.py new file mode 100644 index 0000000..76cfc48 --- /dev/null +++ b/tubot/dirgetter/getter.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +#################################### +# Directory-Getter implementations # +#################################### + +# Imports +from tubot.dirgetter.types import GetterTypes +from tubot.dirgetter.abc import DirGetter +from aiofiles.os import listdir +from aiofiles.ospath import isdir + + +class OSGetter(DirGetter): + """ + Python.os module implementation of DirectoryGetter + """ + _gtype = GetterTypes.OS + base_dir: str + + def __init__(self, base_dir: str) -> None: + """ + :param base_dir: Path to parent directory + """ + super().__init__() + self.base_dir = base_dir + + @property + async def folders(self) -> dict: + dirs = {} + ls = await listdir(self.base_dir) + if len(ls) == 0: + raise ValueError("No dirs found") + for item in ls: + if await isdir(f"{self.base_dir}/{item}"): + dirs[item] = f"{self.base_dir}/{item}" + return dirs + + async def __validate__(self) -> bool: + return await isdir(self.base_dir)