← Каталог
Python — CLI практикум (10 файлов)
Шаг 5: мини-практикум из 10 модулей — от argparse до entry point.
"""Модуль 1: приветствие CLI."""
APP_NAME = "it-practicum"
def greeting() -> str:
return f"{APP_NAME}: учебный набор из 10 файлов" """Модуль 1: приветствие CLI."""
APP_NAME = "it-practicum"
def greeting() -> str:
return f"{APP_NAME}: учебный набор из 10 файлов" """Модуль 2: версия приложения."""
VERSION = "0.1.0"
def version_line() -> str:
return f"version {VERSION}" """Модуль 2: версия приложения."""
VERSION = "0.1.0"
def version_line() -> str:
return f"version {VERSION}" """Модуль 3: разбор аргументов (упрощённо)."""
import sys
def first_arg(default: str = "world") -> str:
return sys.argv[1] if len(sys.argv) > 1 else default """Модуль 3: разбор аргументов (упрощённо)."""
import sys
def first_arg(default: str = "world") -> str:
return sys.argv[1] if len(sys.argv) > 1 else default """Модуль 4: пути и файлы."""
from pathlib import Path
def project_root() -> Path:
return Path(__file__).resolve().parent """Модуль 4: пути и файлы."""
from pathlib import Path
def project_root() -> Path:
return Path(__file__).resolve().parent """Модуль 5: конфигурация."""
from dataclasses import dataclass
@dataclass(frozen=True)
class Config:
debug: bool = False
lang: str = "ru" """Модуль 5: конфигурация."""
from dataclasses import dataclass
@dataclass(frozen=True)
class Config:
debug: bool = False
lang: str = "ru" """Модуль 6: простой логгер."""
def log(message: str, *, debug: bool = False) -> None:
prefix = "[debug] " if debug else ""
print(f"{prefix}{message}") """Модуль 6: простой логгер."""
def log(message: str, *, debug: bool = False) -> None:
prefix = "[debug] " if debug else ""
print(f"{prefix}{message}") """Модуль 7: список задач."""
TASKS = ("read", "parse", "render")
def list_tasks() -> str:
return ", ".join(TASKS) """Модуль 7: список задач."""
TASKS = ("read", "parse", "render")
def list_tasks() -> str:
return ", ".join(TASKS) """Модуль 8: запуск одной задачи."""
def run_task(name: str) -> str:
return f"run: {name}" """Модуль 8: запуск одной задачи."""
def run_task(name: str) -> str:
return f"run: {name}" """Модуль 9: итоговый отчёт."""
def report(name: str, tasks: str) -> str:
return f"{name} finished tasks: {tasks}" """Модуль 9: итоговый отчёт."""
def report(name: str, tasks: str) -> str:
return f"{name} finished tasks: {tasks}" #!/usr/bin/env python3
"""Модуль 10: точка входа, собирает практикум."""
from step01_greeting import greeting
from step02_version import version_line
from step03_args import first_arg
from step07_tasks import list_tasks
from step09_report import report
def main() -> None:
who = first_arg("Вселенная IT")
print(greeting())
print(version_line())
print(report(who, list_tasks()))
if __name__ == "__main__":
main() #!/usr/bin/env python3
"""Модуль 10: точка входа, собирает практикум."""
from step01_greeting import greeting
from step02_version import version_line
from step03_args import first_arg
from step07_tasks import list_tasks
from step09_report import report
def main() -> None:
who = first_arg("Вселенная IT")
print(greeting())
print(version_line())
print(report(who, list_tasks()))
if __name__ == "__main__":
main()