Skip to content

omnipy.config.data

Configuration models for data display, UI, and HTTP behavior.

CLASS DESCRIPTION
BrowserUserInterfaceConfig

Configuration for browser user interface type.

ColorConfig

Configuration for color output.

DataConfig

Configuration for data module.

DimsModeConfig

Base config that can refresh width and height from the active display.

DimsModeMixin

Mixin that adds automatic display-dimension update mode selection.

FontConfig

Font settings for HTML-based display integrations.

HtmlUserInterfaceConfig

Common configuration for browser-like HTML render targets.

HttpConfig

HTTP request defaults together with per-host overrides.

HttpRequestsConfig

Configuration for HTTP requests.

JupyterUserInterfaceConfig

Jupyter-specific UI configuration with notebook defaults.

LayoutConfig

Layout-panel configuration for multi-panel display composition.

ModelConfig

Configuration for behavior of the Model class.

OverflowConfig

Configuration for overflow handling.

TerminalUserInterfaceConfig

Terminal-specific UI configuration with live terminal size detection.

TextConfig

Text-formatting configuration shared by display renderers.

UserInterfaceConfig

Configuration for the user interface, including inputs and output

UserInterfaceTypeConfig

Shared width, height, and color settings for one UI target.

BrowserUserInterfaceConfig

Bases: HtmlUserInterfaceConfig


              flowchart BT
              omnipy.config.data.BrowserUserInterfaceConfig[BrowserUserInterfaceConfig]
              omnipy.config.data.HtmlUserInterfaceConfig[HtmlUserInterfaceConfig]
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.data.HtmlUserInterfaceConfig --> omnipy.config.data.BrowserUserInterfaceConfig
                                omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.HtmlUserInterfaceConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                






              click omnipy.config.data.BrowserUserInterfaceConfig href "" "omnipy.config.data.BrowserUserInterfaceConfig"
              click omnipy.config.data.HtmlUserInterfaceConfig href "" "omnipy.config.data.HtmlUserInterfaceConfig"
              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for browser user interface type.

METHOD DESCRIPTION
__init__

Initialize browser defaults for dimensions and color settings.

ATTRIBUTE DESCRIPTION
height

width

Source code in src/omnipy/config/data.py
class BrowserUserInterfaceConfig(HtmlUserInterfaceConfig):
    """
    Configuration for browser user interface type.
    """
    def __init__(self, **data: Any) -> None:
        """Initialize browser defaults for dimensions and color settings.

        Args:
            **data: Optional pydantic field values passed to the parent model
                initializer.

        Raises:
            pyd.ValidationError: If provided ``data`` does not satisfy model
                validation constraints.

        Example:
            >>> cfg = BrowserUserInterfaceConfig()
            >>> (cfg.width, cfg.height)
            (BROWSER_DEFAULT_WIDTH, BROWSER_DEFAULT_HEIGHT)
        """
        super().__init__(**data)
        self.width = BROWSER_DEFAULT_WIDTH
        self.height = BROWSER_DEFAULT_HEIGHT
        self.color.system = detect_display_color_system(UserInterfaceType.BROWSER_PAGE)
        self.color.dark_background = False

height instance-attribute

width instance-attribute

__init__

__init__(**data: Any) -> None

Initialize browser defaults for dimensions and color settings.

PARAMETER DESCRIPTION
**data

Optional pydantic field values passed to the parent model initializer.

TYPE: Any DEFAULT: {}

RAISES DESCRIPTION
pyd.ValidationError

If provided data does not satisfy model validation constraints.

Example

cfg = BrowserUserInterfaceConfig() (cfg.width, cfg.height) (BROWSER_DEFAULT_WIDTH, BROWSER_DEFAULT_HEIGHT)

Source code in src/omnipy/config/data.py
def __init__(self, **data: Any) -> None:
    """Initialize browser defaults for dimensions and color settings.

    Args:
        **data: Optional pydantic field values passed to the parent model
            initializer.

    Raises:
        pyd.ValidationError: If provided ``data`` does not satisfy model
            validation constraints.

    Example:
        >>> cfg = BrowserUserInterfaceConfig()
        >>> (cfg.width, cfg.height)
        (BROWSER_DEFAULT_WIDTH, BROWSER_DEFAULT_HEIGHT)
    """
    super().__init__(**data)
    self.width = BROWSER_DEFAULT_WIDTH
    self.height = BROWSER_DEFAULT_HEIGHT
    self.color.system = detect_display_color_system(UserInterfaceType.BROWSER_PAGE)
    self.color.dark_background = False

ColorConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.ColorConfig[ColorConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.ColorConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.ColorConfig href "" "omnipy.config.data.ColorConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for color output.

METHOD DESCRIPTION
default_style

Resolve recommended style presets to concrete color style names.

ATTRIBUTE DESCRIPTION
dark_background

TYPE: bool

solid_background

TYPE: bool

style

TYPE: AllColorStyles.Literals | str

system

TYPE: DisplayColorSystem.Literals

Source code in src/omnipy/config/data.py
class ColorConfig(ConfigBase):
    """
    Configuration for color output.
    """
    system: DisplayColorSystem.Literals = DisplayColorSystem.AUTO
    style: AllColorStyles.Literals | str = RecommendedColorStyles.AUTO
    dark_background: bool = DEFAULT_DARK_BACKGROUND
    solid_background: bool = False

    @pyd.root_validator()
    def default_style(cls, values: _ColorConfigTypedDict) -> _ColorConfigTypedDict:
        """Resolve recommended style presets to concrete color style names.

        Args:
            values: Parsed configuration values for color rendering.

        Returns:
            _ColorConfigTypedDict: Updated values where ``style`` is replaced with
                a concrete style when a recommended preset is used.


        Example:
            >>> ColorConfig.default_style({
            ...     'system': DisplayColorSystem.TRUECOLOR,
            ...     'style': RecommendedColorStyles.AUTO,
            ...     'dark_background': True,
            ...     'solid_background': False,
            ... })
            {'system': ..., 'style': ..., 'dark_background': True, 'solid_background': False}
        """
        if values['style'] in RecommendedColorStyles:
            values['style'] = RecommendedColorStyles.get_default_style(
                values['system'],
                values['dark_background'],
                values['solid_background'],
            )
        return values

dark_background class-attribute instance-attribute

dark_background: bool = DEFAULT_DARK_BACKGROUND

solid_background class-attribute instance-attribute

solid_background: bool = False

style class-attribute instance-attribute

system class-attribute instance-attribute

default_style

default_style(values: _ColorConfigTypedDict) -> _ColorConfigTypedDict

Resolve recommended style presets to concrete color style names.

PARAMETER DESCRIPTION
values

Parsed configuration values for color rendering.

TYPE: _ColorConfigTypedDict

RETURNS DESCRIPTION
_ColorConfigTypedDict

Updated values where style is replaced with a concrete style when a recommended preset is used.

TYPE: _ColorConfigTypedDict

Example

ColorConfig.default_style({ ... 'system': DisplayColorSystem.TRUECOLOR, ... 'style': RecommendedColorStyles.AUTO, ... 'dark_background': True, ... 'solid_background': False, ... }) {'system': ..., 'style': ..., 'dark_background': True, 'solid_background': False}

Source code in src/omnipy/config/data.py
@pyd.root_validator()
def default_style(cls, values: _ColorConfigTypedDict) -> _ColorConfigTypedDict:
    """Resolve recommended style presets to concrete color style names.

    Args:
        values: Parsed configuration values for color rendering.

    Returns:
        _ColorConfigTypedDict: Updated values where ``style`` is replaced with
            a concrete style when a recommended preset is used.


    Example:
        >>> ColorConfig.default_style({
        ...     'system': DisplayColorSystem.TRUECOLOR,
        ...     'style': RecommendedColorStyles.AUTO,
        ...     'dark_background': True,
        ...     'solid_background': False,
        ... })
        {'system': ..., 'style': ..., 'dark_background': True, 'solid_background': False}
    """
    if values['style'] in RecommendedColorStyles:
        values['style'] = RecommendedColorStyles.get_default_style(
            values['system'],
            values['dark_background'],
            values['solid_background'],
        )
    return values

DataConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.DataConfig[DataConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.DataConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.DataConfig href "" "omnipy.config.data.DataConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for data module.

ATTRIBUTE DESCRIPTION
http

TYPE: IsHttpConfig

model

TYPE: IsModelConfig

ui

TYPE: IsUserInterfaceConfig

Source code in src/omnipy/config/data.py
class DataConfig(ConfigBase):
    """
    Configuration for data module.
    """
    ui: IsUserInterfaceConfig = pyd.Field(default_factory=lambda: UserInterfaceConfig())
    model: IsModelConfig = pyd.Field(default_factory=lambda: ModelConfig())
    http: IsHttpConfig = pyd.Field(default_factory=HttpConfig)

http class-attribute instance-attribute

http: IsHttpConfig = pyd.Field(default_factory=HttpConfig)

model class-attribute instance-attribute

model: IsModelConfig = pyd.Field(default_factory=lambda: ModelConfig())

ui class-attribute instance-attribute

ui: IsUserInterfaceConfig = pyd.Field(default_factory=lambda: UserInterfaceConfig())

DimsModeConfig

Bases: UserInterfaceTypeConfig, DimsModeMixin, ABC


              flowchart BT
              omnipy.config.data.DimsModeConfig[DimsModeConfig]
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]
              omnipy.config.data.DimsModeMixin[DimsModeMixin]

                              omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.DimsModeConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                



                omnipy.config.data.DimsModeMixin --> omnipy.config.data.DimsModeConfig
                                omnipy.util.pydantic.BaseModel --> omnipy.config.data.DimsModeMixin
                



              click omnipy.config.data.DimsModeConfig href "" "omnipy.config.data.DimsModeConfig"
              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
              click omnipy.config.data.DimsModeMixin href "" "omnipy.config.data.DimsModeMixin"
            

Base config that can refresh width and height from the active display.

CLASS DESCRIPTION
Config

Pydantic model configuration: validates all fields and validates on assignment.

METHOD DESCRIPTION
check_and_set_auto_height

Resolve height automatically when dimension mode is AUTO.

check_and_set_auto_width

Resolve width automatically when dimension mode is AUTO.

Source code in src/omnipy/config/data.py
class DimsModeConfig(UserInterfaceTypeConfig, DimsModeMixin, ABC):
    """Base config that can refresh width and height from the active display."""
    class Config:  # pyright: ignore [reportIncompatibleVariableOverride]
        """Pydantic model configuration: validates all fields and validates on assignment."""
        validate_all = True
        validate_assignment = True

    @classmethod
    @abstractmethod
    def _get_available_display_dims(
            cls) -> tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]:
        """Fetch currently available display dimensions for a UI target.

        Returns:
            tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]: Width
                and height where unavailable dimensions are ``None``.

        Raises:
            NotImplementedError: Implementations in subclasses provide concrete
                behavior.

        Example:
            >>> TerminalUserInterfaceConfig._get_available_display_dims()
            (120, 40)
        """
        ...

    @pyd.validator('width', always=True)
    def check_and_set_auto_width(
        cls,
        value: pyd.NonNegativeInt,
        values: dict[str, Any],
    ) -> pyd.NonNegativeInt:
        """Resolve width automatically when dimension mode is ``AUTO``.

        Args:
            value: Candidate width from parsed model input.
            values: Additional parsed field values available to the validator.

        Returns:
            pyd.NonNegativeInt: Auto-detected width when available, otherwise
                the provided ``value``.


        Example:
            >>> DimsModeConfig.check_and_set_auto_width(
            ...     80,
            ...     {'dims_mode': DisplayDimensionsUpdateMode.AUTO}
            ... )
            80
        """
        return cls._get_available_display_dim_if_auto_dims_mode(value, values, index=0)

    @pyd.validator('height', always=True)
    def check_and_set_auto_height(
        cls,
        value: pyd.NonNegativeInt,
        values: dict[str, Any],
    ) -> pyd.NonNegativeInt:
        """Resolve height automatically when dimension mode is ``AUTO``.

        Args:
            value: Candidate height from parsed model input.
            values: Additional parsed field values available to the validator.

        Returns:
            pyd.NonNegativeInt: Auto-detected height when available, otherwise
                the provided ``value``.


        Example:
            >>> DimsModeConfig.check_and_set_auto_height(
            ...     24,
            ...     {'dims_mode': DisplayDimensionsUpdateMode.AUTO},
            ... )
            24
        """
        return cls._get_available_display_dim_if_auto_dims_mode(value, values, index=1)

    @classmethod
    def _get_available_display_dim_if_auto_dims_mode(
        cls,
        value: pyd.NonNegativeInt,
        values: dict[str, Any],
        index: int,
    ):
        """Resolve one display dimension from environment when in auto mode.

        Args:
            value: Fallback parsed value when auto-detection is disabled or
                unavailable.
            values: Parsed model field map containing ``dims_mode``.
            index: Dimension index where ``0`` is width and ``1`` is height.

        Returns:
            pyd.NonNegativeInt: Auto-detected dimension value when available,
                otherwise the provided ``value``.


        Example:
            >>> DimsModeConfig._get_available_display_dim_if_auto_dims_mode(
            ...     80,
            ...     {'dims_mode': DisplayDimensionsUpdateMode.AUTO},
            ...     0,
            ... )
            80
        """
        if values.get('dims_mode') is DisplayDimensionsUpdateMode.AUTO:
            fetched_val = cls._get_available_display_dims()[index]
            if fetched_val:
                return fetched_val
        return value

    # Override __getattribute__ to dynamically update width and height
    # if dims_mode is AUTO and the display size is available.
    def __getattribute__(self, attr):
        """Read attributes and refresh dimensions when auto mode is enabled.

        Args:
            attr: Name of the requested attribute.

        Returns:
            Any: Value of the requested attribute.

        Raises:
            AttributeError: If ``attr`` does not exist on the instance.

        Example:
            >>> cfg = TerminalUserInterfaceConfig()
            >>> cfg.width
            120
        """
        if (attr in ['width', 'height']
                and object.__getattribute__(self, 'dims_mode') is DisplayDimensionsUpdateMode.AUTO):
            width, height = object.__getattribute__(self, '_get_available_display_dims')()
            if width is not None:
                setattr(self, 'width', width)
            if height is not None:
                setattr(self, 'height', height)
        return object.__getattribute__(self, attr)

