py.lib.aw_config
2024-05-04
Child:b76a704f31b1
py.lib.aw_config/src/aw_config/app_tools.py
+ Модуль получения имени директории размещения приложения
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/aw_config/app_tools.py Sat May 04 18:58:50 2024 +0300 1.3 @@ -0,0 +1,34 @@ 1.4 +# coding: utf-8 1.5 +"""\ 1.6 +Различные инструменты, полезные в построении среды исполнения приложений 1.7 +""" 1.8 +from os.path import dirname, abspath, exists, join as join_p 1.9 +from os import listdir 1.10 + 1.11 +from .error import Error 1.12 + 1.13 + 1.14 +class ToolsError(Error): 1.15 + """\ 1.16 + Базовый класс ошибок инструментария 1.17 + """ 1.18 + 1.19 + 1.20 +def get_app_root(file_name) -> str: 1.21 + """\ 1.22 + Пытаемся получить по имени файла модуля директорию расположения всего модуля целиком. 1.23 + Полезно при формировании имён каталогов ресурсов. 1.24 + :param file_name: при вызове должно быть ``__file__`` 1.25 + :returns Имя каталога, в котором находится сам модуль, из файла которого произведён вызов функции. 1.26 + """ 1.27 + res = abspath(file_name) 1.28 + res = dirname(res) 1.29 + 1.30 + while res: 1.31 + if not '__init__.py' in list(map(lambda x: x.lover(), dirname(res))): 1.32 + return res 1.33 + 1.34 + else: 1.35 + res = dirname(res) 1.36 + 1.37 + raise ToolsError(f'Не найдена директория размещения для модуля содержащего: {abspath(file_name)}')