This commit is contained in:
2025-11-03 12:18:56 +03:00
parent f0a18e89c8
commit 02b02793d0
7 changed files with 102 additions and 34 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ default:
# Build all language versions
build-all:
{{sphinxbuild}} -b html -D language=ru {{sourcedir}} {{builddir}}/html/ru
{{sphinxbuild}} -b html -D language=en {{sourcedir}} {{builddir}}/html/en
{{sphinxbuild}} -b html -D language =en {{sourcedir}} {{builddir}}/html/en
# Live preview for Russian version
live-ru:
+1 -1
View File
@@ -3,7 +3,7 @@
Response
========
`Response` — это объект, который передаётся в обработчик команды. Он создаётся автоматически при обработке пользовательского ввода и содержит статус валидации, введённые флаги, а также предоставляет механизм для обмена данными между обработчиками.
`Response` — это объект, который передаётся в обработчик команды. Он создаётся автоматически при обработке пользовательского ввода и содержит статус валидации, введённые флаги.
.. seealso::
+12
View File
@@ -12,6 +12,18 @@
По умолчанию ``Argenta`` перехватывает весь текст, выводимый в ``stdout`` внутри обработчика команды. Это необходимо для реализации **динамических разделителей**: система анализирует вывод, находит самую длинную строку и использует её для отрисовки верхней и нижней границ. Такой подход создаёт аккуратный интерфейс, где вывод команды «обёрнут» в рамку, подогнанную под его содержимое.
Пример приложения с динамической разделительной линией:
.. image:: https://i.ibb.co/ZptzLJ1n/2025-11-03-121308.png
:alt: Пример приложения с динамической разделительной линией
Как вы можете заметить разделительная линия ровно той же длины, что и самая длинная строка в выводе.
То же приложение с статической линией:
.. image:: https://i.ibb.co/YFGRY2c0/2025-11-03-121650.png
:alt: Пример приложения с статической разделительной линией
-----
Побочные эффекты перехвата ``stdout``
+3 -14
View File
@@ -1,23 +1,12 @@
from argenta import App, Orchestrator
from argenta.app import AutoCompleter, DynamicDividingLine, PredefinedMessages
from argenta.orchestrator import ArgParser
from argenta.orchestrator.argparser import BooleanArgument, ValueArgument
from argenta.app import PredefinedMessages, StaticDividingLine
from mock.mock_app.routers import work_router
arg_parser: ArgParser = ArgParser(
processed_args=[
BooleanArgument(name="repeat", is_deprecated=True),
ValueArgument(name="required", is_required=True),
]
)
print(arg_parser.parsed_argspace.all_arguments)
app: App = App(
dividing_line=DynamicDividingLine(),
autocompleter=AutoCompleter(history_filename="history.txt")
dividing_line=StaticDividingLine(),
)
orchestrator: Orchestrator = Orchestrator(arg_parser)
print(arg_parser.parsed_argspace.all_arguments)
orchestrator: Orchestrator = Orchestrator()
def main():
+5 -18
View File
@@ -1,21 +1,8 @@
from dishka import FromDishka
from argenta import Router, Response, Command
from argenta import Router
from argenta.command import Flag, PossibleValues
from argenta.orchestrator.argparser import ArgSpace
from argenta.response import Response
from argenta.router.defaults import system_router
work_router: Router = Router(title="Work points:")
flag = Flag("csdv", possible_values=PossibleValues.NEITHER)
work_router: Router = Router(title="Base points:")
@work_router.command("get")
def command_help(response: Response, argspace: FromDishka[ArgSpace]):
print(argspace.all_arguments)
@system_router.command("run")
def command_start_solving(response: Response):
print(response.get_data())
@work_router.command(Command('hello', description="Hello, world!"))
def command_help(response: Response):
print('Hello, world!')
+1
View File
@@ -23,6 +23,7 @@ typecheckers = [
"mypy>=1.14.1",
]
docs = [
"esbonio>=1.0.0",
"shibuya>=2025.9.25",
"sphinx>=8.2.3",
"sphinx-autobuild>=2025.8.25",
Generated
+79
View File
@@ -2,6 +2,18 @@ version = 1
revision = 3
requires-python = ">=3.11"
[[package]]
name = "aiosqlite"
version = "0.21.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/13/7d/8bca2bf9a247c2c5dfeec1d7a5f40db6518f88d314b8bca9da29670d2671/aiosqlite-0.21.0.tar.gz", hash = "sha256:131bb8056daa3bc875608c631c678cda73922a2d4ba8aec373b19f18c17e7aa3", size = 13454, upload-time = "2025-02-03T07:30:16.235Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f5/10/6c25ed6de94c49f88a91fa5018cb4c0f3625f31d5be9f771ebe5cc7cd506/aiosqlite-0.21.0-py3-none-any.whl", hash = "sha256:2549cf4057f95f53dcba16f2b64e8e2791d7e1adedb13197dd8ed77bb226d7d0", size = 15792, upload-time = "2025-02-03T07:30:13.6Z" },
]
[[package]]
name = "alabaster"
version = "1.0.0"
@@ -38,6 +50,7 @@ dependencies = [
[package.dev-dependencies]
docs = [
{ name = "esbonio" },
{ name = "shibuya" },
{ name = "sphinx" },
{ name = "sphinx-autobuild" },
@@ -68,6 +81,7 @@ requires-dist = [
[package.metadata.requires-dev]
docs = [
{ name = "esbonio", specifier = ">=1.0.0" },
{ name = "shibuya", specifier = ">=2025.9.25" },
{ name = "sphinx", specifier = ">=8.2.3" },
{ name = "sphinx-autobuild", specifier = ">=2025.8.25" },
@@ -113,6 +127,19 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" },
]
[[package]]
name = "cattrs"
version = "25.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e3/42/988b3a667967e9d2d32346e7ed7edee540ef1cee829b53ef80aa8d4a0222/cattrs-25.2.0.tar.gz", hash = "sha256:f46c918e955db0177be6aa559068390f71988e877c603ae2e56c71827165cc06", size = 506531, upload-time = "2025-08-31T20:41:59.301Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/20/a5/b3771ac30b590026b9d721187110194ade05bfbea3d98b423a9cafd80959/cattrs-25.2.0-py3-none-any.whl", hash = "sha256:539d7eedee7d2f0706e4e109182ad096d608ba84633c32c75ef3458f1d11e8f1", size = 70040, upload-time = "2025-08-31T20:41:57.543Z" },
]
[[package]]
name = "certifi"
version = "2025.10.5"
@@ -326,6 +353,22 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" },
]
[[package]]
name = "esbonio"
version = "1.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aiosqlite" },
{ name = "docutils" },
{ name = "platformdirs" },
{ name = "pygls" },
{ name = "websockets" },
]
sdist = { url = "https://files.pythonhosted.org/packages/b5/85/03b0944176b7eca5174959dc6f6606ddd87e054a91e8174a593eb8723e06/esbonio-1.0.0.tar.gz", hash = "sha256:9d1c3d3e074b3f7fe285147cd713fbda0290472864756772020aebf19f5935c0", size = 123653, upload-time = "2025-10-28T20:03:15.425Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/73/a6/e1368fc807e7abe7ca7ef224e9c13f96be7c943be364e6ff869e96d7e633/esbonio-1.0.0-py3-none-any.whl", hash = "sha256:049aa76d5d637f0f79c86d690de4b74bc2be302c68425c4fe6c83b241ac0634c", size = 118424, upload-time = "2025-10-28T20:03:13.855Z" },
]
[[package]]
name = "flake8"
version = "7.3.0"
@@ -397,6 +440,19 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" },
]
[[package]]
name = "lsprotocol"
version = "2025.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
{ name = "cattrs" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e9/26/67b84e6ec1402f0e6764ef3d2a0aaf9a79522cc1d37738f4e5bb0b21521a/lsprotocol-2025.0.0.tar.gz", hash = "sha256:e879da2b9301e82cfc3e60d805630487ac2f7ab17492f4f5ba5aaba94fe56c29", size = 74896, upload-time = "2025-06-17T21:30:18.156Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl", hash = "sha256:f9d78f25221f2a60eaa4a96d3b4ffae011b107537facee61d3da3313880995c7", size = 76250, upload-time = "2025-06-17T21:30:19.455Z" },
]
[[package]]
name = "markdown-it-py"
version = "3.0.0"
@@ -566,6 +622,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" },
]
[[package]]
name = "platformdirs"
version = "4.5.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" },
]
[[package]]
name = "pluggy"
version = "1.6.0"
@@ -602,6 +667,20 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", hash = "sha256:f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f", size = 63551, upload-time = "2025-06-20T18:45:26.937Z" },
]
[[package]]
name = "pygls"
version = "2.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
{ name = "cattrs" },
{ name = "lsprotocol" },
]
sdist = { url = "https://files.pythonhosted.org/packages/87/50/2bfc32f3acbc8941042919b59c9f592291127b55d7331b72e67ce7b62f08/pygls-2.0.0.tar.gz", hash = "sha256:99accd03de1ca76fe1e7e317f0968ebccf7b9955afed6e2e3e188606a20b4f07", size = 55796, upload-time = "2025-10-17T19:22:47.925Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/cc/09/14feafc13bebb9c85b29b374889c1549d3700cb572f2d43a1bb940d70315/pygls-2.0.0-py3-none-any.whl", hash = "sha256:b4e54bba806f76781017ded8fd07463b98670f959042c44170cd362088b200cc", size = 69533, upload-time = "2025-10-17T19:22:46.63Z" },
]
[[package]]
name = "pygments"
version = "2.19.1"