Config

Pydantic model configuration: validates all fields and validates on assignment.

ATTRIBUTE DESCRIPTION
validate_all

validate_assignment

Source code in src/omnipy/config/data.py
class Config:  # pyright: ignore [reportIncompatibleVariableOverride]
    """Pydantic model configuration: validates all fields and validates on assignment."""
    validate_all = True
    validate_assignment = True

validate_all class-attribute instance-attribute

validate_all = True

validate_assignment class-attribute instance-attribute

validate_assignment = True

check_and_set_auto_height

check_and_set_auto_height(value: pyd.NonNegativeInt, values: dict[str, Any]) -> pyd.NonNegativeInt

Resolve height automatically when dimension mode is AUTO.

PARAMETER DESCRIPTION
value

Candidate height from parsed model input.

TYPE: pyd.NonNegativeInt

values

Additional parsed field values available to the validator.

TYPE: dict[str, Any]

RETURNS DESCRIPTION
pyd.NonNegativeInt

pyd.NonNegativeInt: Auto-detected height when available, otherwise the provided value.

Example

DimsModeConfig.check_and_set_auto_height( ... 24, ... {'dims_mode': DisplayDimensionsUpdateMode.AUTO}, ... ) 24

Source code in src/omnipy/config/data.py
@pyd.validator('height', always=True)
def check_and_set_auto_height(
    cls,
    value: pyd.NonNegativeInt,
    values: dict[str, Any],
) -> pyd.NonNegativeInt:
    """Resolve height automatically when dimension mode is ``AUTO``.

    Args:
        value: Candidate height from parsed model input.
        values: Additional parsed field values available to the validator.

    Returns:
        pyd.NonNegativeInt: Auto-detected height when available, otherwise
            the provided ``value``.


    Example:
        >>> DimsModeConfig.check_and_set_auto_height(
        ...     24,
        ...     {'dims_mode': DisplayDimensionsUpdateMode.AUTO},
        ... )
        24
    """
    return cls._get_available_display_dim_if_auto_dims_mode(value, values, index=1)

check_and_set_auto_width

check_and_set_auto_width(value: pyd.NonNegativeInt, values: dict[str, Any]) -> pyd.NonNegativeInt

Resolve width automatically when dimension mode is AUTO.

PARAMETER DESCRIPTION
value

Candidate width from parsed model input.

TYPE: pyd.NonNegativeInt

values

Additional parsed field values available to the validator.

TYPE: dict[str, Any]

RETURNS DESCRIPTION
pyd.NonNegativeInt

pyd.NonNegativeInt: Auto-detected width when available, otherwise the provided value.

Example

DimsModeConfig.check_and_set_auto_width( ... 80, ... {'dims_mode': DisplayDimensionsUpdateMode.AUTO} ... ) 80

Source code in src/omnipy/config/data.py
@pyd.validator('width', always=True)
def check_and_set_auto_width(
    cls,
    value: pyd.NonNegativeInt,
    values: dict[str, Any],
) -> pyd.NonNegativeInt:
    """Resolve width automatically when dimension mode is ``AUTO``.

    Args:
        value: Candidate width from parsed model input.
        values: Additional parsed field values available to the validator.

    Returns:
        pyd.NonNegativeInt: Auto-detected width when available, otherwise
            the provided ``value``.


    Example:
        >>> DimsModeConfig.check_and_set_auto_width(
        ...     80,
        ...     {'dims_mode': DisplayDimensionsUpdateMode.AUTO}
        ... )
        80
    """
    return cls._get_available_display_dim_if_auto_dims_mode(value, values, index=0)

