py.lib.aw_config

Yohn Y. 2024-10-30 Parent:b76a704f31b1

12:75523df5b946 Go to Latest

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

. Оптимизация изменения 493b42d1 и распространение его ещё и на разбор файлов конфигураций.

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