Prompt file imported from ziltorian/instructions (
.github/prompts/Project_Structure_Creation.prompt.md). Copyright stays with the author.
Задача
- Создать базовую структуру нового Python-проекта по образцу.
Требуемая структура
AppData/logs/tests/config/settings.json# файл настроек (пустой JSON)env.example# пример переменных окружения (вconfig/)
scripts/modules/appconfig/# включить короткийREADME.mdс универсальными инструкциями (как использоватьget_config())core/# включить короткийREADME.mdс указанием инициализации сервисов черезAppServiceslogger/# включить короткийREADME.mdпро инициализацию логгера и правила логирования (без специальных функций)utils/
main.py# минимальный точка входаconftest.py# минимальный файл для pytest
Инструкции для агента
-
Создать перечислённые директории и файлы.
-
В
config/settings.jsonпоместить{}как шаблон. -
В
config/env.exampleдобавить пример. -
В
modules/appconfig/README.mdуказать подробности:- Назначение: централизованная загрузка конфигурации приложения.
- Как использовать: импортировать
get_configи вызыватьconfig = get_config()в__init__сервисов. - Правила: хранить настройки в
config/settings.json, секреты в.env; не читать файлы напрямую; добавлять новые параметры вsettings.jsonи описывать их вmodules/appconfig/config.pyкак@dataclass. - Пример:
from modules.appconfig import get_config class MyService: def __init__(self): self._config = get_config() self.timeout = self._config.my_module.api_timeout
-
В
modules/core/README.mdуказать подробности:- Назначение: контейнер инициализации критичных сервисов приложения (
AppServices). - Правило: инициировать критичные, часто используемые сервисы через
AppServicesпри старте; редкие сервисы — создавать локально по требованию. - Запрещено: инициализировать тяжёлые внешние клиенты при импорте модулей; не хранить глобальный mutable state вне
AppServices. - Пример:
from modules.core.app_services import AppServices services = AppServices(config=get_config()) db = services.database
- Назначение: контейнер инициализации критичных сервисов приложения (
-
В
modules/logger/README.mdуказать подробности:- Назначение: единая инициализация и правила использования логгера.
- Как инициализировать:
logger = get_logger(__name__)в каждом модуле. - Правила логирования: логировать только на русском; маскировать или не логировать секреты; использовать f-строки; не применять
print()для трассировки. - Уровни:
debug,info,warning,error,critical,exception(в блоках try/except). - Пример:
from modules.logger import get_logger logger = get_logger(__name__) try: do_work() except Exception as e: logger.exception(f"Ошибка выполнения задачи: {e}")
-
Создать пустые
__init__.pyтам, где это уместно. -
Быть кратким и придерживаться русского языка.