pyqt_reactive.forms.parameter_form_constants

Parameter form constants for eliminating magic strings throughout the parameter form managers.

This module centralizes all hardcoded strings used in both PyQt and Textual parameter form implementations to improve maintainability and reduce duplication.

Classes

ParameterFormConstants([FIELD_ID_SEPARATOR, ...])

Centralized constants for parameter form implementations.

class pyqt_reactive.forms.parameter_form_constants.ParameterFormConstants(FIELD_ID_SEPARATOR: str = '_', NESTED_STATIC_PREFIX: str = 'nested_static_', MIXED_CLASS_PREFIX: str = 'Mixed', ENABLE_CHECKBOX_PREFIX: str = 'Enable ', RESET_BUTTON_PREFIX: str = 'reset_', DEFAULT_PLACEHOLDER_PREFIX: str = 'Pipeline default', PLACEHOLDER_WITH_COLON: str = 'Pipeline default:', PLACEHOLDER_NONE_TEXT: str = '(none)', RESET_BUTTON_TEXT: str = 'Reset', NONE_STRING_LITERAL: str = 'None', EMPTY_STRING: str = '', UNDERSCORE_REPLACEMENT: str = ' ', FIELD_LABEL_SUFFIX: str = ':', PARAMETER_DESCRIPTION_PREFIX: str = 'Parameter: ', DEBUG_PREFIX: str = '*** ', DEBUG_SUFFIX: str = ' ***', DEBUG_TARGET_PARAMS: FrozenSet[str] = frozenset({'output_dir_suffix', 'path_planning'}), NESTED_MANAGERS_ATTR: str = 'nested_managers', OPTIONAL_CHECKBOXES_ATTR: str = 'optional_checkboxes', ENABLED_SUFFIX: str = '_enabled', DATACLASS_FIELDS_ATTR: str = '__dataclass_fields__', RESOLVE_FIELD_VALUE_ATTR: str = '_resolve_field_value', BASES_ATTR: str = '__bases__', VALUE_ATTR: str = 'value', TRUE_STRINGS: FrozenSet[str] = frozenset({'1', 'on', 'true', 'yes'}), PARAM_LABEL_CLASS: str = 'param-label clickable', PLACEHOLDER_STYLE_PROPERTY: str = 'is_placeholder_state', AUTO_SIZE: str = 'auto', FLEXIBLE_WIDTH: str = '1fr', LEFT_ALIGN: str = 'left', UNKNOWN_CONFIG_KEY_MSG: str = 'Unknown config key: {}', INVALID_CONFIG_KEYS_MSG: str = 'Invalid config keys: {}', CONFIG_MUST_BE_DICT_MSG: str = 'Config must be a non-empty dictionary', NO_WIDGET_CREATOR_MSG: str = 'No widget creator registered for type: {}', CONVERSION_ERROR_MSG: str = "Cannot convert '{}' to {}: {}", NO_VALID_CONVERSION_MSG: str = 'No valid conversion found for Union type {}', GLOBAL_CONTEXT_LAZY_PREFIX: str = 'GlobalContextLazy', STATIC_LAZY_PREFIX: str = 'StaticLazy', DIFFERENT_VALUES_TYPE: str = 'different', TOOLTIP_SEPARATOR: str = ': ', HELP_PARAMETER_PREFIX: str = 'Parameter: ', COLLAPSED_STATE: bool = True, EXPANDED_STATE: bool = False, COMPACT_WIDGET: bool = True, NO_MARGIN: tuple = (0, 0, 0, 0), LEFT_MARGIN_ONLY: tuple = (0, 0, 0, 1), CURRENT_PIPELINE_CONFIG_ATTR: str = 'value', SET_PATH_METHOD: str = 'set_path', GET_VALUE_METHOD: str = 'get_value', SET_VALUE_METHOD: str = 'setValue', BLOCK_SIGNALS_METHOD: str = 'blockSignals', SET_TEXT_METHOD: str = 'setText', SET_CHECKED_METHOD: str = 'setChecked', NESTED_DEBUG_MSG: str = '*** NESTED DEBUG *** param_name={}, parent_nested_name={}', NESTED_UPDATE_MSG: str = '*** NESTED UPDATE *** Updating {}.{} = {}', RESET_DEBUG_MSG: str = '*** RESET DEBUG *** param_name={}, parent_nested_name={}', FALLBACK_DEBUG_MSG: str = '*** FALLBACK DEBUG *** Checking fallback for {}', TEXTUAL_UPDATE_DEBUG_MSG: str = '*** TEXTUAL UPDATE DEBUG *** {} update_parameter called with: {} (type: {})', DOT_SEPARATOR: str = '.', PATH_PLANNING_FIELD: str = 'path_planning', OUTPUT_DIR_SUFFIX_FIELD: str = 'output_dir_suffix', INPUT_TYPE_INTEGER: str = 'integer', INPUT_TYPE_NUMBER: str = 'number', INPUT_TYPE_TEXT: str = 'text', GLOBAL_CONFIG_EDITING_CONTEXT: str = 'global_config_editing', LAZY_CONTEXT: str = 'lazy_context', PYQT6_FRAMEWORK: str = 'pyqt6', TEXTUAL_FRAMEWORK: str = 'textual')[source]

