This commit is contained in:
2026-02-06 23:52:26 +03:00
parent f1034ff447
commit a21570e779
15 changed files with 420 additions and 125 deletions
@@ -0,0 +1,9 @@
from metrics.benchmarks.entity import benchmarks
@benchmarks.register(
type_="my_category",
description="Description of what is being measured"
)
def benchmark_my_operation() -> None:
# Code whose performance is being measured
pass
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-13 21:50+0300\n" "POT-Creation-Date: 2026-02-06 23:44+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -29,32 +29,32 @@ msgid ""
"взаимодействие с пользователем, координируя работу всех компонентов: " "взаимодействие с пользователем, координируя работу всех компонентов: "
"роутеров, обработчиков и системных сообщений." "роутеров, обработчиков и системных сообщений."
msgstr "" msgstr ""
"The ``App`` object is the implementations of your console application. It handles " "The ``App`` object is the implementations of your console application. It"
"configuration, lifecycle management, command processing, and user " " handles configuration, lifecycle management, command processing, and "
"interaction, coordinating the work of all components: routers, handlers, " "user interaction, coordinating the work of all components: routers, "
"and system messages." "handlers, and system messages."
#: ../../root/api/app/index.rst:11 #: ../../root/api/app/index.rst:11
msgid "Инициализация" msgid "Инициализация"
msgstr "Initialization" msgstr "Initialization"
#: ../../root/api/app/index.rst:37 #: ../../root/api/app/index.rst:31
msgid "Создаёт и настраивает экземпляр приложения." msgid "Создаёт и настраивает экземпляр приложения."
msgstr "Creates and configures an application instance." msgstr "Creates and configures an application instance."
#: ../../root/api/app/index.rst:39 #: ../../root/api/app/index.rst:33
msgid "``prompt``: Приглашение к вводу, отображаемое перед каждой командой." msgid "``prompt``: Приглашение к вводу, отображаемое перед каждой командой."
msgstr "``prompt``: Input prompt displayed before each command." msgstr "``prompt``: Input prompt displayed before each command."
#: ../../root/api/app/index.rst:40 #: ../../root/api/app/index.rst:34
msgid "``initial_message``: Сообщение, выводимое при запуске приложения." msgid "``initial_message``: Сообщение, выводимое при запуске приложения."
msgstr "``initial_message``: Message displayed when the application starts." msgstr "``initial_message``: Message displayed when the application starts."
#: ../../root/api/app/index.rst:41 #: ../../root/api/app/index.rst:35
msgid "``farewell_message``: Сообщение, выводимое при выходе из приложения." msgid "``farewell_message``: Сообщение, выводимое при выходе из приложения."
msgstr "``farewell_message``: Message displayed when exiting the application." msgstr "``farewell_message``: Message displayed when exiting the application."
#: ../../root/api/app/index.rst:42 #: ../../root/api/app/index.rst:36
msgid "" msgid ""
"``exit_command``: Команда, которая маркируется как триггер для выхода из " "``exit_command``: Команда, которая маркируется как триггер для выхода из "
"приложения." "приложения."
@@ -62,7 +62,7 @@ msgstr ""
"``exit_command``: Command that is marked as a trigger for exiting the " "``exit_command``: Command that is marked as a trigger for exiting the "
"application." "application."
#: ../../root/api/app/index.rst:43 #: ../../root/api/app/index.rst:37
msgid "" msgid ""
"``system_router_title``: Заголовок для системного роутера (содержит " "``system_router_title``: Заголовок для системного роутера (содержит "
"команду выхода)." "команду выхода)."
@@ -70,7 +70,7 @@ msgstr ""
"``system_router_title``: Title for the system router (contains the exit " "``system_router_title``: Title for the system router (contains the exit "
"command)." "command)."
#: ../../root/api/app/index.rst:44 #: ../../root/api/app/index.rst:38
msgid "" msgid ""
"``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или " "``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или "
"``DynamicDividingLine``)." "``DynamicDividingLine``)."
@@ -78,7 +78,7 @@ msgstr ""
"``dividing_line``: Type of dividing line (``StaticDividingLine`` or " "``dividing_line``: Type of dividing line (``StaticDividingLine`` or "
"``DynamicDividingLine``)." "``DynamicDividingLine``)."
#: ../../root/api/app/index.rst:45 #: ../../root/api/app/index.rst:39
msgid "" msgid ""
"``repeat_command_groups_printing``: Если ``True``, список доступных " "``repeat_command_groups_printing``: Если ``True``, список доступных "
"команд выводится перед каждым вводом." "команд выводится перед каждым вводом."
@@ -86,7 +86,7 @@ msgstr ""
"``repeat_command_groups_printing``: If ``True``, the list of available " "``repeat_command_groups_printing``: If ``True``, the list of available "
"commands is displayed before each input." "commands is displayed before each input."
#: ../../root/api/app/index.rst:46 #: ../../root/api/app/index.rst:40
msgid "" msgid ""
"``override_system_messages``: Если ``True``, стандартное форматирование " "``override_system_messages``: Если ``True``, стандартное форматирование "
"(цвета, ASCII-арт) отключается." "(цвета, ASCII-арт) отключается."
@@ -94,7 +94,7 @@ msgstr ""
"``override_system_messages``: If ``True``, standard formatting (colors, " "``override_system_messages``: If ``True``, standard formatting (colors, "
"ASCII art) is disabled." "ASCII art) is disabled."
#: ../../root/api/app/index.rst:47 #: ../../root/api/app/index.rst:41
msgid "" msgid ""
"``autocompleter``: Экземпляр класса :ref:`AutoCompleter " "``autocompleter``: Экземпляр класса :ref:`AutoCompleter "
"<root_api_app_autocompleter>`, отвечающий за автодополнение команд." "<root_api_app_autocompleter>`, отвечающий за автодополнение команд."
@@ -103,29 +103,28 @@ msgstr ""
"<root_api_app_autocompleter>` class responsible for command " "<root_api_app_autocompleter>` class responsible for command "
"autocompletion." "autocompletion."
#: ../../root/api/app/index.rst:48 #: ../../root/api/app/index.rst:42
msgid "" #, fuzzy
"``print_func``: Функция для вывода всех системных сообщений (по умолчанию" msgid "``printer``: Функция для вывода всех системных сообщений."
" ``rich.Console().print``)."
msgstr "" msgstr ""
"``print_func``: Function for outputting all system messages (defaults to " "``print_func``: Function for outputting all system messages (defaults to "
"``rich.Console().print``)." "``rich.Console().print``)."
#: ../../root/api/app/index.rst:53 #: ../../root/api/app/index.rst:47
msgid "" msgid ""
"В приложениях на Argenta регистр вводимых команд не важен, проверка на " "В приложениях на Argenta регистр вводимых команд не важен, проверка на "
"существование и роутинг команд производится на основании триггеров, " "существование и роутинг команд производится на основании триггеров, "
"приведённых к нижнему регистру." "приведённых к нижнему регистру."
msgstr "" msgstr ""
"In applications on Argenta, the case of the entered commands is not important, checking for the " "In applications on Argenta, the case of the entered commands is not "
" existence and routing of commands is performed based on triggers " "important, checking for the existence and routing of commands is "
"reduced to lowercase." "performed based on triggers reduced to lowercase."
#: ../../root/api/app/index.rst:56 #: ../../root/api/app/index.rst:50
msgid "Основные методы" msgid "Основные методы"
msgstr "Main Methods" msgstr "Main Methods"
#: ../../root/api/app/index.rst:60 #: ../../root/api/app/index.rst:54
msgid "" msgid ""
"Регистрирует роутер в приложении. Все команды из этого роутера становятся" "Регистрирует роутер в приложении. Все команды из этого роутера становятся"
" доступными для вызова." " доступными для вызова."
@@ -137,19 +136,19 @@ msgstr ""
msgid "Parameters" msgid "Parameters"
msgstr "Parameters" msgstr "Parameters"
#: ../../root/api/app/index.rst:62 #: ../../root/api/app/index.rst:56
msgid "Экземпляр ``Router`` для регистрации." msgid "Экземпляр ``Router`` для регистрации."
msgstr "``Router`` instance to register." msgstr "``Router`` instance to register."
#: ../../root/api/app/index.rst:66 #: ../../root/api/app/index.rst:60
msgid "Регистрирует несколько роутеров одновременно." msgid "Регистрирует несколько роутеров одновременно."
msgstr "Registers multiple routers simultaneously." msgstr "Registers multiple routers simultaneously."
#: ../../root/api/app/index.rst:68 #: ../../root/api/app/index.rst:62
msgid "Последовательность экземпляров ``Router`` для регистрации." msgid "Последовательность экземпляров ``Router`` для регистрации."
msgstr "Sequence of ``Router`` instances to register." msgstr "Sequence of ``Router`` instances to register."
#: ../../root/api/app/index.rst:72 #: ../../root/api/app/index.rst:66
msgid "" msgid ""
"Добавляет текстовое сообщение, которое выводится при запуске приложения " "Добавляет текстовое сообщение, которое выводится при запуске приложения "
"после ``initial_message``." "после ``initial_message``."
@@ -157,11 +156,11 @@ msgstr ""
"Adds a text message that is displayed when the application starts after " "Adds a text message that is displayed when the application starts after "
"``initial_message``." "``initial_message``."
#: ../../root/api/app/index.rst:74 #: ../../root/api/app/index.rst:68
msgid "Строка с сообщением." msgid "Строка с сообщением."
msgstr "String with the message." msgstr "String with the message."
#: ../../root/api/app/index.rst:77 #: ../../root/api/app/index.rst:71
msgid "" msgid ""
"Для вывода стандартных сообщений можно использовать готовые шаблоны из " "Для вывода стандартных сообщений можно использовать готовые шаблоны из "
":ref:`PredefinedMessages <root_api_predefined_messages>`." ":ref:`PredefinedMessages <root_api_predefined_messages>`."
@@ -169,11 +168,11 @@ msgstr ""
"For outputting standard messages, you can use ready-made templates from " "For outputting standard messages, you can use ready-made templates from "
":ref:`PredefinedMessages <root_api_predefined_messages>`." ":ref:`PredefinedMessages <root_api_predefined_messages>`."
#: ../../root/api/app/index.rst:82 #: ../../root/api/app/index.rst:76
msgid "Методы установки обработчиков" msgid "Методы установки обработчиков"
msgstr "Handler Setup Methods" msgstr "Handler Setup Methods"
#: ../../root/api/app/index.rst:84 #: ../../root/api/app/index.rst:78
msgid "" msgid ""
"``App`` позволяет настраивать реакцию на различные события, такие как " "``App`` позволяет настраивать реакцию на различные события, такие как "
"ошибки ввода или неизвестные команды." "ошибки ввода или неизвестные команды."
@@ -181,7 +180,7 @@ msgstr ""
"``App`` allows you to configure responses to various events, such as " "``App`` allows you to configure responses to various events, such as "
"input errors or unknown commands." "input errors or unknown commands."
#: ../../root/api/app/index.rst:87 #: ../../root/api/app/index.rst:81
msgid "" msgid ""
"Подробнее об исключениях и их обработке в соответствующем :ref:`разделе " "Подробнее об исключениях и их обработке в соответствующем :ref:`разделе "
"документации <root_error_handling>`." "документации <root_error_handling>`."
@@ -189,59 +188,59 @@ msgstr ""
"For more details on exceptions and their handling, see the corresponding " "For more details on exceptions and their handling, see the corresponding "
":ref:`documentation section <root_error_handling>`." ":ref:`documentation section <root_error_handling>`."
#: ../../root/api/app/index.rst:93 #: ../../root/api/app/index.rst:87
msgid "Устанавливает шаблон для форматирования описания команды." msgid "Устанавливает шаблон для форматирования описания команды."
msgstr "Sets the template for formatting command descriptions." msgstr "Sets the template for formatting command descriptions."
#: ../../root/api/app/index.rst:95 #: ../../root/api/app/index.rst:89
msgid "Обработчик принимает триггер команды (``str``) и её описание (``str``)." msgid "Обработчик принимает триггер команды (``str``) и её описание (``str``)."
msgstr "" msgstr ""
"The handler accepts the command trigger (``str``) and its description " "The handler accepts the command trigger (``str``) and its description "
"(``str``)." "(``str``)."
#: ../../root/api/app/index.rst:101 #: ../../root/api/app/index.rst:95
msgid "Устанавливает обработчик при некорректном введённом синтаксисе флагов." msgid "Устанавливает обработчик при некорректном введённом синтаксисе флагов."
msgstr "Sets the handler for incorrect flag syntax input." msgstr "Sets the handler for incorrect flag syntax input."
#: ../../root/api/app/index.rst:103 ../../root/api/app/index.rst:111 #: ../../root/api/app/index.rst:97 ../../root/api/app/index.rst:105
msgid "Обработчик принимает строку, введённую пользователем." msgid "Обработчик принимает строку, введённую пользователем."
msgstr "The handler accepts the string entered by the user." msgstr "The handler accepts the string entered by the user."
#: ../../root/api/app/index.rst:109 #: ../../root/api/app/index.rst:103
msgid "Устанавливает обработчик при повторяющихся флагах в введённой команде." msgid "Устанавливает обработчик при повторяющихся флагах в введённой команде."
msgstr "Sets the handler for duplicate flags in the entered command." msgstr "Sets the handler for duplicate flags in the entered command."
#: ../../root/api/app/index.rst:117 #: ../../root/api/app/index.rst:111
msgid "Устанавливает обработчик при вводе неизвестной команды." msgid "Устанавливает обработчик при вводе неизвестной команды."
msgstr "Sets the handler for entering an unknown command." msgstr "Sets the handler for entering an unknown command."
#: ../../root/api/app/index.rst:119 #: ../../root/api/app/index.rst:113
msgid "Обработчик принимает объект ``InputCommand`` - объект введённой команды." msgid "Обработчик принимает объект ``InputCommand`` - объект введённой команды."
msgstr "" msgstr ""
"The handler accepts an ``InputCommand`` object - the entered command " "The handler accepts an ``InputCommand`` object - the entered command "
"object." "object."
#: ../../root/api/app/index.rst:125 #: ../../root/api/app/index.rst:119
msgid "Устанавливает обработчик при вводе пустой строки." msgid "Устанавливает обработчик при вводе пустой строки."
msgstr "Sets the handler for entering an empty string." msgstr "Sets the handler for entering an empty string."
#: ../../root/api/app/index.rst:127 #: ../../root/api/app/index.rst:121
msgid "Обработчик не принимает аргументов." msgid "Обработчик не принимает аргументов."
msgstr "The handler accepts no arguments." msgstr "The handler accepts no arguments."
#: ../../root/api/app/index.rst:133 #: ../../root/api/app/index.rst:127
msgid "Переопределяет стандартное поведение при вызове команды выхода." msgid "Переопределяет стандартное поведение при вызове команды выхода."
msgstr "Overrides the default behavior when the exit command is invoked." msgstr "Overrides the default behavior when the exit command is invoked."
#: ../../root/api/app/index.rst:135 #: ../../root/api/app/index.rst:129
msgid "Обработчик принимает объект ``Response``." msgid "Обработчик принимает объект ``Response``."
msgstr "The handler accepts a ``Response`` object." msgstr "The handler accepts a ``Response`` object."
#: ../../root/api/app/index.rst:148 #: ../../root/api/app/index.rst:142
msgid "PredefinedMessages" msgid "PredefinedMessages"
msgstr "PredefinedMessages" msgstr "PredefinedMessages"
#: ../../root/api/app/index.rst:150 #: ../../root/api/app/index.rst:144
msgid "" msgid ""
"``PredefinedMessages`` — это контейнер, содержащий набор готовых к " "``PredefinedMessages`` — это контейнер, содержащий набор готовых к "
"использованию сообщений. Они отформатированы с использованием синтаксиса " "использованию сообщений. Они отформатированы с использованием синтаксиса "
@@ -252,31 +251,31 @@ msgstr ""
"messages. They are formatted using ``rich`` syntax and are intended for " "messages. They are formatted using ``rich`` syntax and are intended for "
"displaying standard information, such as usage hints." "displaying standard information, such as usage hints."
#: ../../root/api/app/index.rst:152 #: ../../root/api/app/index.rst:146
msgid "Рекомендуется использовать их при старте приложения." msgid "Рекомендуется использовать их при старте приложения."
msgstr "It is recommended to use them when starting the application." msgstr "It is recommended to use them when starting the application."
#: ../../root/api/app/index.rst:179 #: ../../root/api/app/index.rst:173
msgid "Строка: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``" msgid "Строка: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``"
msgstr "String: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``" msgstr "String: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``"
#: ../../root/api/app/index.rst:181 #: ../../root/api/app/index.rst:175
msgid "Отображается как: ``Usage: <command> <flags>``" msgid "Отображается как: ``Usage: <command> <flags>``"
msgstr "Displayed as: ``Usage: <command> <flags>``" msgstr "Displayed as: ``Usage: <command> <flags>``"
#: ../../root/api/app/index.rst:185 #: ../../root/api/app/index.rst:179
msgid "Строка: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``" msgid "Строка: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``"
msgstr "String: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``" msgstr "String: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``"
#: ../../root/api/app/index.rst:187 #: ../../root/api/app/index.rst:181
msgid "Отображается как: ``Help: <command> --help``" msgid "Отображается как: ``Help: <command> --help``"
msgstr "Displayed as: ``Help: <command> --help``" msgstr "Displayed as: ``Help: <command> --help``"
#: ../../root/api/app/index.rst:191 #: ../../root/api/app/index.rst:185
msgid "Строка: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``" msgid "Строка: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``"
msgstr "String: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``" msgstr "String: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``"
#: ../../root/api/app/index.rst:193 #: ../../root/api/app/index.rst:187
msgid "Отображается как: ``Autocomplete: <part> <tab>``" msgid "Отображается как: ``Autocomplete: <part> <tab>``"
msgstr "Displayed as: ``Autocomplete: <part> <tab>``" msgstr "Displayed as: ``Autocomplete: <part> <tab>``"
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:29+0300\n" "POT-Creation-Date: 2026-02-06 23:44+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -30,10 +30,11 @@ msgid ""
"позволяет получать внешнюю конфигурацию в момент старта (например, путь к" "позволяет получать внешнюю конфигурацию в момент старта (например, путь к"
" файлу настроек, флаги отладки или режим запуска)." " файлу настроек, флаги отладки или режим запуска)."
msgstr "" msgstr ""
"``ArgParser`` is designed for processing **command-line arguments** passed to the " "``ArgParser`` is designed for processing **command-line arguments** "
"application at startup. It's important not to confuse them with flags that the user " "passed to the application at startup. It's important not to confuse them "
"enters in interactive mode. ``ArgParser`` allows receiving external configuration at " "with flags that the user enters in interactive mode. ``ArgParser`` allows"
"startup (e.g., path to settings file, debug flags, or launch mode)." " receiving external configuration at startup (e.g., path to settings "
"file, debug flags, or launch mode)."
#: ../../root/api/orchestrator/argparser.rst:11 #: ../../root/api/orchestrator/argparser.rst:11
msgid "Инициализация" msgid "Инициализация"
@@ -81,8 +82,9 @@ msgid ""
"экземпляр ``ArgParser``, атрибут ``parsed_argspace`` будет содержать " "экземпляр ``ArgParser``, атрибут ``parsed_argspace`` будет содержать "
"пустой ``ArgSpace``." "пустой ``ArgSpace``."
msgstr "" msgstr ""
"Before initializing ``Orchestrator``, to whose constructor an ``ArgParser`` instance " "Before initializing ``Orchestrator``, to whose constructor an "
"was passed, the ``parsed_argspace`` attribute will contain an empty ``ArgSpace``." "``ArgParser`` instance was passed, the ``parsed_argspace`` attribute will"
" contain an empty ``ArgSpace``."
#: ../../root/api/orchestrator/argparser.rst:40 #: ../../root/api/orchestrator/argparser.rst:40
msgid "" msgid ""
@@ -90,8 +92,9 @@ msgid ""
"``Orchestrator``, поэтому использовать ``parsed_argspace`` " "``Orchestrator``, поэтому использовать ``parsed_argspace`` "
"**целесообразно только после** этого." "**целесообразно только после** этого."
msgstr "" msgstr ""
"Parsing and validation of arguments occur during ``Orchestrator`` initialization, " "Parsing and validation of arguments occur during ``Orchestrator`` "
"so using ``parsed_argspace`` is **advisable only after** that." "initialization, so using ``parsed_argspace`` is **advisable only after** "
"that."
#: ../../root/api/orchestrator/argparser.rst:45 #: ../../root/api/orchestrator/argparser.rst:45
msgid "Лучшие практики" msgid "Лучшие практики"
@@ -104,9 +107,10 @@ msgid ""
"``ArgSpace`` через DI. Подробнее см. :ref:`здесь " "``ArgSpace`` через DI. Подробнее см. :ref:`здесь "
"<root_dependency_injection>`." "<root_dependency_injection>`."
msgstr "" msgstr ""
"Using the ``parsed_argspace`` attribute is recommended only during the application " "Using the ``parsed_argspace`` attribute is recommended only during the "
"setup phase. In handlers, the best practice is to obtain ``ArgSpace`` through DI. " "application setup phase. In handlers, the best practice is to obtain "
"For more details, see :ref:`here <root_dependency_injection>`." "``ArgSpace`` through DI. For more details, see :ref:`here "
"<root_dependency_injection>`."
#: ../../root/api/orchestrator/argparser.rst:49 #: ../../root/api/orchestrator/argparser.rst:49
msgid "**Пример использования:**" msgid "**Пример использования:**"
@@ -129,8 +133,8 @@ msgid ""
"При работе с аргументами командной строки стандартный ``ArgumentParser`` " "При работе с аргументами командной строки стандартный ``ArgumentParser`` "
"автоматически обрабатывает следующие ситуации:" "автоматически обрабатывает следующие ситуации:"
msgstr "" msgstr ""
"When working with command-line arguments, the standard ``ArgumentParser`` " "When working with command-line arguments, the standard ``ArgumentParser``"
"automatically handles the following situations:" " automatically handles the following situations:"
#: ../../root/api/orchestrator/argparser.rst:63 #: ../../root/api/orchestrator/argparser.rst:63
msgid "**Отсутствие обязательного аргумента:**" msgid "**Отсутствие обязательного аргумента:**"
@@ -149,6 +153,12 @@ msgid ""
"При использовании аргумента с ``is_deprecated=True`` выводится " "При использовании аргумента с ``is_deprecated=True`` выводится "
"предупреждение, но выполнение продолжается:" "предупреждение, но выполнение продолжается:"
msgstr "" msgstr ""
"When using an argument with ``is_deprecated=True``, a warning is displayed, " "When using an argument with ``is_deprecated=True``, a warning is "
"but execution continues:" "displayed, but execution continues:"
#: ../../root/api/orchestrator/argparser.rst:90
msgid ""
"Параметр поддерживается начиная с версии CPython 3.13, если версия ниже, "
"то параметр будет игнорироваться."
msgstr ""
+293
View File
@@ -0,0 +1,293 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2025, kolo
# This file is distributed under the same license as the Argenta package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-02-06 23:44+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
"Language-Team: en <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.17.0\n"
#: ../../root/metrics.rst:2
msgid "Метрики"
msgstr "Metrics"
#: ../../root/metrics.rst:4
msgid ""
"Система метрик ``Argenta`` предоставляет инструменты для измерения "
"производительности ключевых компонентов библиотеки. Это позволяет "
"отслеживать регрессию/прогрессию производительности между релизами и "
"оптимизировать критические участки кода."
msgstr ""
"The ``Argenta`` metrics system provides tools for measuring the performance "
"of key library components. This allows tracking performance regression/progression "
"between releases and optimizing critical code sections."
#: ../../root/metrics.rst:9
msgid "Запуск метрик"
msgstr "Running Metrics"
#: ../../root/metrics.rst:11
msgid ""
"Для работы с метриками необходимо склонировать репозиторий и установить "
"зависимости:"
msgstr ""
"To work with metrics, you need to clone the repository and install "
"dependencies:"
#: ../../root/metrics.rst:19
msgid "Запуск системы метрик:"
msgstr "Running the metrics system:"
#: ../../root/metrics.rst:25
msgid ""
"После запуска откроется интерактивная сессия с доступными командами для "
"работы с бенчмарками."
msgstr ""
"After launch, an interactive session will open with available commands for "
"working with benchmarks."
#: ../../root/metrics.rst:30
msgid "Доступные команды"
msgstr "Available Commands"
#: ../../root/metrics.rst:33
msgid "run-all"
msgstr "run-all"
#: ../../root/metrics.rst:35
msgid ""
"Запускает все зарегистрированные бенчмарки и выводит результаты в виде "
"таблиц."
msgstr ""
"Runs all registered benchmarks and outputs results as tables."
#: ../../root/metrics.rst:37 ../../root/metrics.rst:55
#: ../../root/metrics.rst:78 ../../root/metrics.rst:97
#: ../../root/metrics.rst:117
msgid "**Синтаксис:**"
msgstr "**Syntax:**"
#: ../../root/metrics.rst:43 ../../root/metrics.rst:84
#: ../../root/metrics.rst:103
msgid "**Флаги:**"
msgstr "**Flags:**"
#: ../../root/metrics.rst:45
msgid ""
"``--without-gc`` — отключает сборщик мусора во время выполнения "
"бенчмарков для более стабильных результатов"
msgstr ""
"``--without-gc`` — disables garbage collector during benchmark execution "
"for more stable results"
#: ../../root/metrics.rst:46
msgid "``--without-system-info`` — скрывает информацию о системе в выводе"
msgstr "``--without-system-info`` — hides system information in output"
#: ../../root/metrics.rst:51
msgid "list-types"
msgstr "list-types"
#: ../../root/metrics.rst:53
msgid ""
"Выводит список всех доступных типов бенчмарков с количеством тестов в "
"каждой категории."
msgstr ""
"Displays a list of all available benchmark types with the number of tests "
"in each category."
#: ../../root/metrics.rst:61
msgid "**Пример вывода:**"
msgstr "**Example output:**"
#: ../../root/metrics.rst:74
msgid "run-type"
msgstr "run-type"
#: ../../root/metrics.rst:76
msgid "Запускает бенчмарки определённого типа."
msgstr "Runs benchmarks of a specific type."
#: ../../root/metrics.rst:86
msgid "``--type`` — тип бенчмарков для запуска (обязательный)"
msgstr "``--type`` — benchmark type to run (required)"
#: ../../root/metrics.rst:87 ../../root/metrics.rst:106
msgid "``--without-gc`` — отключает сборщик мусора"
msgstr "``--without-gc`` — disables garbage collector"
#: ../../root/metrics.rst:88
msgid "``--without-system-info`` — скрывает информацию о системе"
msgstr "``--without-system-info`` — hides system information"
#: ../../root/metrics.rst:93
msgid "diagrams-generate"
msgstr "diagrams-generate"
#: ../../root/metrics.rst:95
msgid ""
"Генерирует визуальные диаграммы сравнения производительности для всех "
"бенчмарков."
msgstr ""
"Generates visual performance comparison diagrams for all benchmarks."
#: ../../root/metrics.rst:105
msgid ""
"``--iterations`` — количество итераций для каждого бенчмарка (по "
"умолчанию 100)"
msgstr ""
"``--iterations`` — number of iterations for each benchmark (default 100)"
#: ../../root/metrics.rst:108
msgid ""
"Диаграммы сохраняются в директорию "
"``metrics/reports/diagrams/<timestamp>/``."
msgstr ""
"Diagrams are saved to the ``metrics/reports/diagrams/<timestamp>/`` directory."
#: ../../root/metrics.rst:113
msgid "release-generate"
msgstr "release-generate"
#: ../../root/metrics.rst:115
msgid ""
"Генерирует полный отчёт о производительности для текущей версии "
"библиотеки. Используется при подготовке релизов."
msgstr ""
"Generates a complete performance report for the current library version. "
"Used when preparing releases."
#: ../../root/metrics.rst:123
msgid "Команда автоматически:"
msgstr "The command automatically:"
#: ../../root/metrics.rst:125
msgid "Определяет текущую версию библиотеки"
msgstr "Determines the current library version"
#: ../../root/metrics.rst:126
msgid "Запускает все бенчмарки с 1000 итераций и отключённым GC"
msgstr "Runs all benchmarks with 1000 iterations and disabled GC"
#: ../../root/metrics.rst:127
msgid "Генерирует JSON-отчёты и диаграммы сравнения"
msgstr "Generates JSON reports and comparison diagrams"
#: ../../root/metrics.rst:128
msgid "Сохраняет результаты в ``metrics/reports/releases/<version>/``"
msgstr "Saves results to ``metrics/reports/releases/<version>/``"
#: ../../root/metrics.rst:133
msgid "Интерпретация результатов"
msgstr "Interpreting Results"
#: ../../root/metrics.rst:135
msgid "Результаты бенчмарков включают следующие метрики:"
msgstr "Benchmark results include the following metrics:"
#: ../../root/metrics.rst:137
msgid "**Среднее время (mean)**"
msgstr "**Mean time (mean)**"
#: ../../root/metrics.rst:138
msgid ""
"Среднее время выполнения операции. Основная метрика для сравнения "
"производительности."
msgstr ""
"Average operation execution time. The primary metric for performance comparison."
#: ../../root/metrics.rst:140
msgid "**Медиана (median)**"
msgstr "**Median (median)**"
#: ../../root/metrics.rst:141
msgid ""
"Медианное значение времени выполнения. Менее чувствительна к выбросам, "
"чем среднее."
msgstr ""
"Median execution time value. Less sensitive to outliers than the mean."
#: ../../root/metrics.rst:143
msgid "**Стандартное отклонение (std)**"
msgstr "**Standard deviation (std)**"
#: ../../root/metrics.rst:144
msgid ""
"Показывает стабильность измерений. Меньшее значение означает более "
"предсказуемую производительность."
msgstr ""
"Shows measurement stability. A lower value means more predictable performance."
#: ../../root/metrics.rst:149
msgid "Рекомендации по использованию"
msgstr "Usage Recommendations"
#: ../../root/metrics.rst:151
msgid "**Для оптимизации**"
msgstr "**For optimization**"
#: ../../root/metrics.rst:152
msgid ""
"Используйте ``run-type`` для фокусировки на конкретной области и "
"``--without-gc`` для более точных измерений."
msgstr ""
"Use ``run-type`` to focus on a specific area and ``--without-gc`` for more "
"accurate measurements."
#: ../../root/metrics.rst:154
msgid "**Для визуализации**"
msgstr "**For visualization**"
#: ../../root/metrics.rst:155
msgid ""
"Команда ``diagrams-generate`` создаёт наглядные графики, удобные для "
"презентаций и документации."
msgstr ""
"The ``diagrams-generate`` command creates clear charts suitable for "
"presentations and documentation."
#: ../../root/metrics.rst:157
msgid "**Для стабильных результатов**"
msgstr "**For stable results**"
#: ../../root/metrics.rst:158
msgid ""
"Закройте ресурсоёмкие приложения, используйте флаг ``--without-gc`` и "
"увеличивайте количество итераций через ``--iterations``."
msgstr ""
"Close resource-intensive applications, use the ``--without-gc`` flag, and "
"increase the number of iterations via ``--iterations``."
#: ../../root/metrics.rst:163
msgid "Добавление новых бенчмарков"
msgstr "Adding New Benchmarks"
#: ../../root/metrics.rst:165
msgid ""
"Вы можете реализовать свои бенчмарки для тестирования специфичных юнитов "
"библиотеки. Новые бенчмарки добавляются через декоратор "
"``@benchmarks.register``:"
msgstr ""
"You can implement your own benchmarks to test specific library units. "
"New benchmarks are added via the ``@benchmarks.register`` decorator:"
#: ../../root/metrics.rst:173
msgid ""
"Бенчмарк должен быть импортирован в ``metrics/benchmarks/__init__.py`` "
"для автоматической регистрации."
msgstr ""
"The benchmark must be imported in ``metrics/benchmarks/__init__.py`` for "
"automatic registration."
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-04 20:39+0300\n" "POT-Creation-Date: 2026-02-06 23:44+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -90,20 +90,20 @@ msgstr "Output Customization"
#: ../../root/overriding_formatting.rst:32 #: ../../root/overriding_formatting.rst:32
msgid "" msgid ""
"Для полной замены логики вывода текста в конструкторе ``App`` " "Для полной замены логики вывода текста в конструкторе ``App`` "
"предусмотрен параметр ``print_func``." "предусмотрен параметр ``printer``."
msgstr "" msgstr ""
"For complete replacement of text output logic, the ``App`` constructor " "For complete replacement of text output logic, the ``App`` constructor "
"provides the ``print_func`` parameter." "provides the ``printer`` parameter."
#: ../../root/overriding_formatting.rst:34 #: ../../root/overriding_formatting.rst:34
msgid "" msgid ""
"**print_func**: ``Callable[[str], None]`` Этот параметр позволяет " "**printer**: ``Callable[[str], None]`` Этот параметр позволяет передать "
"передать любую вызываемую сущность (например, функцию), которая будет " "любую вызываемую сущность (например, функцию), которая будет "
"использоваться для вывода всех системных сообщений. По умолчанию это " "использоваться для вывода всех системных сообщений. По умолчанию это "
"``rich.console.Console().print``. Вы можете передать сюда свою функцию, " "``rich.console.Console().print``. Вы можете передать сюда свою функцию, "
"чтобы, например, логировать вывод в файл или отправлять его по сети." "чтобы, например, логировать вывод в файл или отправлять его по сети."
msgstr "" msgstr ""
"**print_func**: ``Callable[[str], None]`` This parameter allows passing " "**printer**: ``Callable[[str], None]`` This parameter allows passing "
"any callable entity (for example, a function) that will be used to output" "any callable entity (for example, a function) that will be used to output"
" all system messages. By default, this is " " all system messages. By default, this is "
"``rich.console.Console().print``. You can pass your own function here to," "``rich.console.Console().print``. You can pass your own function here to,"
+3 -11
View File
@@ -164,17 +164,9 @@ release-generate
Вы можете реализовать свои бенчмарки для тестирования специфичных юнитов библиотеки. Новые бенчмарки добавляются через декоратор ``@benchmarks.register``: Вы можете реализовать свои бенчмарки для тестирования специфичных юнитов библиотеки. Новые бенчмарки добавляются через декоратор ``@benchmarks.register``:
.. code-block:: python .. literalinclude:: ../code_snippets/metrics/add_new_benchmark.py
:language: python
from metrics.benchmarks.entity import benchmarks :linenos:
@benchmarks.register(
type_="my_category",
description="Description of what is being measured"
)
def benchmark_my_operation() -> None:
# Код, производительность которого измеряется
pass
.. important:: .. important::
+4 -3
View File
@@ -3,13 +3,14 @@ __all__ = ["AutoCompleter"]
import sys import sys
from typing import Callable, Iterable from typing import Callable, Iterable
from prompt_toolkit import PromptSession, HTML from prompt_toolkit import HTML, PromptSession
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import Completer, Completion, CompleteEvent, ThreadedCompleter from prompt_toolkit.completion import (CompleteEvent, Completer, Completion,
ThreadedCompleter)
from prompt_toolkit.cursor_shapes import CursorShape from prompt_toolkit.cursor_shapes import CursorShape
from prompt_toolkit.document import Document from prompt_toolkit.document import Document
from prompt_toolkit.formatted_text import StyleAndTextTuples from prompt_toolkit.formatted_text import StyleAndTextTuples
from prompt_toolkit.history import History, ThreadedHistory, FileHistory, InMemoryHistory from prompt_toolkit.history import FileHistory, History, InMemoryHistory, ThreadedHistory
from prompt_toolkit.key_binding import KeyBindings, KeyPressEvent from prompt_toolkit.key_binding import KeyBindings, KeyPressEvent
from prompt_toolkit.lexers import Lexer from prompt_toolkit.lexers import Lexer
from prompt_toolkit.styles import Style from prompt_toolkit.styles import Style
+4 -8
View File
@@ -1,15 +1,11 @@
from rich.markup import escape from rich.markup import escape
from argenta.response.entity import Response
from argenta.app.presentation.renderers import Renderer from argenta.app.presentation.renderers import Renderer
from argenta.app.protocols import ( from argenta.app.protocols import (DescriptionMessageGenerator, EmptyCommandHandler,
NonStandardBehaviorHandler, MostSimilarCommandGetter, NonStandardBehaviorHandler,
EmptyCommandHandler, Printer)
Printer,
MostSimilarCommandGetter,
DescriptionMessageGenerator,
)
from argenta.command import InputCommand from argenta.command import InputCommand
from argenta.response.entity import Response
class BehaviorHandlersFabric: class BehaviorHandlersFabric:
+9 -13
View File
@@ -1,30 +1,26 @@
__all__ = ["App"] __all__ = ["App"]
from typing import Never, TypeAlias
import difflib import difflib
from typing import Never, TypeAlias
from rich.console import Console from rich.console import Console
from argenta.app.autocompleter import AutoCompleter from argenta.app.autocompleter import AutoCompleter
from argenta.app.behavior_handlers.models import ( from argenta.app.behavior_handlers.models import (BehaviorHandlersFabric,
BehaviorHandlersFabric, BehaviorHandlersSettersMixin)
BehaviorHandlersSettersMixin,
)
from argenta.app.presentation.renderers import PlainRenderer, RichRenderer, Renderer
from argenta.app.dividing_line.models import DynamicDividingLine, StaticDividingLine from argenta.app.dividing_line.models import DynamicDividingLine, StaticDividingLine
from argenta.app.presentation.renderers import PlainRenderer, Renderer, RichRenderer
from argenta.app.presentation.viewers import Viewer from argenta.app.presentation.viewers import Viewer
from argenta.app.protocols import Printer from argenta.app.protocols import Printer
from argenta.app.registered_routers.entity import RegisteredRouters from argenta.app.registered_routers.entity import RegisteredRouters
from argenta.command.exceptions import ( from argenta.command.exceptions import (InputCommandException,
InputCommandException, RepeatedInputFlagsException,
RepeatedInputFlagsException, UnprocessedInputFlagException)
UnprocessedInputFlagException,
)
from argenta.router.exceptions import RepeatedAliasNameException, RepeatedTriggerNameException
from argenta.command.models import Command, InputCommand from argenta.command.models import Command, InputCommand
from argenta.response import Response from argenta.response import Response
from argenta.router import Router from argenta.router import Router
from argenta.router.exceptions import (RepeatedAliasNameException,
RepeatedTriggerNameException)
Matches: TypeAlias = list[str] | list[Never] Matches: TypeAlias = list[str] | list[Never]
+1 -1
View File
@@ -1,4 +1,4 @@
from .renderers import Renderer, RichRenderer, PlainRenderer from .renderers import PlainRenderer, Renderer, RichRenderer
from .viewers import Viewer from .viewers import Viewer
__all__ = ["Renderer", "RichRenderer", "PlainRenderer", "Viewer"] __all__ = ["Renderer", "RichRenderer", "PlainRenderer", "Viewer"]
+3 -4
View File
@@ -3,16 +3,15 @@ __all__ = ["Viewer"]
import re import re
from contextlib import redirect_stdout from contextlib import redirect_stdout
from io import StringIO from io import StringIO
from typing import Iterable, Callable, TypeAlias from typing import Callable, Iterable, TypeAlias
from rich.text import Text from rich.text import Text
from argenta.app import StaticDividingLine, DynamicDividingLine from argenta.app import DynamicDividingLine, StaticDividingLine
from argenta.app.presentation.renderers import Renderer from argenta.app.presentation.renderers import Renderer
from argenta.app.protocols import Printer, DescriptionMessageGenerator from argenta.app.protocols import DescriptionMessageGenerator, Printer
from argenta.app.registered_routers.entity import RegisteredRouters from argenta.app.registered_routers.entity import RegisteredRouters
AVAILABLE_DIVIDING_LINES: TypeAlias = StaticDividingLine | DynamicDividingLine | None AVAILABLE_DIVIDING_LINES: TypeAlias = StaticDividingLine | DynamicDividingLine | None
+2 -1
View File
@@ -1,7 +1,8 @@
from argenta.command.flag import Flag as Flag from argenta.command.flag import Flag as Flag
from argenta.command.flag.models import Flags as Flags, InputFlags as InputFlags
from argenta.command.flag import InputFlag as InputFlag from argenta.command.flag import InputFlag as InputFlag
from argenta.command.flag import PossibleValues as PossibleValues from argenta.command.flag import PossibleValues as PossibleValues
from argenta.command.flag.defaults import PredefinedFlags as PredefinedFlags from argenta.command.flag.defaults import PredefinedFlags as PredefinedFlags
from argenta.command.flag.models import Flags as Flags
from argenta.command.flag.models import InputFlags as InputFlags
from argenta.command.models import Command as Command from argenta.command.models import Command as Command
from argenta.command.models import InputCommand as InputCommand from argenta.command.models import InputCommand as InputCommand
+2 -1
View File
@@ -1,5 +1,6 @@
from argenta.command.flag.models import Flags as Flags, InputFlags as InputFlags
from argenta.command.flag.models import Flag as Flag from argenta.command.flag.models import Flag as Flag
from argenta.command.flag.models import Flags as Flags
from argenta.command.flag.models import InputFlag as InputFlag from argenta.command.flag.models import InputFlag as InputFlag
from argenta.command.flag.models import InputFlags as InputFlags
from argenta.command.flag.models import PossibleValues as PossibleValues from argenta.command.flag.models import PossibleValues as PossibleValues
from argenta.command.flag.models import ValidationStatus as ValidationStatus from argenta.command.flag.models import ValidationStatus as ValidationStatus
+1 -1
View File
@@ -2,7 +2,7 @@ __all__ = ["PossibleValues", "ValidationStatus", "Flag", "InputFlag", "InputFlag
from enum import Enum from enum import Enum
from re import Pattern from re import Pattern
from typing import Literal, override, TypeVar, Generic, Iterator, Any, Container from typing import Any, Container, Generic, Iterator, Literal, TypeVar, override
PREFIX_TYPE = Literal["-", "--", "---"] PREFIX_TYPE = Literal["-", "--", "---"]
+4 -6
View File
@@ -1,14 +1,12 @@
__all__ = ["Command", "InputCommand"] __all__ = ["Command", "InputCommand"]
import shlex import shlex
from typing import Literal, Never, Self, cast, Iterable from typing import Iterable, Literal, Never, Self, cast
from argenta.command.exceptions import (
EmptyInputCommandException,
RepeatedInputFlagsException,
UnprocessedInputFlagException,
)
from argenta.command import Flags, InputFlags from argenta.command import Flags, InputFlags
from argenta.command.exceptions import (EmptyInputCommandException,
RepeatedInputFlagsException,
UnprocessedInputFlagException)
from argenta.command.flag.models import Flag, InputFlag, ValidationStatus from argenta.command.flag.models import Flag, InputFlag, ValidationStatus
ParseFlagsResult = tuple[InputFlags, str | None, str | None] ParseFlagsResult = tuple[InputFlags, str | None, str | None]