recon_gen.common.tree.parameters

Typed ParameterDecl subtypes — one per models.py declaration variant.

StringParam / IntegerParam / DateTimeParam map to the three declaration types in models.py. Each carries its own ParameterName at the constructor (single construction site); controls and filter parameter bindings reference the parameter by object ref.

Each variant optionally carries a list of (Dataset, str) tuples in mapped_dataset_params. Each tuple binds the analysis-level parameter to a dataset-level parameter declared inside the referenced Dataset’s CustomSql (substituted via <<$paramName>> at QS query time). Use this to bridge an analysis param into one or more parameterized datasets — the cascading-filter pattern that M.3.10c established.

Classes

DateTimeParam(name, default[, ...])

DateTime parameter declaration.

IntegerParam(name[, default, multi_valued, ...])

Integer-valued parameter declaration.

ParameterDeclLike(*args, **kwargs)

Structural type for parameter declaration tree nodes.

StringParam(name[, default, multi_valued, ...])

String-valued parameter declaration.

class recon_gen.common.tree.parameters.DateTimeParam(name, default, time_granularity=None, mapped_dataset_params=None)[source]

Bases: object

DateTime parameter declaration.

Pass time_granularity="DAY" | "HOUR" | "MINUTE" | to bound the picker’s resolution. default is required — DateTimeDefaultValues with one of StaticValues / DynamicValue / RollingDate populated. Common rolling default for “today”: DateTimeDefaultValues(RollingDate={"Expression": "truncDate('DD', now())"}).

Why default is required (M.4.4.10d): without one, QS UI’s date picker initializes with no value and crashes on editor open with “epochMilliseconds must be a number, you gave: null”. Making the field type-required prevents the bug class from recurring at the wiring site.

Parameters:
  • name (ParameterName)

  • default (DateTimeDefaultValues)

  • time_granularity (Literal['YEAR', 'QUARTER', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'] | None)

  • mapped_dataset_params (list[tuple[Dataset, str]] | None)

default: DateTimeDefaultValues
emit()[source]
Return type:

ParameterDeclaration

mapped_dataset_params: list[tuple[Dataset, str]] | None = None
name: ParameterName
time_granularity: Literal['YEAR', 'QUARTER', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'] | None = None
class recon_gen.common.tree.parameters.IntegerParam(name, default=<factory>, multi_valued=False, mapped_dataset_params=None)[source]

Bases: object

Integer-valued parameter declaration.

Parameters:
  • name (ParameterName)

  • default (list[int])

  • multi_valued (bool)

  • mapped_dataset_params (list[tuple[Dataset, str]] | None)

default: list[int]
emit()[source]
Return type:

ParameterDeclaration

mapped_dataset_params: list[tuple[Dataset, str]] | None = None
multi_valued: bool = False
name: ParameterName
class recon_gen.common.tree.parameters.ParameterDeclLike(*args, **kwargs)[source]

Bases: Protocol

Structural type for parameter declaration tree nodes.

emit()[source]
Return type:

ParameterDeclaration

name: ParameterName
class recon_gen.common.tree.parameters.StringParam(name, default=<factory>, multi_valued=False, mapped_dataset_params=None, value_when_unset=None)[source]

Bases: object

String-valued parameter declaration.

Default values are passed as a list — single-valued parameters use [] for “no default” or ["value"] for one default; multi-valued use ["a", "b", "c"].

mapped_dataset_params: optional list of (Dataset, name) pairs binding this analysis parameter to one or more dataset-level parameters substituted via <<$name>> in the dataset’s CustomSql.

value_when_unset: optional string value QS substitutes when this parameter is “unset” at evaluation time. REQUIRED when this parameter feeds a CascadingControlConfiguration — the cascade machinery substitutes this value into its internal match expression; the QS UI default of NULL makes the expression invalid (“calculated field has invalid syntax” tooltip on the target control). Set to the same sentinel used for the dataset’s default so cascade-without-pick is a no-op narrowing instead of a NULL comparison. See docs/reference/quicksight-quirks.md.

Parameters:
  • name (ParameterName)

  • default (list[str])

  • multi_valued (bool)

  • mapped_dataset_params (list[tuple[Dataset, str]] | None)

  • value_when_unset (str | None)

default: list[str]
emit()[source]
Return type:

ParameterDeclaration

mapped_dataset_params: list[tuple[Dataset, str]] | None = None
multi_valued: bool = False
name: ParameterName
value_when_unset: str | None = None