Centralized constants for parameter form implementations.

This dataclass eliminates magic strings throughout the parameter form system by providing a single source of truth for all hardcoded values used in both PyQt and Textual implementations.

Categories: - UI text and formatting patterns - Widget identification and naming - Framework-specific constants - Debug and validation settings

FIELD_ID_SEPARATOR: str = '_'
NESTED_STATIC_PREFIX: str = 'nested_static_'
MIXED_CLASS_PREFIX: str = 'Mixed'
ENABLE_CHECKBOX_PREFIX: str = 'Enable '
RESET_BUTTON_PREFIX: str = 'reset_'
DEFAULT_PLACEHOLDER_PREFIX: str = 'Pipeline default'
PLACEHOLDER_WITH_COLON: str = 'Pipeline default:'
PLACEHOLDER_NONE_TEXT: str = '(none)'
RESET_BUTTON_TEXT: str = 'Reset'
NONE_STRING_LITERAL: str = 'None'
EMPTY_STRING: str = ''
UNDERSCORE_REPLACEMENT: str = ' '
FIELD_LABEL_SUFFIX: str = ':'
PARAMETER_DESCRIPTION_PREFIX: str = 'Parameter: '
DEBUG_PREFIX: str = '*** '
DEBUG_SUFFIX: str = ' ***'
DEBUG_TARGET_PARAMS: FrozenSet[str] = frozenset({'output_dir_suffix', 'path_planning'})
NESTED_MANAGERS_ATTR: str = 'nested_managers'
OPTIONAL_CHECKBOXES_ATTR: str = 'optional_checkboxes'
ENABLED_SUFFIX: str = '_enabled'
DATACLASS_FIELDS_ATTR: str = '__dataclass_fields__'
RESOLVE_FIELD_VALUE_ATTR: str = '_resolve_field_value'
BASES_ATTR: str = '__bases__'
VALUE_ATTR: str = 'value'
TRUE_STRINGS: FrozenSet[str] = frozenset({'1', 'on', 'true', 'yes'})
PARAM_LABEL_CLASS: str = 'param-label clickable'
PLACEHOLDER_STYLE_PROPERTY: str = 'is_placeholder_state'
AUTO_SIZE: str = 'auto'
FLEXIBLE_WIDTH: str = '1fr'
LEFT_ALIGN: str = 'left'
UNKNOWN_CONFIG_KEY_MSG: str = 'Unknown config key: {}'
INVALID_CONFIG_KEYS_MSG: str = 'Invalid config keys: {}'
CONFIG_MUST_BE_DICT_MSG: str = 'Config must be a non-empty dictionary'
NO_WIDGET_CREATOR_MSG: str = 'No widget creator registered for type: {}'
CONVERSION_ERROR_MSG: str = "Cannot convert '{}' to {}: {}"
NO_VALID_CONVERSION_MSG: str = 'No valid conversion found for Union type {}'
GLOBAL_CONTEXT_LAZY_PREFIX: str = 'GlobalContextLazy'
STATIC_LAZY_PREFIX: str = 'StaticLazy'
DIFFERENT_VALUES_TYPE: str = 'different'
TOOLTIP_SEPARATOR: str = ': '
HELP_PARAMETER_PREFIX: str = 'Parameter: '
COLLAPSED_STATE: bool = True
EXPANDED_STATE: bool = False
COMPACT_WIDGET: bool = True
NO_MARGIN: tuple = (0, 0, 0, 0)
LEFT_MARGIN_ONLY: tuple = (0, 0, 0, 1)
CURRENT_PIPELINE_CONFIG_ATTR: str = 'value'
SET_PATH_METHOD: str = 'set_path'
GET_VALUE_METHOD: str = 'get_value'
SET_VALUE_METHOD: str = 'setValue'
BLOCK_SIGNALS_METHOD: str = 'blockSignals'
SET_TEXT_METHOD: str = 'setText'
SET_CHECKED_METHOD: str = 'setChecked'
NESTED_DEBUG_MSG: str = '*** NESTED DEBUG *** param_name={}, parent_nested_name={}'
NESTED_UPDATE_MSG: str = '*** NESTED UPDATE *** Updating {}.{} = {}'
RESET_DEBUG_MSG: str = '*** RESET DEBUG *** param_name={}, parent_nested_name={}'
FALLBACK_DEBUG_MSG: str = '*** FALLBACK DEBUG *** Checking fallback for {}'
TEXTUAL_UPDATE_DEBUG_MSG: str = '*** TEXTUAL UPDATE DEBUG *** {} update_parameter called with: {} (type: {})'
DOT_SEPARATOR: str = '.'
PATH_PLANNING_FIELD: str = 'path_planning'
OUTPUT_DIR_SUFFIX_FIELD: str = 'output_dir_suffix'
INPUT_TYPE_INTEGER: str = 'integer'
INPUT_TYPE_NUMBER: str = 'number'
INPUT_TYPE_TEXT: str = 'text'
GLOBAL_CONFIG_EDITING_CONTEXT: str = 'global_config_editing'
LAZY_CONTEXT: str = 'lazy_context'
PYQT6_FRAMEWORK: str = 'pyqt6'
TEXTUAL_FRAMEWORK: str = 'textual'
__init__(FIELD_ID_SEPARATOR: str = '_', NESTED_STATIC_PREFIX: str = 'nested_static_', MIXED_CLASS_PREFIX: str = 'Mixed', ENABLE_CHECKBOX_PREFIX: str = 'Enable ', RESET_BUTTON_PREFIX: str = 'reset_', DEFAULT_PLACEHOLDER_PREFIX: str = 'Pipeline default', PLACEHOLDER_WITH_COLON: str = 'Pipeline default:', PLACEHOLDER_NONE_TEXT: str = '(none)', RESET_BUTTON_TEXT: str = 'Reset', NONE_STRING_LITERAL: str = 'None', EMPTY_STRING: str = '', UNDERSCORE_REPLACEMENT: str = ' ', FIELD_LABEL_SUFFIX: str = ':', PARAMETER_DESCRIPTION_PREFIX: str = 'Parameter: ', DEBUG_PREFIX: str = '*** ', DEBUG_SUFFIX: str = ' ***', DEBUG_TARGET_PARAMS: FrozenSet[str] = frozenset({'output_dir_suffix', 'path_planning'}), NESTED_MANAGERS_ATTR: str = 'nested_managers', OPTIONAL_CHECKBOXES_ATTR: str = 'optional_checkboxes', ENABLED_SUFFIX: str = '_enabled', DATACLASS_FIELDS_ATTR: str = '__dataclass_fields__', RESOLVE_FIELD_VALUE_ATTR: str = '_resolve_field_value', BASES_ATTR: str = '__bases__', VALUE_ATTR: str = 'value', TRUE_STRINGS: FrozenSet[str] = frozenset({'1', 'on', 'true', 'yes'}), PARAM_LABEL_CLASS: str = 'param-label clickable', PLACEHOLDER_STYLE_PROPERTY: str = 'is_placeholder_state', AUTO_SIZE: str = 'auto', FLEXIBLE_WIDTH: str = '1fr', LEFT_ALIGN: str = 'left', UNKNOWN_CONFIG_KEY_MSG: str = 'Unknown config key: {}', INVALID_CONFIG_KEYS_MSG: str = 'Invalid config keys: {}', CONFIG_MUST_BE_DICT_MSG: str = 'Config must be a non-empty dictionary', NO_WIDGET_CREATOR_MSG: str = 'No widget creator registered for type: {}', CONVERSION_ERROR_MSG: str = "Cannot convert '{}' to {}: {}", NO_VALID_CONVERSION_MSG: str = 'No valid conversion found for Union type {}', GLOBAL_CONTEXT_LAZY_PREFIX: str = 'GlobalContextLazy', STATIC_LAZY_PREFIX: str = 'StaticLazy', DIFFERENT_VALUES_TYPE: str = 'different', TOOLTIP_SEPARATOR: str = ': ', HELP_PARAMETER_PREFIX: str = 'Parameter: ', COLLAPSED_STATE: bool = True, EXPANDED_STATE: bool = False, COMPACT_WIDGET: bool = True, NO_MARGIN: tuple = (0, 0, 0, 0), LEFT_MARGIN_ONLY: tuple = (0, 0, 0, 1), CURRENT_PIPELINE_CONFIG_ATTR: str = 'value', SET_PATH_METHOD: str = 'set_path', GET_VALUE_METHOD: str = 'get_value', SET_VALUE_METHOD: str = 'setValue', BLOCK_SIGNALS_METHOD: str = 'blockSignals', SET_TEXT_METHOD: str = 'setText', SET_CHECKED_METHOD: str = 'setChecked', NESTED_DEBUG_MSG: str = '*** NESTED DEBUG *** param_name={}, parent_nested_name={}', NESTED_UPDATE_MSG: str = '*** NESTED UPDATE *** Updating {}.{} = {}', RESET_DEBUG_MSG: str = '*** RESET DEBUG *** param_name={}, parent_nested_name={}', FALLBACK_DEBUG_MSG: str = '*** FALLBACK DEBUG *** Checking fallback for {}', TEXTUAL_UPDATE_DEBUG_MSG: str = '*** TEXTUAL UPDATE DEBUG *** {} update_parameter called with: {} (type: {})', DOT_SEPARATOR: str = '.', PATH_PLANNING_FIELD: str = 'path_planning', OUTPUT_DIR_SUFFIX_FIELD: str = 'output_dir_suffix', INPUT_TYPE_INTEGER: str = 'integer', INPUT_TYPE_NUMBER: str = 'number', INPUT_TYPE_TEXT: str = 'text', GLOBAL_CONFIG_EDITING_CONTEXT: str = 'global_config_editing', LAZY_CONTEXT: str = 'lazy_context', PYQT6_FRAMEWORK: str = 'pyqt6', TEXTUAL_FRAMEWORK: str = 'textual') None