ParamSet
ParamSet. Use to define a group of parameters that can be added multiple times. This will provid a list of dictionary as values : List[Dict[str, Any]]
PRIVATE_VISIBILITY: LiteralPROTECTED_VISIBILITY: LiteralPUBLIC_VISIBILITY: Literaladditional_info: dict | Noneai_catalog_member: booldefault_rows: list[dict[str, typing.Any]] | Nonedefault_rows_mode: ParamSetDefaultRowsModedefault_value: Optionalhuman_name: str | Noneinvalid_reason: str | Noneis_valid: boolmax_number_of_occurrences: int | Nonemin_number_of_occurrences: int | Noneoptional: boolparam_set: ConfigSpecsshort_description: str | Nonevisibility: Literalgws_core.config.config_specs.ConfigSpecs | NoneLiteral - publicstr | Nonestr | Noneint | Noneint | None - 1list[dict[str, typing.Any]] | NoneParamSetDefaultRowsMode - ParamSetDefaultRowsMode.EDITABLEMethod call before the value is used (in task or view) to apply some transformation if needed by the ParamSpec. This does not affect the value in the database.
AnyAnyReturn a copy of this ParamSet with its inner specs replaced.
Every other attribute (occurrence bounds, presets, mode, visibility, ...) is carried over verbatim, so callers that need a structurally identical ParamSet over different inner specs — e.g. building a probe ConfigSpecs for cycle detection — don't have to enumerate the fields (and silently drift when a new one is added).
default_rows are copied as-is (already-built provided cells), not
re-validated against inner_specs.
ConfigSpecsParamSetlistParamSpecDTOParamSpecSimpleDTOValidate a ParamSet value (list of row dicts) and reconcile per-row identity.
Each row carries a reserved ConfigSpecs.ITEM_ID_KEY (__item_id)
— a UUID v4 stable across saves. Clients should generate it themselves
for new rows; the server fills it in if missing. Duplicate ids within
the same ParamSet are rejected.
The id is stripped before delegating to the inner
ConfigSpecs.get_and_check_values (which would otherwise reject the
unknown reserved key) and re-attached on the validated dict.
listAnyLenient variant of validate — runs leaf-level validation on
provided values but does NOT raise on missing inner mandatories or
on per-leaf validation failures.
Errors are returned alongside the validated rows; each key is
"[<row_index>].<inner_key>" (no leading ParamSet key — the
caller prepends it). Used by the form-save flow, where errors are
rendered per-field and missing mandatories only block on the
SUBMITTED transition.
listParamSetRowsValidationResultMaps this type's AI-relevant additional_info constraint keys to a
human explanation. Default: none. Override on types that expose
constraints (min/max, lengths, multiple, ...).
dictA representative, valid instance of this type used as the example in
:meth:describe_for_ai. Override to show meaningful constraints
(e.g. min/max). The default is a bare instance with a human_name.
ParamSetOne-line description of what this field type is for. Override per type.
strSelf-describe this param type for an AI form-builder.
Returns the type tag, a one-line summary, the meaning of each
AI-relevant additional_info key, and a real example spec serialized
exactly as ConfigSpecs.from_json expects. Built from
:meth:ai_example_spec / :meth:ai_summary / :meth:ai_additional_info_doc
so a type only overrides the small pieces it cares about. Keeping this on
the type (not in the AI service) means a new param type ships its own
catalog entry.
str - example_fieldParamSpecAiDescriptionDTOSelfThe :class:ParamSpecCategory this type was registered with by the
@param_spec_decorator. None if the class was never decorated.
gws_core.config.param.param_spec_decorator.ParamSpecCategory | NoneParamSpecTypeParamSpecDTObool - FalseParamSetDiff two ParamSet values (lists of row dicts) by __item_id.
Produces:
- PARAMSET_ITEM_REMOVED for ids only in old (path:
key[item_id=<uuid>]). - PARAMSET_ITEM_ADDED for ids only in new.
- One FIELD_CREATED / FIELD_UPDATED / FIELD_DELETED per inner field change
for ids present on both sides (path:
key[item_id=<uuid>].<field>).
Reorder = same set of ids on both sides with no inner change → no entries.
__item_id is stripped from old_value / new_value payloads on
ITEM_ADDED / ITEM_REMOVED entries — the path already carries the id.
strAnyAnylist