diff --git a/vizro-core/schemas/0.2.0.dev0.json b/vizro-core/schemas/0.2.0.dev0.json index 63f4037f8..cfa0886da 100644 --- a/vizro-core/schemas/0.2.0.dev0.json +++ b/vizro-core/schemas/0.2.0.dev0.json @@ -1268,7 +1268,7 @@ }, "RangeSlider": { "additionalProperties": false, - "description": "Numeric multi-option selector `RangeSlider`.\n\nCan be provided to [`Filter`][vizro.models.Filter] or\n[`Parameter`][vizro.models.Parameter]. Based on the underlying\n[`dcc.RangeSlider`](https://dash.plotly.com/dash-core-components/rangeslider).\n\nArgs:\n type (Literal[\"range_slider\"]): Defaults to `\"range_slider\"`.\n min (Optional[float]): Start value for slider. Defaults to `None`.\n max (Optional[float]): End value for slider. Defaults to `None`.\n step (Optional[float]): Step-size for marks on slider. Defaults to `None`.\n marks (Optional[dict[float, str]]): Marks to be displayed on slider. Defaults to `{}`.\n value (Optional[list[float]]): Default start and end value for slider. Must be 2 items. Defaults to `None`.\n title (str): Title to be displayed. Defaults to `\"\"`.\n actions (list[Action]): See [`Action`][vizro.models.Action]. Defaults to `[]`.", + "description": "Numeric multi-option selector `RangeSlider`.\n\nCan be provided to [`Filter`][vizro.models.Filter] or\n[`Parameter`][vizro.models.Parameter]. Based on the underlying\n[`dcc.RangeSlider`](https://dash.plotly.com/dash-core-components/rangeslider).\n\nArgs:\n type (Literal[\"range_slider\"]): Defaults to `\"range_slider\"`.\n min (Optional[float]): Start value for slider. Defaults to `None`.\n max (Optional[float]): End value for slider. Defaults to `None`.\n step (Optional[float]): Step-size for marks on slider. Defaults to `None`.\n marks (Optional[dict[Union[float, int], str]]): Marks to be displayed on slider. Defaults to `{}`.\n value (Optional[list[float]]): Default start and end value for slider. Must be 2 items. Defaults to `None`.\n title (str): Title to be displayed. Defaults to `\"\"`.\n actions (list[Action]): See [`Action`][vizro.models.Action]. Defaults to `[]`.", "properties": { "id": { "default": "", @@ -1374,7 +1374,7 @@ }, "Slider": { "additionalProperties": false, - "description": "Numeric single-option selector `Slider`.\n\nCan be provided to [`Filter`][vizro.models.Filter] or\n[`Parameter`][vizro.models.Parameter]. Based on the underlying\n[`dcc.Slider`](https://dash.plotly.com/dash-core-components/slider).\n\nArgs:\n type (Literal[\"range_slider\"]): Defaults to `\"range_slider\"`.\n min (Optional[float]): Start value for slider. Defaults to `None`.\n max (Optional[float]): End value for slider. Defaults to `None`.\n step (Optional[float]): Step-size for marks on slider. Defaults to `None`.\n marks (Optional[dict[float, str]]): Marks to be displayed on slider. Defaults to `{}`.\n value (Optional[float]): Default value for slider. Defaults to `None`.\n title (str): Title to be displayed. Defaults to `\"\"`.\n actions (list[Action]): See [`Action`][vizro.models.Action]. Defaults to `[]`.", + "description": "Numeric single-option selector `Slider`.\n\nCan be provided to [`Filter`][vizro.models.Filter] or\n[`Parameter`][vizro.models.Parameter]. Based on the underlying\n[`dcc.Slider`](https://dash.plotly.com/dash-core-components/slider).\n\nArgs:\n type (Literal[\"range_slider\"]): Defaults to `\"range_slider\"`.\n min (Optional[float]): Start value for slider. Defaults to `None`.\n max (Optional[float]): End value for slider. Defaults to `None`.\n step (Optional[float]): Step-size for marks on slider. Defaults to `None`.\n marks (Optional[dict[Union[float, int], str]]): Marks to be displayed on slider. Defaults to `{}`.\n value (Optional[float]): Default value for slider. Defaults to `None`.\n title (str): Title to be displayed. Defaults to `\"\"`.\n actions (list[Action]): See [`Action`][vizro.models.Action]. Defaults to `[]`.", "properties": { "id": { "default": "", diff --git a/vizro-core/src/vizro/models/_components/form/_form_utils.py b/vizro-core/src/vizro/models/_components/form/_form_utils.py index 817b8d14b..dc369aa71 100644 --- a/vizro-core/src/vizro/models/_components/form/_form_utils.py +++ b/vizro-core/src/vizro/models/_components/form/_form_utils.py @@ -115,7 +115,7 @@ def validate_step(step, info: ValidationInfo): def set_default_marks( - marks: Optional[dict[Union[float, int], str]], info: ValidationInfo + marks: Optional[dict[float, str]], info: ValidationInfo ) -> Optional[dict[Union[float, int], str]]: if not marks and info.data.get("step") is None: marks = None diff --git a/vizro-core/src/vizro/models/_components/form/range_slider.py b/vizro-core/src/vizro/models/_components/form/range_slider.py index 5c7bff713..4a4651f65 100644 --- a/vizro-core/src/vizro/models/_components/form/range_slider.py +++ b/vizro-core/src/vizro/models/_components/form/range_slider.py @@ -46,7 +46,7 @@ class RangeSlider(VizroBaseModel): Field(default=None, description="Step-size for marks on slider."), ] marks: Annotated[ - Optional[dict[Union[float, int], str]], + Optional[dict[float, str]], AfterValidator(set_default_marks), Field(default={}, description="Marks to be displayed on slider.", validate_default=True), ] diff --git a/vizro-core/src/vizro/models/_components/form/slider.py b/vizro-core/src/vizro/models/_components/form/slider.py index 486b65581..414b37d97 100644 --- a/vizro-core/src/vizro/models/_components/form/slider.py +++ b/vizro-core/src/vizro/models/_components/form/slider.py @@ -46,7 +46,7 @@ class Slider(VizroBaseModel): Field(default=None, description="Step-size for marks on slider."), ] marks: Annotated[ - Optional[dict[Union[float, int], str]], + Optional[dict[float, str]], AfterValidator(set_default_marks), Field(default={}, description="Marks to be displayed on slider.", validate_default=True), ] diff --git a/vizro-core/tests/unit/vizro/models/_components/form/test_range_slider.py b/vizro-core/tests/unit/vizro/models/_components/form/test_range_slider.py index c9201100c..99e28fe30 100644 --- a/vizro-core/tests/unit/vizro/models/_components/form/test_range_slider.py +++ b/vizro-core/tests/unit/vizro/models/_components/form/test_range_slider.py @@ -240,7 +240,7 @@ def test_valid_marks(self, marks, expected): ] def test_invalid_marks(self): - with pytest.raises(ValidationError, match="6 validation errors for RangeSlider"): + with pytest.raises(ValidationError, match="4 validation errors for RangeSlider"): vm.RangeSlider(min=1, max=10, marks={"start": 0, "end": 10}) @pytest.mark.parametrize("step, expected", [(1, {}), (None, None)]) diff --git a/vizro-core/tests/unit/vizro/models/_components/form/test_slider.py b/vizro-core/tests/unit/vizro/models/_components/form/test_slider.py index 9e925ae5e..ebb7a7681 100755 --- a/vizro-core/tests/unit/vizro/models/_components/form/test_slider.py +++ b/vizro-core/tests/unit/vizro/models/_components/form/test_slider.py @@ -131,7 +131,7 @@ def test_valid_marks(self, marks, expected): ] def test_invalid_marks(self): - with pytest.raises(ValidationError, match="6 validation errors for Slider"): + with pytest.raises(ValidationError, match="4 validation errors for Slider"): vm.Slider(min=1, max=10, marks={"start": 0, "end": 10}) @pytest.mark.parametrize("step, expected", [(1, {}), (None, None)])