Files
Argenta/README.ru.md
T

6.7 KiB

preview

Argenta — это простой и элегантный фреймворк для создания модульных CLI-приложений. Он предоставляет чистый и интуитивный способ создания контекстно-зависимых инструментов командной строки с изолированными областями команд.

Argenta — это "Самый простой", "Самый модульный" и "Самый элегантный" способ создания интерактивных CLI-приложений на Python.

📖 Читайте полную документацию: argenta.readthedocs.io
🌍 Другие языки: EN


preview

>>> from argenta import Router, Command, Response
>>>
>>> router = Router()
>>>
>>> @router.command(Command("hello"))
... def handler(response: Response):
...     print("Привет, мир!")
>>>
>>> from argenta import App, Orchestrator
>>>
>>> app = App()
>>> orchestrator = Orchestrator()
>>>
>>> app.include_router(router)
>>> orchestrator.start_polling(app)

Argenta позволяет создавать интерактивные CLI-приложения невероятно легко. Не нужно вручную парсить сложные структуры команд или управлять переходами состояний — просто используйте роутеры и команды!

Установка Argenta

Argenta доступна на PyPI:

$ python -m pip install argenta

или с использованием uv:

$ uv add argenta

Argenta официально поддерживает Python 3.12+.

🚀 Поддерживаемые возможности и лучшие практики

Argenta готова к требованиям создания масштабируемых, надежных и поддерживаемых CLI-приложений.

  • Интерактивные сессии: В отличие от традиционных CLI-инструментов, Argenta создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение.
  • Декларативный синтаксис: Команды и их обработчики объявляются с помощью простых декораторов, что делает код чистым и интуитивно понятным.
  • Нативный DI: Благодаря интеграции с dishka <https://dishka.readthedocs.io/en/stable/>_, вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование и переиспользование.
  • Автоматическая валидация и парсинг: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их арсинг, валидацию и преобразование типов.
  • Гибкая настройка: Вы можете легко кастомизировать системные сообщения, форматирование вывода и т.д.

Нужно что-то еще? Создайте issue, мы слушаем.

📝 Зачем мы это создали?

Создание сложных CLI-приложений часто требует управления различными контекстами и областями команд. Например, при создании утилиты, подобной Metasploit Framework, пользователям нужно входить в определенные области (например, выбирать модуль сканирования), а затем получать доступ к командам, специфичным только для этого контекста.

Традиционные CLI-фреймворки не предоставляют элегантного способа обработки такой модульной, контекстно-зависимой архитектуры. Argenta была создана для решения этой проблемы, предоставляя простой и лаконичный способ инкапсуляции CLI-функциональности в изолированные, абстрагированные среды.

Мы считаем, что создание CLI-приложений должно быть таким же приятным, как создание веб-приложений с современными фреймворками. Argenta привносит паттерн роутеров и чистое разделение ответственности в мир CLI.

🚀 Быстрый старт

Вот простой пример для начала работы:

# routers.py
from argenta import Router, Command, Response

router = Router()

@router.command(Command("hello"))
def handler(response: Response):
    """Простая команда hello world"""
    print("Привет, мир!")

@router.command(Command("greet"))
def greet_handler(response: Response):
    """Поприветствовать пользователя по имени"""
    name = response.args.get("name", "незнакомец")
    print(f"Привет, {name}!")
# main.py
from argenta import App, Orchestrator
from .routers import router

app = App()
orchestrator = Orchestrator()

def main() -> None:
    # Подключите ваши роутеры
    app.include_router(router)
    
    # Запустите интерактивный CLI
    orchestrator.start_polling(app)

if __name__ == '__main__':
    main()

Вот и всё! Теперь у вас есть полностью функциональное интерактивное CLI-приложение с модульной маршрутизацией команд.

📚 Документация

Полная документация доступна на argenta.readthedocs.io


MIT 2025 kolo | made by kolo