Исходный код EJIO.ctk_extender.widget.form.fields.base
## /ctk_extender/widget/form/fields/base.py
from abc import abstractmethod
from typing import Any, Protocol, runtime_checkable
__all__ = [
'InputField',
]
[документация]
@runtime_checkable
class InputField(Protocol):
"""
Протокол, описывающий требования к элементам ввода внутри Form.
Разрешен для рантайм-проверок через isinstance().
"""
@property
@abstractmethod
def name(self) -> str:
"""Уникальное имя поля для формирования итогового словаря данных."""
raise NotImplementedError
[документация]
@abstractmethod
def get_value(self) -> Any:
"""Возвращает текущее значение, введенное пользователем."""
raise NotImplementedError
[документация]
@abstractmethod
def set_value(self, value: Any) -> None:
"""Программная установка значения в поле."""
raise NotImplementedError
[документация]
@abstractmethod
def clear(self) -> None:
"""Сброс значения поля в дефолтное состояние."""
raise NotImplementedError
[документация]
def validate(self) -> str | None:
"""
Проводит внутреннюю валидацию поля.
:return: Строка с ошибкой, если она есть, иначе None.
"""
return None