This commit is contained in:
2025-11-01 11:54:46 +03:00
parent e4a5c6d398
commit 9b28ef17ff
18 changed files with 916 additions and 2 deletions
@@ -0,0 +1,23 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
router = Router(title="Example")
@router.command(Command(
"example",
description="Example command with flags",
flags=Flags([
Flag("name"),
Flag("age")
])
))
def example_handler(response: Response):
# response.input_flags содержит коллекцию InputFlags
input_flags = response.input_flags
# Проверяем наличие флагов
if input_flags:
print(f"Received {len(input_flags.flags)} flag(s)")
else:
print("No flags provided")
@@ -0,0 +1,48 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
from argenta.command.flag import ValidationStatus
router = Router(title="Comprehensive Example")
@router.command(Command(
"validate",
description="Validate all flags",
flags=Flags([
Flag("format", possible_values=["json", "xml"]),
Flag("output"),
Flag("force")
])
))
def validate_handler(response: Response):
input_flags = response.input_flags
# Итерируемся по всем флагам и проверяем их статусы
print("Flag validation results:")
valid_flags = []
invalid_flags = []
undefined_flags = []
for flag in input_flags:
if flag.status == ValidationStatus.VALID:
valid_flags.append(flag)
print(f"{flag.string_entity}: {flag.input_value} (VALID)")
elif flag.status == ValidationStatus.INVALID:
invalid_flags.append(flag)
print(f"{flag.string_entity}: {flag.input_value} (INVALID)")
elif flag.status == ValidationStatus.UNDEFINED:
undefined_flags.append(flag)
print(f" ? {flag.string_entity}: {flag.input_value} (UNDEFINED)")
# Выводим сводку
print(f"\nSummary:")
print(f" Valid flags: {len(valid_flags)}")
print(f" Invalid flags: {len(invalid_flags)}")
print(f" Undefined flags: {len(undefined_flags)}")
# Обрабатываем только валидные флаги
if valid_flags:
print("\nProcessing valid flags:")
for flag in valid_flags:
print(f" Processing {flag.name} = {flag.input_value}")
@@ -0,0 +1,36 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
router = Router(title="Get Flag Example")
@router.command(Command(
"config",
description="Configure settings",
flags=Flags([
Flag("host"),
Flag("port"),
Flag("debug")
])
))
def config_handler(response: Response):
input_flags = response.input_flags
# Получаем флаг по имени
host_flag = input_flags.get_flag_by_name("host")
port_flag = input_flags.get_flag_by_name("port")
debug_flag = input_flags.get_flag_by_name("debug")
if host_flag:
print(f"Host: {host_flag.input_value}")
if port_flag:
print(f"Port: {port_flag.input_value}")
if debug_flag:
print("Debug mode enabled")
# Если флаг не найден, get_flag_by_name вернёт None
missing_flag = input_flags.get_flag_by_name("nonexistent")
if missing_flag is None:
print("Flag 'nonexistent' not found")
@@ -0,0 +1,22 @@
from argenta import Router, Command, Response
from argenta.command.flag import InputFlag, ValidationStatus, InputFlags
router = Router(title="Add Flag Example")
@router.command(Command("test", description="Test command"))
def test_handler(response: Response):
# Создаём новую коллекцию InputFlags
new_flags = InputFlags()
# Добавляем один флаг
test_flag = InputFlag(
name="test",
prefix="--",
input_value="value",
status=ValidationStatus.VALID
)
new_flags.add_flag(test_flag)
print(f"Flags count: {len(new_flags.flags)}")
print(f"First flag: {new_flags.flags[0].name}")
@@ -0,0 +1,34 @@
from argenta.command.flag import InputFlag, ValidationStatus, InputFlags
# Создаём коллекцию InputFlags
flags = InputFlags()
# Создаём несколько флагов
flag1 = InputFlag(
name="option1",
prefix="--",
input_value="value1",
status=ValidationStatus.VALID
)
flag2 = InputFlag(
name="option2",
prefix="--",
input_value="value2",
status=ValidationStatus.VALID
)
flag3 = InputFlag(
name="option3",
prefix="---",
input_value="value3",
status=ValidationStatus.VALID
)
# Добавляем все флаги одним вызовом
flags.add_flags([flag1, flag2, flag3])
print(f"Total flags: {len(flags.flags)}")
for flag in flags:
print(f" - {flag.string_entity}: {flag.input_value}")
@@ -0,0 +1,28 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
router = Router(title="Iterate Example")
@router.command(Command(
"process",
description="Process with multiple flags",
flags=Flags([
Flag("file"),
Flag("format"),
Flag("output")
])
))
def process_handler(response: Response):
input_flags = response.input_flags
# Итерируемся по всем введённым флагам
print("All flags:")
for flag in input_flags:
status_str = flag.status.name if flag.status else "None"
print(f" {flag.string_entity}: {flag.input_value} (status: {status_str})")
# Также можно использовать enumerate для получения индексов
print("\nFlags with indices:")
for index, flag in enumerate(input_flags):
print(f" [{index}] {flag.name}: {flag.input_value}")
@@ -0,0 +1,31 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
router = Router(title="Index Access Example")
@router.command(Command(
"example",
description="Example with indexed access",
flags=Flags([
Flag("first"),
Flag("second"),
Flag("third")
])
))
def example_handler(response: Response):
input_flags = response.input_flags
# Получаем флаги по индексу
if len(input_flags.flags) > 0:
first_flag = input_flags[0]
print(f"First flag: {first_flag.name} = {first_flag.input_value}")
if len(input_flags.flags) > 1:
second_flag = input_flags[1]
print(f"Second flag: {second_flag.name} = {second_flag.input_value}")
# Можно использовать срез для получения нескольких флагов
if len(input_flags.flags) >= 2:
first_two = input_flags.flags[:2]
print(f"First two flags: {[f.name for f in first_two]}")
@@ -0,0 +1,28 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
router = Router(title="Bool Check Example")
@router.command(Command(
"action",
description="Action with optional flags",
flags=Flags([
Flag("option1"),
Flag("option2")
])
))
def action_handler(response: Response):
input_flags = response.input_flags
# Проверяем наличие флагов
if input_flags:
print("Flags were provided:")
for flag in input_flags:
print(f" - {flag.name}: {flag.input_value}")
else:
print("No flags provided, using defaults")
# Альтернативный способ проверки
has_flags = bool(input_flags)
print(f"\nHas flags: {has_flags}")
@@ -0,0 +1,30 @@
from argenta.command.flag.flags.models import InputFlags
from argenta.command.flag import InputFlag, ValidationStatus
# Создаём первую коллекцию
flags1 = InputFlags([
InputFlag(name="flag1", input_value="value1", status=ValidationStatus.VALID),
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID)
])
# Создаём вторую коллекцию с теми же флагами
flags2 = InputFlags([
InputFlag(name="flag1", input_value="value1", status=ValidationStatus.VALID),
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID)
])
# Создаём третью коллекцию с другими флагами
flags3 = InputFlags([
InputFlag(name="flag1", input_value="different", status=ValidationStatus.VALID),
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID)
])
print(f"flags1 == flags2: {flags1 == flags2}") # True (одинаковые имена)
print(f"flags1 == flags3: {flags1 == flags3}") # True (имена одинаковые, значения не учитываются)
# Разные коллекции
flags4 = InputFlags([
InputFlag(name="flag3", input_value="value3", status=ValidationStatus.VALID)
])
print(f"flags1 == flags4: {flags1 == flags4}") # False (разные флаги)
@@ -0,0 +1,40 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
from argenta.command.flag import InputFlag, ValidationStatus
router = Router(title="Contains Example")
@router.command(Command(
"check",
description="Check flags",
flags=Flags([
Flag("verbose"),
Flag("debug"),
Flag("quiet")
])
))
def check_handler(response: Response):
input_flags = response.input_flags
# Проверяем наличие конкретного флага
verbose_flag = input_flags.get_flag_by_name("verbose")
debug_flag = input_flags.get_flag_by_name("debug")
# Используем оператор in для проверки
if verbose_flag and verbose_flag in input_flags:
print("Verbose flag is present")
if debug_flag and debug_flag in input_flags:
print("Debug flag is present")
# Можно создать флаг для проверки (сравнение идёт по имени)
test_flag = InputFlag(
name="verbose",
prefix="--",
input_value="any",
status=None
)
if test_flag in input_flags:
print("Verbose flag found using 'in' operator")
+16
View File
@@ -0,0 +1,16 @@
from argenta import Router, Command, Response
from argenta.response import ResponseStatus
router = Router(title="Example")
@router.command(Command("greet", description="Greet the user"))
def greet_handler(response: Response):
# response автоматически передаётся в обработчик
# response.status содержит статус валидации флагов
# response.input_flags содержит все введённые флаги
if response.status == ResponseStatus.ALL_FLAGS_VALID:
print("Hello! All flags are valid.")
else:
print("Warning: Some flags have issues.")
+22
View File
@@ -0,0 +1,22 @@
from argenta import Router, Command, Response
router = Router(title="Data Example")
@router.command(Command("set", description="Set data"))
def set_handler(response: Response):
# Обновляем глобальное хранилище данных
response.update_data({
"user_name": "John",
"timestamp": "2024-01-01",
"settings": {"theme": "dark", "language": "ru"}
})
print("Data updated successfully")
@router.command(Command("show", description="Show data"))
def show_handler(response: Response):
# Получаем данные из глобального хранилища
data = response.get_data()
if "user_name" in data:
print(f"User: {data['user_name']}")
print(f"Settings: {data.get('settings', {})}")
+16
View File
@@ -0,0 +1,16 @@
from argenta import Router, Command, Response
router = Router(title="Get Data Example")
@router.command(Command("info", description="Show all stored data"))
def info_handler(response: Response):
# Получаем все данные из глобального хранилища
all_data = response.get_data()
if all_data:
print("Stored data:")
for key, value in all_data.items():
print(f" {key}: {value}")
else:
print("No data stored")
+18
View File
@@ -0,0 +1,18 @@
from argenta import Router, Command, Response
router = Router(title="Clear Data Example")
@router.command(Command("clear", description="Clear all stored data"))
def clear_handler(response: Response):
# Очищаем всё хранилище данных
response.clear_data()
print("All data cleared")
@router.command(Command("check", description="Check if data exists"))
def check_handler(response: Response):
data = response.get_data()
if data:
print(f"Storage contains {len(data)} item(s)")
else:
print("Storage is empty")
+26
View File
@@ -0,0 +1,26 @@
from argenta import Router, Command, Response
router = Router(title="Delete Data Example")
@router.command(Command("store", description="Store data"))
def store_handler(response: Response):
response.update_data({
"temp_key": "temporary value",
"important_key": "important value",
"another_key": "another value"
})
print("Data stored")
@router.command(Command("remove", description="Remove specific key"))
def remove_handler(response: Response):
# Удаляем конкретный ключ из хранилища
try:
response.delete_from_data("temp_key")
print("Key 'temp_key' deleted")
# Проверяем, что осталось
remaining = response.get_data()
print(f"Remaining keys: {list(remaining.keys())}")
except KeyError:
print("Key not found")
+38
View File
@@ -0,0 +1,38 @@
from argenta import Router, Command, Response
from argenta.command import Flag, Flags
from argenta.response import ResponseStatus
router = Router(title="Flags Example")
@router.command(Command(
"process",
description="Process with flags",
flags=Flags([
Flag("format", possible_values=["json", "xml"]),
Flag("verbose")
])
))
def process_handler(response: Response):
# Проверяем статус валидации флагов
print(f"Status: {response.status.value}")
# Работаем с флагами
format_flag = response.input_flags.get_flag_by_name("format")
verbose_flag = response.input_flags.get_flag_by_name("verbose")
if format_flag:
format_value = format_flag.input_value
print(f"Format: {format_value}")
if verbose_flag:
print("Verbose mode enabled")
# Проверяем валидность флагов
if response.status == ResponseStatus.ALL_FLAGS_VALID:
print("All flags are valid, proceeding...")
elif response.status == ResponseStatus.INVALID_VALUE_FLAGS:
print("Warning: Some flags have invalid values")
for flag in response.input_flags:
if flag.status and flag.status.name == "INVALID":
print(f" Invalid flag: {flag.string_entity} = {flag.input_value}")