py.lib.aw_config

Yohn Y. 2024-05-05 Parent:b76a704f31b1

3:bac1fe0751a9 Go to Latest

py.lib.aw_config/src/aw_config/app_tools.py

. Декорируем возможные ошибки в чтении файла конфигурации.

History
awgur@1 1 # coding: utf-8
awgur@1 2 """\
awgur@1 3 Различные инструменты, полезные в построении среды исполнения приложений
awgur@1 4 """
awgur@2 5 from os.path import dirname, abspath
awgur@1 6 from os import listdir
awgur@1 7
awgur@1 8 from .error import Error
awgur@1 9
awgur@1 10
awgur@1 11 class ToolsError(Error):
awgur@1 12 """\
awgur@1 13 Базовый класс ошибок инструментария
awgur@1 14 """
awgur@1 15
awgur@1 16
awgur@2 17 # noinspection GrazieInspection
awgur@1 18 def get_app_root(file_name) -> str:
awgur@1 19 """\
awgur@1 20 Пытаемся получить по имени файла модуля директорию расположения всего модуля целиком.
awgur@1 21 Полезно при формировании имён каталогов ресурсов.
awgur@2 22 :param file_name: При вызове должно быть ``__file__``
awgur@1 23 :returns Имя каталога, в котором находится сам модуль, из файла которого произведён вызов функции.
awgur@1 24 """
awgur@1 25 res = abspath(file_name)
awgur@1 26 res = dirname(res)
awgur@1 27
awgur@1 28 while res:
awgur@2 29 if '__init__.py' not in list(map(lambda x: x.lower(), listdir(res))):
awgur@1 30 return res
awgur@1 31
awgur@1 32 else:
awgur@1 33 res = dirname(res)
awgur@1 34
awgur@1 35 raise ToolsError(f'Не найдена директория размещения для модуля содержащего: {abspath(file_name)}')
awgur@2 36
awgur@2 37