Задача курса
Python: Публичный фасад пакета reports: init.py и all
Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Публичный фасад пакета: __init__.py, соглашения _name и __all__»
Условие
Публичный фасад пакета reports: init.py и all
Ты строишь публичный API пакета reports. Пакет уже существует: подмодули созданы проверяющей системой. Твоя задача — написать содержимое reports/__init__.py так, чтобы он стал правильным публичным фасадом.
Что уже дано
Проверяющая система скрыто создаёт пакет reports/ со следующей структурой:
reports/
__init__.py ← ты пишешь его содержимое (см. ниже)
summary.py # содержит: функцию generate(data: list) -> str,
# константу DEFAULT_TITLE: str = "Report",
# внутреннюю функцию _format_row(row) -> str
export.py # содержит: функцию to_csv(data: list, path: str) -> None,
# внутреннюю переменную _DELIMITER: str = ","
В редакторе ты видишь только код reports/__init__.py — именно его ты должен заполнить. Блок start_code создаёт файлы пакета до запуска твоего кода.
Что нужно сделать
Напиши содержимое reports/__init__.py, который:
- Реэкспортирует из
reports.summaryфункциюgenerateи константуDEFAULT_TITLE. - Реэкспортирует из
reports.exportфункциюto_csv. - Объявляет
__all__ровно с тремя именами:'generate','DEFAULT_TITLE','to_csv'— в любом порядке. - Не реэкспортирует и не включает в
__all__внутренние имена_format_rowи_DELIMITER.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно.
Проверяющая система после выполнения твоего кода импортирует пакет reports и проверяет его глобальное состояние: наличие нужных имён, содержимое __all__, поведение from reports import *.
Пример использования
print(__all__)
print(generate(["A", "B"]))
Результат:
['generate', 'DEFAULT_TITLE', 'to_csv']
Report
A
B