DimsModeMixin

Bases: pyd.BaseModel


              flowchart BT
              omnipy.config.data.DimsModeMixin[DimsModeMixin]

                              omnipy.util.pydantic.BaseModel --> omnipy.config.data.DimsModeMixin
                


              click omnipy.config.data.DimsModeMixin href "" "omnipy.config.data.DimsModeMixin"
            

Mixin that adds automatic display-dimension update mode selection.

ATTRIBUTE DESCRIPTION
dims_mode

TYPE: DisplayDimensionsUpdateMode.Literals

Source code in src/omnipy/config/data.py
class DimsModeMixin(pyd.BaseModel):
    """Mixin that adds automatic display-dimension update mode selection."""

    dims_mode: DisplayDimensionsUpdateMode.Literals = DisplayDimensionsUpdateMode.AUTO

dims_mode class-attribute instance-attribute

FontConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.FontConfig[FontConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.FontConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.FontConfig href "" "omnipy.config.data.FontConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Font settings for HTML-based display integrations.

ATTRIBUTE DESCRIPTION
families

TYPE: tuple[str, ...]

line_height

TYPE: pyd.NonNegativeFloat

size

TYPE: pyd.NonNegativeFloat

weight

TYPE: pyd.NonNegativeInt

Source code in src/omnipy/config/data.py
class FontConfig(ConfigBase):
    """Font settings for HTML-based display integrations."""

    families: tuple[str, ...] = (
        'Menlo',
        'DejaVu Sans Mono',
        'Consolas',
        'Courier New',
        'monospace',
    )
    size: pyd.NonNegativeFloat = 14
    weight: pyd.NonNegativeInt = 400
    line_height: pyd.NonNegativeFloat = 1.25

families class-attribute instance-attribute

families: tuple[str, ...] = ('Menlo', 'DejaVu Sans Mono', 'Consolas', 'Courier New', 'monospace')

line_height class-attribute instance-attribute

line_height: pyd.NonNegativeFloat = 1.25

size class-attribute instance-attribute

size: pyd.NonNegativeFloat = 14

weight class-attribute instance-attribute

weight: pyd.NonNegativeInt = 400

HtmlUserInterfaceConfig

Bases: UserInterfaceTypeConfig


              flowchart BT
              omnipy.config.data.HtmlUserInterfaceConfig[HtmlUserInterfaceConfig]
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.HtmlUserInterfaceConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                





              click omnipy.config.data.HtmlUserInterfaceConfig href "" "omnipy.config.data.HtmlUserInterfaceConfig"
              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Common configuration for browser-like HTML render targets.

ATTRIBUTE DESCRIPTION
font

TYPE: IsFontConfig

Source code in src/omnipy/config/data.py
class HtmlUserInterfaceConfig(UserInterfaceTypeConfig):
    """Common configuration for browser-like HTML render targets."""

    font: IsFontConfig = pyd.Field(default_factory=FontConfig)

font class-attribute instance-attribute

font: IsFontConfig = pyd.Field(default_factory=FontConfig)

HttpConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.HttpConfig[HttpConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.HttpConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.HttpConfig href "" "omnipy.config.data.HttpConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

HTTP request defaults together with per-host overrides.

METHOD DESCRIPTION
update_http_defaults

Create a host map that clones current HTTP defaults per new key.

ATTRIBUTE DESCRIPTION
defaults

TYPE: IsHttpRequestsConfig

for_host

TYPE: defaultdict[str, IsHttpRequestsConfig]

Source code in src/omnipy/config/data.py
class HttpConfig(ConfigBase):
    """HTTP request defaults together with per-host overrides."""

    defaults: IsHttpRequestsConfig = pyd.Field(default_factory=HttpRequestsConfig)
    for_host: defaultdict[str, IsHttpRequestsConfig] = pyd.Field(
        default_factory=lambda: defaultdict(HttpRequestsConfig))

    @pyd.validator('for_host', always=True)
    def update_http_defaults(cls,
                             _for_host: defaultdict[str, HttpRequestsConfig],
                             values: dict[str, Any]) -> defaultdict[str, HttpRequestsConfig]:
        """Create a host map that clones current HTTP defaults per new key.

        Args:
            cls: The HTTP config model class.
            _for_host: Parsed ``for_host`` value from pydantic input.
            values: Other parsed field values, including ``defaults``.

        Returns:
            defaultdict[str, HttpRequestsConfig]: Mapping that returns a copy
                of ``defaults`` for unknown hosts.

        Raises:
            KeyError: If ``defaults`` is missing from ``values`` during
                validation.

        Example:
            >>> cfg = HttpConfig()
            >>> cfg.for_host['example.org'].retry_attempts
            5
        """
        return defaultdict(lambda: values['defaults'].copy())

defaults class-attribute instance-attribute

defaults: IsHttpRequestsConfig = pyd.Field(default_factory=HttpRequestsConfig)

for_host class-attribute instance-attribute

for_host: defaultdict[str, IsHttpRequestsConfig] = pyd.Field(
    default_factory=lambda: defaultdict(HttpRequestsConfig)
)

update_http_defaults

update_http_defaults(
    _for_host: defaultdict[str, HttpRequestsConfig], values: dict[str, Any]
) -> defaultdict[str, HttpRequestsConfig]

Create a host map that clones current HTTP defaults per new key.

PARAMETER DESCRIPTION
cls

The HTTP config model class.

_for_host

Parsed for_host value from pydantic input.

TYPE: defaultdict[str, HttpRequestsConfig]

values

Other parsed field values, including defaults.

TYPE: dict[str, Any]

RETURNS DESCRIPTION
defaultdict[str, HttpRequestsConfig]

defaultdict[str, HttpRequestsConfig]: Mapping that returns a copy of defaults for unknown hosts.

RAISES DESCRIPTION
KeyError

If defaults is missing from values during validation.

Example

cfg = HttpConfig() cfg.for_host['example.org'].retry_attempts 5

Source code in src/omnipy/config/data.py
@pyd.validator('for_host', always=True)
def update_http_defaults(cls,
                         _for_host: defaultdict[str, HttpRequestsConfig],
                         values: dict[str, Any]) -> defaultdict[str, HttpRequestsConfig]:
    """Create a host map that clones current HTTP defaults per new key.

    Args:
        cls: The HTTP config model class.
        _for_host: Parsed ``for_host`` value from pydantic input.
        values: Other parsed field values, including ``defaults``.

    Returns:
        defaultdict[str, HttpRequestsConfig]: Mapping that returns a copy
            of ``defaults`` for unknown hosts.

    Raises:
        KeyError: If ``defaults`` is missing from ``values`` during
            validation.

    Example:
        >>> cfg = HttpConfig()
        >>> cfg.for_host['example.org'].retry_attempts
        5
    """
    return defaultdict(lambda: values['defaults'].copy())

HttpRequestsConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.HttpRequestsConfig[HttpRequestsConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.HttpRequestsConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.HttpRequestsConfig href "" "omnipy.config.data.HttpRequestsConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for HTTP requests.

ATTRIBUTE DESCRIPTION
requests_per_time_period

TYPE: float

retry_attempts

TYPE: int

retry_backoff_strategy

TYPE: BackoffStrategy.Literals

retry_http_statuses

TYPE: tuple[int, ...]

time_period_in_secs

TYPE: float

Source code in src/omnipy/config/data.py
class HttpRequestsConfig(ConfigBase):
    """
    Configuration for HTTP requests.
    """
    # For RateLimitingClientSession helper class
    requests_per_time_period: float = 60
    time_period_in_secs: float = 60

    # For get_*_from_api_endpoint tasks
    retry_http_statuses: tuple[int, ...] = (408, 425, 429, 500, 502, 503, 504)
    retry_attempts: int = 5
    retry_backoff_strategy: BackoffStrategy.Literals = BackoffStrategy.EXPONENTIAL

requests_per_time_period class-attribute instance-attribute

requests_per_time_period: float = 60

retry_attempts class-attribute instance-attribute

retry_attempts: int = 5

retry_backoff_strategy class-attribute instance-attribute

retry_http_statuses class-attribute instance-attribute

retry_http_statuses: tuple[int, ...] = (408, 425, 429, 500, 502, 503, 504)

time_period_in_secs class-attribute instance-attribute

time_period_in_secs: float = 60

JupyterUserInterfaceConfig

Bases: HtmlUserInterfaceConfig, DimsModeConfig


              flowchart BT
              omnipy.config.data.JupyterUserInterfaceConfig[JupyterUserInterfaceConfig]
              omnipy.config.data.HtmlUserInterfaceConfig[HtmlUserInterfaceConfig]
              omnipy.config.data.DimsModeConfig[DimsModeConfig]
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]
              omnipy.config.data.DimsModeMixin[DimsModeMixin]

                              omnipy.config.data.HtmlUserInterfaceConfig --> omnipy.config.data.JupyterUserInterfaceConfig
                                omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.HtmlUserInterfaceConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




                omnipy.config.data.DimsModeConfig --> omnipy.config.data.JupyterUserInterfaceConfig
                                omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.DimsModeConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                



                omnipy.config.data.DimsModeMixin --> omnipy.config.data.DimsModeConfig
                                omnipy.util.pydantic.BaseModel --> omnipy.config.data.DimsModeMixin
                




              click omnipy.config.data.JupyterUserInterfaceConfig href "" "omnipy.config.data.JupyterUserInterfaceConfig"
              click omnipy.config.data.HtmlUserInterfaceConfig href "" "omnipy.config.data.HtmlUserInterfaceConfig"
              click omnipy.config.data.DimsModeConfig href "" "omnipy.config.data.DimsModeConfig"
              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
              click omnipy.config.data.DimsModeMixin href "" "omnipy.config.data.DimsModeMixin"
            

Jupyter-specific UI configuration with notebook defaults.

METHOD DESCRIPTION
__init__

Initialize Jupyter defaults for dimensions and color settings.

ATTRIBUTE DESCRIPTION
height

width

Source code in src/omnipy/config/data.py
class JupyterUserInterfaceConfig(HtmlUserInterfaceConfig, DimsModeConfig):
    """Jupyter-specific UI configuration with notebook defaults."""
    @classmethod
    @override
    def _get_available_display_dims(
            cls) -> tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]:
        """Return notebook display dimensions when they can be queried.

        Returns:
            tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]:
                ``(None, None)`` because dimensions are currently pushed from
                Jupyter frontend code.


        Example:
            >>> JupyterUserInterfaceConfig._get_available_display_dims()
            (None, None)
        """
        # For now, Jupyter width is pushed, not fetched. Hence, we return None.
        return None, None

    def __init__(self, **data: Any) -> None:
        """Initialize Jupyter defaults for dimensions and color settings.

        Args:
            **data: Optional pydantic field values passed to the parent model
                initializer.

        Raises:
            pyd.ValidationError: If provided ``data`` does not satisfy model
                validation constraints.

        Example:
            >>> cfg = JupyterUserInterfaceConfig()
            >>> (cfg.width, cfg.height)
            (JUPYTER_DEFAULT_WIDTH, JUPYTER_DEFAULT_HEIGHT)
        """
        super().__init__(**data)
        self.width = JUPYTER_DEFAULT_WIDTH
        self.height = JUPYTER_DEFAULT_HEIGHT
        self.color.system = detect_display_color_system(UserInterfaceType.JUPYTER)
        self.color.dark_background = False

height instance-attribute

width instance-attribute

__init__

__init__(**data: Any) -> None

Initialize Jupyter defaults for dimensions and color settings.

PARAMETER DESCRIPTION
**data

Optional pydantic field values passed to the parent model initializer.

TYPE: Any DEFAULT: {}

RAISES DESCRIPTION
pyd.ValidationError

If provided data does not satisfy model validation constraints.

Example

cfg = JupyterUserInterfaceConfig() (cfg.width, cfg.height) (JUPYTER_DEFAULT_WIDTH, JUPYTER_DEFAULT_HEIGHT)

Source code in src/omnipy/config/data.py
def __init__(self, **data: Any) -> None:
    """Initialize Jupyter defaults for dimensions and color settings.

    Args:
        **data: Optional pydantic field values passed to the parent model
            initializer.

    Raises:
        pyd.ValidationError: If provided ``data`` does not satisfy model
            validation constraints.

    Example:
        >>> cfg = JupyterUserInterfaceConfig()
        >>> (cfg.width, cfg.height)
        (JUPYTER_DEFAULT_WIDTH, JUPYTER_DEFAULT_HEIGHT)
    """
    super().__init__(**data)
    self.width = JUPYTER_DEFAULT_WIDTH
    self.height = JUPYTER_DEFAULT_HEIGHT
    self.color.system = detect_display_color_system(UserInterfaceType.JUPYTER)
    self.color.dark_background = False

LayoutConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.LayoutConfig[LayoutConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.LayoutConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.LayoutConfig href "" "omnipy.config.data.LayoutConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Layout-panel configuration for multi-panel display composition.

ATTRIBUTE DESCRIPTION
justify

TYPE: Justify.Literals

max_nesting_depth

TYPE: pyd.NonNegativeInt | None

max_panels_hor

TYPE: pyd.NonNegativeInt | None

max_title_height

TYPE: MaxTitleHeight.Literals

min_crop_width

TYPE: pyd.NonNegativeInt

min_panel_width

TYPE: pyd.NonNegativeInt

overflow

TYPE: IsOverflowConfig

panel_design

TYPE: PanelDesign.Literals

panel_title_at_top

TYPE: bool

Source code in src/omnipy/config/data.py
class LayoutConfig(ConfigBase):
    """Layout-panel configuration for multi-panel display composition."""

    overflow: IsOverflowConfig = pyd.Field(default_factory=OverflowConfig)
    panel_design: PanelDesign.Literals = PanelDesign.TABLE
    panel_title_at_top: bool = True
    max_title_height: MaxTitleHeight.Literals = MaxTitleHeight.AUTO
    min_panel_width: pyd.NonNegativeInt = MIN_PANEL_WIDTH
    min_crop_width: pyd.NonNegativeInt = MIN_CROP_WIDTH
    max_panels_hor: pyd.NonNegativeInt | None = MAX_PANELS_HORIZONTALLY
    max_nesting_depth: pyd.NonNegativeInt | None = MAX_PANEL_NESTING_DEPTH
    justify: Justify.Literals = Justify.LEFT

justify class-attribute instance-attribute

max_nesting_depth class-attribute instance-attribute

max_nesting_depth: pyd.NonNegativeInt | None = MAX_PANEL_NESTING_DEPTH

max_panels_hor class-attribute instance-attribute

max_panels_hor: pyd.NonNegativeInt | None = MAX_PANELS_HORIZONTALLY

max_title_height class-attribute instance-attribute

min_crop_width class-attribute instance-attribute

min_crop_width: pyd.NonNegativeInt = MIN_CROP_WIDTH

min_panel_width class-attribute instance-attribute

min_panel_width: pyd.NonNegativeInt = MIN_PANEL_WIDTH

overflow class-attribute instance-attribute

overflow: IsOverflowConfig = pyd.Field(default_factory=OverflowConfig)

panel_design class-attribute instance-attribute

panel_title_at_top class-attribute instance-attribute

panel_title_at_top: bool = True

ModelConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.ModelConfig[ModelConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.ModelConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.ModelConfig href "" "omnipy.config.data.ModelConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for behavior of the Model class.

ATTRIBUTE DESCRIPTION
dynamically_convert_elements_to_models

TYPE: bool

interactive

TYPE: bool

Source code in src/omnipy/config/data.py
class ModelConfig(ConfigBase):
    """
    Configuration for behavior of the Model class.
    """
    interactive: bool = True
    dynamically_convert_elements_to_models: bool = False

dynamically_convert_elements_to_models class-attribute instance-attribute

dynamically_convert_elements_to_models: bool = False

interactive class-attribute instance-attribute

interactive: bool = True

OverflowConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.OverflowConfig[OverflowConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.OverflowConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.OverflowConfig href "" "omnipy.config.data.OverflowConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for overflow handling.

ATTRIBUTE DESCRIPTION
horizontal

TYPE: HorizontalOverflowMode.Literals

vertical

TYPE: VerticalOverflowMode.Literals

Source code in src/omnipy/config/data.py
class OverflowConfig(ConfigBase):
    """
    Configuration for overflow handling.
    """
    horizontal: HorizontalOverflowMode.Literals = HorizontalOverflowMode.ELLIPSIS
    vertical: VerticalOverflowMode.Literals = VerticalOverflowMode.ELLIPSIS_BOTTOM

horizontal class-attribute instance-attribute

vertical class-attribute instance-attribute

TerminalUserInterfaceConfig

Bases: DimsModeConfig


              flowchart BT
              omnipy.config.data.TerminalUserInterfaceConfig[TerminalUserInterfaceConfig]
              omnipy.config.data.DimsModeConfig[DimsModeConfig]
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]
              omnipy.config.data.DimsModeMixin[DimsModeMixin]

                              omnipy.config.data.DimsModeConfig --> omnipy.config.data.TerminalUserInterfaceConfig
                                omnipy.config.data.UserInterfaceTypeConfig --> omnipy.config.data.DimsModeConfig
                                omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                



                omnipy.config.data.DimsModeMixin --> omnipy.config.data.DimsModeConfig
                                omnipy.util.pydantic.BaseModel --> omnipy.config.data.DimsModeMixin
                




              click omnipy.config.data.TerminalUserInterfaceConfig href "" "omnipy.config.data.TerminalUserInterfaceConfig"
              click omnipy.config.data.DimsModeConfig href "" "omnipy.config.data.DimsModeConfig"
              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
              click omnipy.config.data.DimsModeMixin href "" "omnipy.config.data.DimsModeMixin"
            

Terminal-specific UI configuration with live terminal size detection.

Source code in src/omnipy/config/data.py
class TerminalUserInterfaceConfig(DimsModeConfig):
    """Terminal-specific UI configuration with live terminal size detection."""
    @classmethod
    @override
    def _get_available_display_dims(
            cls) -> tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]:
        """Fetch terminal width and height from the current shell session.

        Returns:
            tuple[pyd.NonNegativeInt | None, pyd.NonNegativeInt | None]:
                Terminal width and height, or ``None`` for unavailable values.


        Example:
            >>> TerminalUserInterfaceConfig._get_available_display_dims()
            (120, 40)
        """
        width, height = shutil.get_terminal_size(fallback=(0, 0))
        return None if width == 0 else width, None if height == 0 else height

TextConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.TextConfig[TextConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.TextConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.TextConfig href "" "omnipy.config.data.TextConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Text-formatting configuration shared by display renderers.

ATTRIBUTE DESCRIPTION
debug_mode

TYPE: bool

indent_tab_size

TYPE: pyd.NonNegativeInt

overflow

TYPE: IsOverflowConfig

pretty_printer

TYPE: PrettyPrinterLib.Literals

proportional_freedom

TYPE: pyd.NonNegativeFloat

tab_size

TYPE: pyd.NonNegativeInt

Source code in src/omnipy/config/data.py
class TextConfig(ConfigBase):
    """Text-formatting configuration shared by display renderers."""

    overflow: IsOverflowConfig = pyd.Field(default_factory=OverflowConfig)
    tab_size: pyd.NonNegativeInt = 4
    indent_tab_size: pyd.NonNegativeInt = 2
    pretty_printer: PrettyPrinterLib.Literals = PrettyPrinterLib.AUTO
    proportional_freedom: pyd.NonNegativeFloat = 2.5
    debug_mode: bool = False

debug_mode class-attribute instance-attribute

debug_mode: bool = False

indent_tab_size class-attribute instance-attribute

indent_tab_size: pyd.NonNegativeInt = 2

overflow class-attribute instance-attribute

overflow: IsOverflowConfig = pyd.Field(default_factory=OverflowConfig)

pretty_printer class-attribute instance-attribute

proportional_freedom class-attribute instance-attribute

proportional_freedom: pyd.NonNegativeFloat = 2.5

tab_size class-attribute instance-attribute

tab_size: pyd.NonNegativeInt = 4

UserInterfaceConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.UserInterfaceConfig[UserInterfaceConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.UserInterfaceConfig href "" "omnipy.config.data.UserInterfaceConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Configuration for the user interface, including inputs and output devices.

METHOD DESCRIPTION
get_ui_type_config

Return UI-specific configuration for a supported UI type.

ATTRIBUTE DESCRIPTION
browser

TYPE: IsBrowserUserInterfaceConfig

cache_dir_path

TYPE: str

detected_type

TYPE: SpecifiedUserInterfaceType.Literals

jupyter

TYPE: IsJupyterUserInterfaceConfig

layout

TYPE: IsLayoutConfig

terminal

TYPE: IsTerminalUserInterfaceConfig

text

TYPE: IsTextConfig

Source code in src/omnipy/config/data.py
class UserInterfaceConfig(ConfigBase):
    """
    Configuration for the user interface, including inputs and output
    devices.
    """
    detected_type: SpecifiedUserInterfaceType.Literals = UserInterfaceType.UNKNOWN
    terminal: IsTerminalUserInterfaceConfig = pyd.Field(default_factory=TerminalUserInterfaceConfig)
    jupyter: IsJupyterUserInterfaceConfig = pyd.Field(default_factory=JupyterUserInterfaceConfig)
    browser: IsBrowserUserInterfaceConfig = pyd.Field(default_factory=BrowserUserInterfaceConfig)
    text: IsTextConfig = pyd.Field(default_factory=TextConfig)
    layout: IsLayoutConfig = pyd.Field(default_factory=LayoutConfig)
    cache_dir_path: str = pyd.Field(default_factory=_get_cache_dir_path)

    def get_ui_type_config(
        self,
        ui_type: SpecifiedUserInterfaceType.Literals,
    ) -> IsUserInterfaceTypeConfig:  # pyright: ignore [reportReturnType]
        """Return UI-specific configuration for a supported UI type.

        Args:
            ui_type: UI type discriminator used to select terminal, Jupyter,
                or browser settings.

        Returns:
            IsUserInterfaceTypeConfig: Matching configuration model when
                ``ui_type`` is recognized as terminal, Jupyter, or browser.
            ``None``: Returned implicitly when ``ui_type`` is unsupported.

        Example:
            >>> cfg = UserInterfaceConfig()
            >>> cfg.get_ui_type_config(UserInterfaceType.TERMINAL)
            TerminalUserInterfaceConfig(...)
        """
        match ui_type:
            case x if UserInterfaceType.is_terminal(x):
                return self.terminal
            case x if UserInterfaceType.is_jupyter(x):
                return self.jupyter
            case x if UserInterfaceType.is_browser(x):
                return self.browser

browser class-attribute instance-attribute

cache_dir_path class-attribute instance-attribute

cache_dir_path: str = pyd.Field(default_factory=_get_cache_dir_path)

detected_type class-attribute instance-attribute

jupyter class-attribute instance-attribute

layout class-attribute instance-attribute

layout: IsLayoutConfig = pyd.Field(default_factory=LayoutConfig)

terminal class-attribute instance-attribute

text class-attribute instance-attribute

text: IsTextConfig = pyd.Field(default_factory=TextConfig)

get_ui_type_config

Return UI-specific configuration for a supported UI type.

PARAMETER DESCRIPTION
ui_type

UI type discriminator used to select terminal, Jupyter, or browser settings.

TYPE: SpecifiedUserInterfaceType.Literals

RETURNS DESCRIPTION
IsUserInterfaceTypeConfig

Matching configuration model when ui_type is recognized as terminal, Jupyter, or browser. None: Returned implicitly when ui_type is unsupported.

TYPE: IsUserInterfaceTypeConfig

Example

cfg = UserInterfaceConfig() cfg.get_ui_type_config(UserInterfaceType.TERMINAL) TerminalUserInterfaceConfig(...)

Source code in src/omnipy/config/data.py
def get_ui_type_config(
    self,
    ui_type: SpecifiedUserInterfaceType.Literals,
) -> IsUserInterfaceTypeConfig:  # pyright: ignore [reportReturnType]
    """Return UI-specific configuration for a supported UI type.

    Args:
        ui_type: UI type discriminator used to select terminal, Jupyter,
            or browser settings.

    Returns:
        IsUserInterfaceTypeConfig: Matching configuration model when
            ``ui_type`` is recognized as terminal, Jupyter, or browser.
        ``None``: Returned implicitly when ``ui_type`` is unsupported.

    Example:
        >>> cfg = UserInterfaceConfig()
        >>> cfg.get_ui_type_config(UserInterfaceType.TERMINAL)
        TerminalUserInterfaceConfig(...)
    """
    match ui_type:
        case x if UserInterfaceType.is_terminal(x):
            return self.terminal
        case x if UserInterfaceType.is_jupyter(x):
            return self.jupyter
        case x if UserInterfaceType.is_browser(x):
            return self.browser

UserInterfaceTypeConfig

Bases: ConfigBase


              flowchart BT
              omnipy.config.data.UserInterfaceTypeConfig[UserInterfaceTypeConfig]
              omnipy.config.ConfigBase[ConfigBase]
              omnipy.util.publisher.DataPublisher[DataPublisher]

                              omnipy.config.ConfigBase --> omnipy.config.data.UserInterfaceTypeConfig
                                omnipy.util.publisher.DataPublisher --> omnipy.config.ConfigBase
                                omnipy.util.pydantic.BaseModel --> omnipy.util.publisher.DataPublisher
                




              click omnipy.config.data.UserInterfaceTypeConfig href "" "omnipy.config.data.UserInterfaceTypeConfig"
              click omnipy.config.ConfigBase href "" "omnipy.config.ConfigBase"
              click omnipy.util.publisher.DataPublisher href "" "omnipy.util.publisher.DataPublisher"
            

Shared width, height, and color settings for one UI target.

METHOD DESCRIPTION
set_width_and_height

Set width and height and notify subscribers about the updates.

ATTRIBUTE DESCRIPTION
color

TYPE: IsColorConfig

height

TYPE: pyd.NonNegativeInt | None

width

TYPE: pyd.NonNegativeInt | None

Source code in src/omnipy/config/data.py
class UserInterfaceTypeConfig(ConfigBase):
    """Shared width, height, and color settings for one UI target."""

    width: pyd.NonNegativeInt | None = TERMINAL_DEFAULT_WIDTH
    height: pyd.NonNegativeInt | None = TERMINAL_DEFAULT_HEIGHT
    color: IsColorConfig = pyd.Field(default_factory=ColorConfig)

    def set_width_and_height(
        self,
        width: pyd.NonNegativeInt | None,
        height: pyd.NonNegativeInt | None,
    ) -> None:
        """Set width and height and notify subscribers about the updates.

        Args:
            width: New UI width in character or pixel units, depending on
                renderer.
            height: New UI height in character or pixel units, depending on
                renderer.


        Example:
            >>> ui_cfg = UserInterfaceTypeConfig()
            >>> ui_cfg.set_width_and_height(120, 40)
        """
        for (dim_name, dim_value) in (('width', width), ('height', height)):
            object.__setattr__(self, dim_name, dim_value)
            self._call_subscribers(dim_name, dim_value)
        self._call_self_subscribers()

color class-attribute instance-attribute

color: IsColorConfig = pyd.Field(default_factory=ColorConfig)

height class-attribute instance-attribute

width class-attribute instance-attribute

set_width_and_height

set_width_and_height(width: pyd.NonNegativeInt | None, height: pyd.NonNegativeInt | None) -> None

Set width and height and notify subscribers about the updates.

PARAMETER DESCRIPTION
width

New UI width in character or pixel units, depending on renderer.

TYPE: pyd.NonNegativeInt | None

height

New UI height in character or pixel units, depending on renderer.

TYPE: pyd.NonNegativeInt | None

Example

ui_cfg = UserInterfaceTypeConfig() ui_cfg.set_width_and_height(120, 40)

Source code in src/omnipy/config/data.py
def set_width_and_height(
    self,
    width: pyd.NonNegativeInt | None,
    height: pyd.NonNegativeInt | None,
) -> None:
    """Set width and height and notify subscribers about the updates.

    Args:
        width: New UI width in character or pixel units, depending on
            renderer.
        height: New UI height in character or pixel units, depending on
            renderer.


    Example:
        >>> ui_cfg = UserInterfaceTypeConfig()
        >>> ui_cfg.set_width_and_height(120, 40)
    """
    for (dim_name, dim_value) in (('width', width), ('height', height)):
        object.__setattr__(self, dim_name, dim_value)
        self._call_subscribers(dim_name, dim_value)
    self._call_self_subscribers()