From 8a26d061a9b67957a7d119dea3fde95b82bbf57c Mon Sep 17 00:00:00 2001 From: p-mosein Date: Thu, 8 Jun 2023 17:24:57 +0300 Subject: [PATCH] Bump pydivkit and python codegen --- .../generators/python/python_entities.py | 37 +- .../tests/configs/python_config.json | 2 +- .../tests/references/python/entity.py | 2 +- .../references/python/entity_with_array.py | 8 +- .../python/entity_with_array_of_enums.py | 8 +- .../entity_with_array_of_expressions.py | 8 +- .../entity_with_array_of_nested_items.py | 16 +- .../entity_with_array_with_transform.py | 8 +- .../python/entity_with_complex_property.py | 12 +- ...ith_complex_property_with_default_value.py | 10 +- .../python/entity_with_entity_property.py | 4 +- .../entity_with_optional_complex_property.py | 10 +- .../python/entity_with_optional_property.py | 8 +- ...tity_with_optional_string_enum_property.py | 8 +- ...entity_with_property_with_default_value.py | 26 +- .../python/entity_with_required_property.py | 8 +- .../python/entity_with_simple_properties.py | 40 +- .../python/entity_with_strict_array.py | 8 +- .../entity_with_string_array_property.py | 8 +- .../entity_with_string_enum_property.py | 8 +- ...string_enum_property_with_default_value.py | 8 +- .../python/entity_without_properties.py | 4 +- .../reference_clean_unused_definitions.json | 314 ++-- .../references/reference_merge_allOfs.json | 264 ++-- .../reference_resolve_references.json | 426 +++--- .../reference_resolve_structure.json | 264 ++-- json-builder/python/codegen_config.json | 2 +- json-builder/python/poetry.lock | 1270 +++++++---------- json-builder/python/pydivkit/__init__.py | 4 +- json-builder/python/pydivkit/core/__init__.py | 4 +- json-builder/python/pydivkit/core/entities.py | 87 +- json-builder/python/pydivkit/core/fields.py | 20 +- json-builder/python/pydivkit/div/__init__.py | 51 +- .../python/pydivkit/div/boolean_variable.py | 12 +- .../python/pydivkit/div/color_variable.py | 12 +- json-builder/python/pydivkit/div/div.py | 8 +- .../pydivkit/div/div_absolute_edge_insets.py | 22 +- .../python/pydivkit/div/div_accessibility.py | 40 +- .../python/pydivkit/div/div_action.py | 38 +- .../pydivkit/div/div_alignment_horizontal.py | 2 +- .../pydivkit/div/div_alignment_vertical.py | 2 +- .../python/pydivkit/div/div_animation.py | 32 +- .../div/div_animation_interpolator.py | 2 +- .../div/div_appearance_set_transition.py | 8 +- .../pydivkit/div/div_appearance_transition.py | 2 +- .../python/pydivkit/div/div_aspect.py | 14 +- .../python/pydivkit/div/div_background.py | 2 +- json-builder/python/pydivkit/div/div_base.py | 75 +- .../python/pydivkit/div/div_blend_mode.py | 2 +- json-builder/python/pydivkit/div/div_blur.py | 36 + .../python/pydivkit/div/div_border.py | 12 +- .../div/div_change_bounds_transition.py | 16 +- .../pydivkit/div/div_change_set_transition.py | 8 +- .../pydivkit/div/div_change_transition.py | 2 +- .../python/pydivkit/div/div_circle_shape.py | 19 +- .../python/pydivkit/div/div_container.py | 189 +-- .../python/pydivkit/div/div_corners_radius.py | 20 +- json-builder/python/pydivkit/div/div_count.py | 2 +- .../pydivkit/div/div_currency_input_mask.py | 45 + .../python/pydivkit/div/div_custom.py | 83 +- json-builder/python/pydivkit/div/div_data.py | 40 +- .../div_default_indicator_item_placement.py | 35 + .../python/pydivkit/div/div_dimension.py | 12 +- .../pydivkit/div/div_disappear_action.py | 86 ++ .../pydivkit/div/div_download_callbacks.py | 12 +- .../python/pydivkit/div/div_drawable.py | 2 +- .../python/pydivkit/div/div_edge_insets.py | 24 +- .../python/pydivkit/div/div_extension.py | 8 +- .../pydivkit/div/div_fade_transition.py | 20 +- .../python/pydivkit/div/div_filter.py | 17 + .../python/pydivkit/div/div_fixed_count.py | 8 +- .../div/div_fixed_length_input_mask.py | 104 ++ .../python/pydivkit/div/div_fixed_size.py | 12 +- json-builder/python/pydivkit/div/div_focus.py | 40 +- .../python/pydivkit/div/div_font_family.py | 2 +- .../python/pydivkit/div/div_font_weight.py | 2 +- .../python/pydivkit/div/div_gallery.py | 115 +- .../python/pydivkit/div/div_gif_image.py | 127 +- json-builder/python/pydivkit/div/div_grid.py | 112 +- json-builder/python/pydivkit/div/div_image.py | 148 +- .../pydivkit/div/div_image_background.py | 39 +- .../python/pydivkit/div/div_image_scale.py | 3 +- .../python/pydivkit/div/div_indicator.py | 141 +- .../div/div_indicator_item_placement.py | 20 + .../python/pydivkit/div/div_infinity_count.py | 4 +- json-builder/python/pydivkit/div/div_input.py | 156 +- .../python/pydivkit/div/div_input_mask.py | 18 + .../pydivkit/div/div_input_mask_base.py | 30 + .../pydivkit/div/div_input_validator.py | 18 + .../pydivkit/div/div_input_validator_base.py | 44 + .../div/div_input_validator_expression.py | 54 + .../pydivkit/div/div_input_validator_regex.py | 54 + .../python/pydivkit/div/div_line_style.py | 2 +- .../pydivkit/div/div_linear_gradient.py | 16 +- .../pydivkit/div/div_match_parent_size.py | 8 +- .../pydivkit/div/div_neighbour_page_size.py | 6 +- .../pydivkit/div/div_nine_patch_background.py | 21 +- .../python/pydivkit/div/div_page_size.py | 8 +- json-builder/python/pydivkit/div/div_pager.py | 93 +- .../pydivkit/div/div_pager_layout_mode.py | 2 +- json-builder/python/pydivkit/div/div_patch.py | 22 +- .../pydivkit/div/div_percentage_size.py | 10 +- json-builder/python/pydivkit/div/div_pivot.py | 2 +- .../python/pydivkit/div/div_pivot_fixed.py | 20 +- .../pydivkit/div/div_pivot_percentage.py | 14 +- json-builder/python/pydivkit/div/div_point.py | 8 +- .../pydivkit/div/div_radial_gradient.py | 14 +- .../div/div_radial_gradient_center.py | 2 +- .../div/div_radial_gradient_fixed_center.py | 16 +- .../div/div_radial_gradient_radius.py | 2 +- .../div_radial_gradient_relative_center.py | 15 +- .../div_radial_gradient_relative_radius.py | 10 +- .../div/div_rounded_rectangle_shape.py | 17 +- .../pydivkit/div/div_scale_transition.py | 28 +- .../python/pydivkit/div/div_select.py | 332 +++++ .../python/pydivkit/div/div_separator.py | 106 +- .../python/pydivkit/div/div_shadow.py | 18 +- json-builder/python/pydivkit/div/div_shape.py | 2 +- .../python/pydivkit/div/div_shape_drawable.py | 14 +- json-builder/python/pydivkit/div/div_size.py | 2 +- .../python/pydivkit/div/div_size_unit.py | 2 +- .../pydivkit/div/div_slide_transition.py | 20 +- .../python/pydivkit/div/div_slider.py | 125 +- .../pydivkit/div/div_solid_background.py | 8 +- json-builder/python/pydivkit/div/div_state.py | 103 +- .../div_stretch_indicator_item_placement.py | 40 + .../python/pydivkit/div/div_stroke.py | 16 +- json-builder/python/pydivkit/div/div_tabs.py | 182 +-- json-builder/python/pydivkit/div/div_text.py | 294 ++-- .../python/pydivkit/div/div_text_gradient.py | 2 +- .../pydivkit/div/div_text_range_background.py | 17 + .../pydivkit/div/div_text_range_border.py | 40 + json-builder/python/pydivkit/div/div_timer.py | 81 ++ .../python/pydivkit/div/div_tooltip.py | 18 +- .../python/pydivkit/div/div_transform.py | 16 +- .../pydivkit/div/div_transition_base.py | 16 +- .../pydivkit/div/div_transition_selector.py | 2 +- .../pydivkit/div/div_transition_trigger.py | 2 +- .../python/pydivkit/div/div_trigger.py | 16 +- .../python/pydivkit/div/div_variable.py | 2 +- json-builder/python/pydivkit/div/div_video.py | 310 ++++ .../python/pydivkit/div/div_video_source.py | 96 ++ .../python/pydivkit/div/div_visibility.py | 2 +- .../pydivkit/div/div_visibility_action.py | 28 +- .../pydivkit/div/div_wrap_content_size.py | 49 +- .../python/pydivkit/div/integer_variable.py | 12 +- .../python/pydivkit/div/number_variable.py | 12 +- .../python/pydivkit/div/string_variable.py | 12 +- .../python/pydivkit/div/url_variable.py | 12 +- json-builder/python/pyproject.toml | 13 +- json-builder/python/tests/test_examples.py | 2 +- json-builder/python/tests/test_expr.py | 22 + json-builder/python/tests/test_ref_types.py | 121 ++ 153 files changed, 4816 insertions(+), 2856 deletions(-) create mode 100644 json-builder/python/pydivkit/div/div_blur.py create mode 100644 json-builder/python/pydivkit/div/div_currency_input_mask.py create mode 100644 json-builder/python/pydivkit/div/div_default_indicator_item_placement.py create mode 100644 json-builder/python/pydivkit/div/div_disappear_action.py create mode 100644 json-builder/python/pydivkit/div/div_filter.py create mode 100644 json-builder/python/pydivkit/div/div_fixed_length_input_mask.py create mode 100644 json-builder/python/pydivkit/div/div_indicator_item_placement.py create mode 100644 json-builder/python/pydivkit/div/div_input_mask.py create mode 100644 json-builder/python/pydivkit/div/div_input_mask_base.py create mode 100644 json-builder/python/pydivkit/div/div_input_validator.py create mode 100644 json-builder/python/pydivkit/div/div_input_validator_base.py create mode 100644 json-builder/python/pydivkit/div/div_input_validator_expression.py create mode 100644 json-builder/python/pydivkit/div/div_input_validator_regex.py create mode 100644 json-builder/python/pydivkit/div/div_select.py create mode 100644 json-builder/python/pydivkit/div/div_stretch_indicator_item_placement.py create mode 100644 json-builder/python/pydivkit/div/div_text_range_background.py create mode 100644 json-builder/python/pydivkit/div/div_text_range_border.py create mode 100644 json-builder/python/pydivkit/div/div_timer.py create mode 100644 json-builder/python/pydivkit/div/div_video.py create mode 100644 json-builder/python/pydivkit/div/div_video_source.py create mode 100644 json-builder/python/tests/test_expr.py create mode 100644 json-builder/python/tests/test_ref_types.py diff --git a/api_generator/api_generator/generators/python/python_entities.py b/api_generator/api_generator/generators/python/python_entities.py index 6a1c27b2b..d0beca44d 100644 --- a/api_generator/api_generator/generators/python/python_entities.py +++ b/api_generator/api_generator/generators/python/python_entities.py @@ -16,7 +16,8 @@ from ...schema.modeling.entities import ( Object, StaticString, String, - Url + StringEnumeration, + Url, ) from ... import utils from ...schema.modeling.text import Text, EMPTY @@ -121,20 +122,19 @@ class PythonEntity(Entity): instance_properties = self.instance_properties optional = list(map(lambda p: f'{p.escaped_name}: str = {p.static_value}', static_properties)) for p in cast(List[PythonProperty], instance_properties): - if p.optional: - optional.append(f'{p.escaped_name}: typing.Optional[{p.property_type_py.type_name(filename)}] = None') - else: - required.append(f'{p.escaped_name}: {p.property_type_py.type_name(filename)}') + optional.append(f'{p.escaped_name}: typing.Optional[{p.property_type_py.final_type(filename)}] = None') result = Text() result += 'def __init__(' result += Text(', '.join(main_required) + ',').indented(indent_width=4) for p in required + optional: result += Text(p + ',').indented(indent_width=4) + result += Text('**kwargs: typing.Any,').indented(indent_width=4) result += '):' super_init = Text('super().__init__(') for p in cast(List[PythonProperty], static_properties + instance_properties): escaped_name = p.escaped_name super_init += Text(f'{escaped_name}={escaped_name},').indented(indent_width=4) + super_init += Text('**kwargs,').indented(indent_width=4) super_init += ')' result += super_init.indented(indent_width=4) return result @@ -157,6 +157,7 @@ class PythonEntity(Entity): commentary, indent=indent, indent_first_line=False ) field += f", description={commentary}" + result += Text(f'{p.escaped_name}: str = Field({field})').indented(indent_width=4) dynamic_declaration = self.dynamic_properties_declaration if dynamic_declaration.lines: @@ -188,12 +189,12 @@ class PythonProperty(Property): def constructor_required_value(self, filename: str) -> Optional[str]: if self.optional: return None - return f'{self.escaped_name}: {self.property_type_py.type_name(filename)}' + return f'{self.escaped_name}: {self.property_type_py.final_type(filename)}' def constructor_optional_value(self, filename: str) -> Optional[str]: if not self.optional: return None - return f'{self.escaped_name}: typing.Optional[{self.property_type_py.type_name(filename)}] = None' + return f'{self.escaped_name}: typing.Optional[{self.property_type_py.final_type(filename)}] = None' @property def static_value(self) -> str: @@ -237,7 +238,7 @@ class PythonProperty(Property): else: prefix = '' suffix = '' - type_decl = f'{prefix}{self.property_type_py.type_name(filename)}{suffix}' + type_decl = f'{prefix}{self.property_type_py.final_type(filename)}{suffix}' fields_text = utils.indent(", \n".join(fields), indent=4) return Text(f'{self.escaped_name}: {type_decl} = Field(\n{fields_text})') @@ -255,6 +256,24 @@ class PythonPropertyType(PropertyType): return self.property_type_py.referenced_top_level_type_name return None + def is_expr(self) -> bool: + if isinstance(self, (Int, Double)): + return True + if isinstance(self, (Bool, BoolInt)): + return True + if isinstance(self, (Color, String, Url)): + return True + if isinstance(self, Object): + if isinstance(self.object, StringEnumeration): + return True + return False + + def final_type(self, filename: str) -> str: + typename = self.type_name(filename) + if self.is_expr(): + return f"typing.Union[Expr, {typename}]" + return typename + def type_name(self, filename: str) -> str: if isinstance(self, Int): return 'int' @@ -269,7 +288,7 @@ class PythonPropertyType(PropertyType): elif isinstance(self, Dictionary): return 'typing.Dict[str, typing.Any]' elif isinstance(self, PythonArray): - return f'typing.List[{self.property_type_py.type_name(filename)}]' + return f'typing.Sequence[{self.property_type_py.final_type(filename)}]' elif isinstance(self, Object): if self.object is None: raise ValueError(f'Invalid {self}') diff --git a/api_generator/tests/configs/python_config.json b/api_generator/tests/configs/python_config.json index 2faf5f91e..0674fca0d 100644 --- a/api_generator/tests/configs/python_config.json +++ b/api_generator/tests/configs/python_config.json @@ -1,4 +1,4 @@ { "lang": "python", - "header": "# Generated code. Do not modify.\n\nfrom __future__ import annotations\nfrom pydivkit.core import BaseDiv, Field\nimport enum\nimport typing\n" + "header": "# Generated code. Do not modify.\n\nfrom __future__ import annotations\nfrom pydivkit.core import BaseDiv, Field, Expr\nimport enum\nimport typing\n" } diff --git a/api_generator/tests/references/python/entity.py b/api_generator/tests/references/python/entity.py index d619be2e4..254684068 100644 --- a/api_generator/tests/references/python/entity.py +++ b/api_generator/tests/references/python/entity.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing diff --git a/api_generator/tests/references/python/entity_with_array.py b/api_generator/tests/references/python/entity_with_array.py index 1c2a3f34f..ddd924836 100644 --- a/api_generator/tests/references/python/entity_with_array.py +++ b/api_generator/tests/references/python/entity_with_array.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,16 +12,18 @@ class EntityWithArray(BaseDiv): def __init__( self, *, - array: typing.List[entity.Entity], type: str = 'entity_with_array', + array: typing.Optional[typing.Sequence[entity.Entity]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, array=array, + **kwargs, ) type: str = Field(default='entity_with_array') - array: typing.List[entity.Entity] = Field( + array: typing.Sequence[entity.Entity] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_array_of_enums.py b/api_generator/tests/references/python/entity_with_array_of_enums.py index 24ca4b8c0..aa59421fd 100644 --- a/api_generator/tests/references/python/entity_with_array_of_enums.py +++ b/api_generator/tests/references/python/entity_with_array_of_enums.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithArrayOfEnums(BaseDiv): def __init__( self, *, - items: typing.List[EntityWithArrayOfEnumsItem], type: str = 'entity_with_array_of_enums', + items: typing.Optional[typing.Sequence[typing.Union[Expr, EntityWithArrayOfEnumsItem]]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, items=items, + **kwargs, ) type: str = Field(default='entity_with_array_of_enums') - items: typing.List[EntityWithArrayOfEnumsItem] = Field( + items: typing.Sequence[typing.Union[Expr, EntityWithArrayOfEnumsItem]] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_array_of_expressions.py b/api_generator/tests/references/python/entity_with_array_of_expressions.py index dca9a0f12..28baf312a 100644 --- a/api_generator/tests/references/python/entity_with_array_of_expressions.py +++ b/api_generator/tests/references/python/entity_with_array_of_expressions.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithArrayOfExpressions(BaseDiv): def __init__( self, *, - items: typing.List[str], type: str = 'entity_with_array_of_expressions', + items: typing.Optional[typing.Sequence[typing.Union[Expr, str]]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, items=items, + **kwargs, ) type: str = Field(default='entity_with_array_of_expressions') - items: typing.List[str] = Field( + items: typing.Sequence[typing.Union[Expr, str]] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_array_of_nested_items.py b/api_generator/tests/references/python/entity_with_array_of_nested_items.py index a8b6df9dd..3bb34ac94 100644 --- a/api_generator/tests/references/python/entity_with_array_of_nested_items.py +++ b/api_generator/tests/references/python/entity_with_array_of_nested_items.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,16 +12,18 @@ class EntityWithArrayOfNestedItems(BaseDiv): def __init__( self, *, - items: typing.List[EntityWithArrayOfNestedItemsItem], type: str = 'entity_with_array_of_nested_items', + items: typing.Optional[typing.Sequence[EntityWithArrayOfNestedItemsItem]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, items=items, + **kwargs, ) type: str = Field(default='entity_with_array_of_nested_items') - items: typing.List[EntityWithArrayOfNestedItemsItem] = Field( + items: typing.Sequence[EntityWithArrayOfNestedItemsItem] = Field( min_items=1 ) @@ -30,17 +32,19 @@ class EntityWithArrayOfNestedItemsItem(BaseDiv): def __init__( self, *, - entity: entity.Entity, - property: str, + entity: typing.Optional[entity.Entity] = None, + property: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( entity=entity, property=property, + **kwargs, ) entity: entity.Entity = Field( ) - property: str = Field( + property: typing.Union[Expr, str] = Field( min_length=1 ) diff --git a/api_generator/tests/references/python/entity_with_array_with_transform.py b/api_generator/tests/references/python/entity_with_array_with_transform.py index 99b12fe45..f0ea1b4c3 100644 --- a/api_generator/tests/references/python/entity_with_array_with_transform.py +++ b/api_generator/tests/references/python/entity_with_array_with_transform.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithArrayWithTransform(BaseDiv): def __init__( self, *, - array: typing.List[str], type: str = 'entity_with_array_with_transform', + array: typing.Optional[typing.Sequence[typing.Union[Expr, str]]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, array=array, + **kwargs, ) type: str = Field(default='entity_with_array_with_transform') - array: typing.List[str] = Field( + array: typing.Sequence[typing.Union[Expr, str]] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_complex_property.py b/api_generator/tests/references/python/entity_with_complex_property.py index a2d3c223a..15601bd80 100644 --- a/api_generator/tests/references/python/entity_with_complex_property.py +++ b/api_generator/tests/references/python/entity_with_complex_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,12 +10,14 @@ class EntityWithComplexProperty(BaseDiv): def __init__( self, *, - property: EntityWithComplexPropertyProperty, type: str = 'entity_with_complex_property', + property: typing.Optional[EntityWithComplexPropertyProperty] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_complex_property') @@ -27,13 +29,15 @@ class EntityWithComplexPropertyProperty(BaseDiv): def __init__( self, *, - value: str, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( value=value, + **kwargs, ) - value: str = Field( + value: typing.Union[Expr, str] = Field( format="uri" ) diff --git a/api_generator/tests/references/python/entity_with_complex_property_with_default_value.py b/api_generator/tests/references/python/entity_with_complex_property_with_default_value.py index eee689c21..9f623673d 100644 --- a/api_generator/tests/references/python/entity_with_complex_property_with_default_value.py +++ b/api_generator/tests/references/python/entity_with_complex_property_with_default_value.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,10 +12,12 @@ class EntityWithComplexPropertyWithDefaultValue(BaseDiv): self, *, type: str = 'entity_with_complex_property_with_default_value', property: typing.Optional[EntityWithComplexPropertyWithDefaultValueProperty] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_complex_property_with_default_value') @@ -27,13 +29,15 @@ class EntityWithComplexPropertyWithDefaultValueProperty(BaseDiv): def __init__( self, *, - value: str, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( value=value, + **kwargs, ) - value: str = Field( + value: typing.Union[Expr, str] = Field( ) diff --git a/api_generator/tests/references/python/entity_with_entity_property.py b/api_generator/tests/references/python/entity_with_entity_property.py index 5762b4116..bb65b38e8 100644 --- a/api_generator/tests/references/python/entity_with_entity_property.py +++ b/api_generator/tests/references/python/entity_with_entity_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -14,10 +14,12 @@ class EntityWithEntityProperty(BaseDiv): self, *, type: str = 'entity_with_entity_property', entity: typing.Optional[entity.Entity] = None, + **kwargs: typing.Any, ): super().__init__( type=type, entity=entity, + **kwargs, ) type: str = Field(default='entity_with_entity_property') diff --git a/api_generator/tests/references/python/entity_with_optional_complex_property.py b/api_generator/tests/references/python/entity_with_optional_complex_property.py index 96b9f1bdc..9e537b716 100644 --- a/api_generator/tests/references/python/entity_with_optional_complex_property.py +++ b/api_generator/tests/references/python/entity_with_optional_complex_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,10 +12,12 @@ class EntityWithOptionalComplexProperty(BaseDiv): self, *, type: str = 'entity_with_optional_complex_property', property: typing.Optional[EntityWithOptionalComplexPropertyProperty] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_optional_complex_property') @@ -27,13 +29,15 @@ class EntityWithOptionalComplexPropertyProperty(BaseDiv): def __init__( self, *, - value: str, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( value=value, + **kwargs, ) - value: str = Field( + value: typing.Union[Expr, str] = Field( format="uri" ) diff --git a/api_generator/tests/references/python/entity_with_optional_property.py b/api_generator/tests/references/python/entity_with_optional_property.py index 70b8d9225..19cbf03f2 100644 --- a/api_generator/tests/references/python/entity_with_optional_property.py +++ b/api_generator/tests/references/python/entity_with_optional_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -11,15 +11,17 @@ class EntityWithOptionalProperty(BaseDiv): def __init__( self, *, type: str = 'entity_with_optional_property', - property: typing.Optional[str] = None, + property: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_optional_property') - property: typing.Optional[str] = Field( + property: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1 ) diff --git a/api_generator/tests/references/python/entity_with_optional_string_enum_property.py b/api_generator/tests/references/python/entity_with_optional_string_enum_property.py index 9e8988d2c..05f0825dc 100644 --- a/api_generator/tests/references/python/entity_with_optional_string_enum_property.py +++ b/api_generator/tests/references/python/entity_with_optional_string_enum_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -11,15 +11,17 @@ class EntityWithOptionalStringEnumProperty(BaseDiv): def __init__( self, *, type: str = 'entity_with_optional_string_enum_property', - property: typing.Optional[EntityWithOptionalStringEnumPropertyProperty] = None, + property: typing.Optional[typing.Union[Expr, EntityWithOptionalStringEnumPropertyProperty]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_optional_string_enum_property') - property: typing.Optional[EntityWithOptionalStringEnumPropertyProperty] = Field( + property: typing.Optional[typing.Union[Expr, EntityWithOptionalStringEnumPropertyProperty]] = Field( ) diff --git a/api_generator/tests/references/python/entity_with_property_with_default_value.py b/api_generator/tests/references/python/entity_with_property_with_default_value.py index 0b408f736..7c1bca1b7 100644 --- a/api_generator/tests/references/python/entity_with_property_with_default_value.py +++ b/api_generator/tests/references/python/entity_with_property_with_default_value.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -11,19 +11,21 @@ class EntityWithPropertyWithDefaultValue(BaseDiv): def __init__( self, *, type: str = 'entity_with_property_with_default_value', - int: typing.Optional[int] = None, + int: typing.Optional[typing.Union[Expr, int]] = None, nested: typing.Optional[EntityWithPropertyWithDefaultValueNested] = None, - url: typing.Optional[str] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, int=int, nested=nested, url=url, + **kwargs, ) type: str = Field(default='entity_with_property_with_default_value') - int: typing.Optional[int] = Field( + int: typing.Optional[typing.Union[Expr, int]] = Field( ) nested: typing.Optional[EntityWithPropertyWithDefaultValueNested] = Field( description=( @@ -31,7 +33,7 @@ class EntityWithPropertyWithDefaultValue(BaseDiv): "value for object withall-optional fields." ) ) - url: typing.Optional[str] = Field( + url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri" ) @@ -42,21 +44,23 @@ class EntityWithPropertyWithDefaultValueNested(BaseDiv): def __init__( self, *, - non_optional: str, - int: typing.Optional[int] = None, - url: typing.Optional[str] = None, + int: typing.Optional[typing.Union[Expr, int]] = None, + non_optional: typing.Optional[typing.Union[Expr, str]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( int=int, non_optional=non_optional, url=url, + **kwargs, ) - int: typing.Optional[int] = Field( + int: typing.Optional[typing.Union[Expr, int]] = Field( ) - non_optional: str = Field( + non_optional: typing.Union[Expr, str] = Field( ) - url: typing.Optional[str] = Field( + url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri" ) diff --git a/api_generator/tests/references/python/entity_with_required_property.py b/api_generator/tests/references/python/entity_with_required_property.py index fcee60323..a7e5d13db 100644 --- a/api_generator/tests/references/python/entity_with_required_property.py +++ b/api_generator/tests/references/python/entity_with_required_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithRequiredProperty(BaseDiv): def __init__( self, *, - property: str, type: str = 'entity_with_required_property', + property: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_required_property') - property: str = Field( + property: typing.Union[Expr, str] = Field( min_length=1 ) diff --git a/api_generator/tests/references/python/entity_with_simple_properties.py b/api_generator/tests/references/python/entity_with_simple_properties.py index c4c522dde..dba27ebac 100644 --- a/api_generator/tests/references/python/entity_with_simple_properties.py +++ b/api_generator/tests/references/python/entity_with_simple_properties.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,15 +12,16 @@ class EntityWithSimpleProperties(BaseDiv): def __init__( self, *, type: str = 'entity_with_simple_properties', - boolean: typing.Optional[bool] = None, - boolean_int: typing.Optional[bool] = None, - color: typing.Optional[str] = None, - double: typing.Optional[float] = None, - id: typing.Optional[int] = None, - integer: typing.Optional[int] = None, - positive_integer: typing.Optional[int] = None, - string: typing.Optional[str] = None, - url: typing.Optional[str] = None, + boolean: typing.Optional[typing.Union[Expr, bool]] = None, + boolean_int: typing.Optional[typing.Union[Expr, bool]] = None, + color: typing.Optional[typing.Union[Expr, str]] = None, + double: typing.Optional[typing.Union[Expr, float]] = None, + id: typing.Optional[typing.Union[Expr, int]] = None, + integer: typing.Optional[typing.Union[Expr, int]] = None, + positive_integer: typing.Optional[typing.Union[Expr, int]] = None, + string: typing.Optional[typing.Union[Expr, str]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -33,36 +34,37 @@ class EntityWithSimpleProperties(BaseDiv): positive_integer=positive_integer, string=string, url=url, + **kwargs, ) type: str = Field(default='entity_with_simple_properties') - boolean: typing.Optional[bool] = Field( + boolean: typing.Optional[typing.Union[Expr, bool]] = Field( description="Boolean property." ) - boolean_int: typing.Optional[bool] = Field( + boolean_int: typing.Optional[typing.Union[Expr, bool]] = Field( description="Boolean value in numeric format. @deprecated" ) - color: typing.Optional[str] = Field( + color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Color." ) - double: typing.Optional[float] = Field( + double: typing.Optional[typing.Union[Expr, float]] = Field( description="Floating point number." ) - id: typing.Optional[int] = Field( + id: typing.Optional[typing.Union[Expr, int]] = Field( description="ID. Can\'t contain expressions." ) - integer: typing.Optional[int] = Field( + integer: typing.Optional[typing.Union[Expr, int]] = Field( description="Integer." ) - positive_integer: typing.Optional[int] = Field( + positive_integer: typing.Optional[typing.Union[Expr, int]] = Field( description="Positive integer." ) - string: typing.Optional[str] = Field( + string: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description="String." ) - url: typing.Optional[str] = Field( + url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri" ) diff --git a/api_generator/tests/references/python/entity_with_strict_array.py b/api_generator/tests/references/python/entity_with_strict_array.py index b4dd2e480..2aaa3b9b5 100644 --- a/api_generator/tests/references/python/entity_with_strict_array.py +++ b/api_generator/tests/references/python/entity_with_strict_array.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -12,16 +12,18 @@ class EntityWithStrictArray(BaseDiv): def __init__( self, *, - array: typing.List[entity.Entity], type: str = 'entity_with_strict_array', + array: typing.Optional[typing.Sequence[entity.Entity]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, array=array, + **kwargs, ) type: str = Field(default='entity_with_strict_array') - array: typing.List[entity.Entity] = Field( + array: typing.Sequence[entity.Entity] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_string_array_property.py b/api_generator/tests/references/python/entity_with_string_array_property.py index 0e5711406..6ff448771 100644 --- a/api_generator/tests/references/python/entity_with_string_array_property.py +++ b/api_generator/tests/references/python/entity_with_string_array_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithStringArrayProperty(BaseDiv): def __init__( self, *, - array: typing.List[str], type: str = 'entity_with_string_array_property', + array: typing.Optional[typing.Sequence[typing.Union[Expr, str]]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, array=array, + **kwargs, ) type: str = Field(default='entity_with_string_array_property') - array: typing.List[str] = Field( + array: typing.Sequence[typing.Union[Expr, str]] = Field( min_items=1 ) diff --git a/api_generator/tests/references/python/entity_with_string_enum_property.py b/api_generator/tests/references/python/entity_with_string_enum_property.py index 6b8f3694e..f6ac45cc7 100644 --- a/api_generator/tests/references/python/entity_with_string_enum_property.py +++ b/api_generator/tests/references/python/entity_with_string_enum_property.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -10,16 +10,18 @@ class EntityWithStringEnumProperty(BaseDiv): def __init__( self, *, - property: EntityWithStringEnumPropertyProperty, type: str = 'entity_with_string_enum_property', + property: typing.Optional[typing.Union[Expr, EntityWithStringEnumPropertyProperty]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, property=property, + **kwargs, ) type: str = Field(default='entity_with_string_enum_property') - property: EntityWithStringEnumPropertyProperty = Field( + property: typing.Union[Expr, EntityWithStringEnumPropertyProperty] = Field( ) diff --git a/api_generator/tests/references/python/entity_with_string_enum_property_with_default_value.py b/api_generator/tests/references/python/entity_with_string_enum_property_with_default_value.py index bbc652b8c..4da1fc3b4 100644 --- a/api_generator/tests/references/python/entity_with_string_enum_property_with_default_value.py +++ b/api_generator/tests/references/python/entity_with_string_enum_property_with_default_value.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -11,15 +11,17 @@ class EntityWithStringEnumPropertyWithDefaultValue(BaseDiv): def __init__( self, *, type: str = 'entity_with_string_enum_property_with_default_value', - value: typing.Optional[EntityWithStringEnumPropertyWithDefaultValueValue] = None, + value: typing.Optional[typing.Union[Expr, EntityWithStringEnumPropertyWithDefaultValueValue]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default='entity_with_string_enum_property_with_default_value') - value: typing.Optional[EntityWithStringEnumPropertyWithDefaultValueValue] = Field( + value: typing.Optional[typing.Union[Expr, EntityWithStringEnumPropertyWithDefaultValueValue]] = Field( ) diff --git a/api_generator/tests/references/python/entity_without_properties.py b/api_generator/tests/references/python/entity_without_properties.py index 640102512..7dafde3b2 100644 --- a/api_generator/tests/references/python/entity_without_properties.py +++ b/api_generator/tests/references/python/entity_without_properties.py @@ -1,7 +1,7 @@ # Generated code. Do not modify. from __future__ import annotations -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Field, Expr import enum import typing @@ -11,9 +11,11 @@ class EntityWithoutProperties(BaseDiv): def __init__( self, *, type: str = 'entity_without_properties', + **kwargs: typing.Any, ): super().__init__( type=type, + **kwargs, ) type: str = Field(default='entity_without_properties') diff --git a/api_generator/tests/references/reference_clean_unused_definitions.json b/api_generator/tests/references/reference_clean_unused_definitions.json index d966e4c56..f87de9893 100644 --- a/api_generator/tests/references/reference_clean_unused_definitions.json +++ b/api_generator/tests/references/reference_clean_unused_definitions.json @@ -309,50 +309,6 @@ ] } }, - { - "translations.json": { - "entity_with_property_with_default_value_nested": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - }, - "entity_with_simple_properties": { - "en": "Entity with simple properties.", - "ru": "Объект с простыми свойствами." - }, - "entity_with_simple_properties_id": { - "en": "ID. Can't contain expressions.", - "ru": "Идентификатор. Не может содержать выражение." - }, - "entity_with_simple_properties_string": { - "en": "String.", - "ru": "Строка." - }, - "entity_with_simple_properties_integer": { - "en": "Integer.", - "ru": "Целое число." - }, - "entity_with_simple_properties_double": { - "en": "Floating point number.", - "ru": "Число с плавающей точкой." - }, - "entity_with_simple_properties_boolean": { - "en": "Boolean property.", - "ru": "Логическое значение." - }, - "entity_with_simple_properties_boolean_int": { - "en": "Boolean value in numeric format.", - "ru": "Логическое значение в числовом формате." - }, - "entity_with_simple_properties_positive_integer": { - "en": "Positive integer.", - "ru": "Положительное целое число." - }, - "entity_with_simple_properties_color": { - "en": "Color.", - "ru": "Цвет." - } - } - }, { "entity.json": { "anyOf": [ @@ -474,85 +430,47 @@ } }, { - "entity_with_property_with_default_value.json": { - "type": "object", - "definitions": {}, - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_property_with_default_value" - ] - }, - "int": { - "alias_dart": "iNum", - "$resolved_refs": [ - "#/definitions/int_prop", - "common.json#/non_negative_integer" - ], - "default_value": "0", - "type": "integer", - "constraint": "number >= 0" - }, - "url": { - "$resolved_refs": [ - "#/definitions/url_prop", - "common.json#/url" - ], - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "type": "string", - "format": "uri" - }, - "nested": { - "$resolved_refs": [ - "#/definitions/nested" - ], - "type": "object", - "properties": { - "int": { - "alias_dart": "iNum", - "$resolved_refs": [ - "#/definitions/int_prop", - "common.json#/non_negative_integer" - ], - "default_value": "0", - "type": "integer", - "constraint": "number >= 0", - "$typename": "int_prop" - }, - "url": { - "$resolved_refs": [ - "#/definitions/url_prop", - "common.json#/url" - ], - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "type": "string", - "format": "uri", - "$typename": "url_prop" - }, - "non_optional": { - "type": "string" - } - }, - "required": [ - "non_optional" - ], - "$typename": "nested", - "description_translations": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - } - } + "translations.json": { + "entity_with_property_with_default_value_nested": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." }, - "required": [ - "type" - ] + "entity_with_simple_properties": { + "en": "Entity with simple properties.", + "ru": "Объект с простыми свойствами." + }, + "entity_with_simple_properties_id": { + "en": "ID. Can't contain expressions.", + "ru": "Идентификатор. Не может содержать выражение." + }, + "entity_with_simple_properties_string": { + "en": "String.", + "ru": "Строка." + }, + "entity_with_simple_properties_integer": { + "en": "Integer.", + "ru": "Целое число." + }, + "entity_with_simple_properties_double": { + "en": "Floating point number.", + "ru": "Число с плавающей точкой." + }, + "entity_with_simple_properties_boolean": { + "en": "Boolean property.", + "ru": "Логическое значение." + }, + "entity_with_simple_properties_boolean_int": { + "en": "Boolean value in numeric format.", + "ru": "Логическое значение в числовом формате." + }, + "entity_with_simple_properties_positive_integer": { + "en": "Positive integer.", + "ru": "Положительное целое число." + }, + "entity_with_simple_properties_color": { + "en": "Color.", + "ru": "Цвет." + } } }, { @@ -717,54 +635,84 @@ } }, { - "entity_with_strict_array.json": { + "entity_with_property_with_default_value.json": { "type": "object", + "definitions": {}, "properties": { "type": { "type": "string", "enum": [ - "entity_with_strict_array" + "entity_with_property_with_default_value" ] }, - "array": { - "type": "array", - "items": { - "$resolved_refs": [ - "entity.json" - ], - "type": "$defined_entity" - }, - "minItems": 1, - "strictParsing": true - } - }, - "required": [ - "type", - "array" - ] - } - }, - { - "entity_with_string_array_property.json": { - "type": "object", - "properties": { - "type": { + "int": { + "alias_dart": "iNum", + "$resolved_refs": [ + "#/definitions/int_prop", + "common.json#/non_negative_integer" + ], + "default_value": "0", + "type": "integer", + "constraint": "number >= 0" + }, + "url": { + "$resolved_refs": [ + "#/definitions/url_prop", + "common.json#/url" + ], + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", "type": "string", - "enum": [ - "entity_with_string_array_property" - ] + "format": "uri" }, - "array": { - "type": "array", - "items": { - "type": "string" + "nested": { + "$resolved_refs": [ + "#/definitions/nested" + ], + "type": "object", + "properties": { + "int": { + "alias_dart": "iNum", + "$resolved_refs": [ + "#/definitions/int_prop", + "common.json#/non_negative_integer" + ], + "default_value": "0", + "type": "integer", + "constraint": "number >= 0", + "$typename": "int_prop" + }, + "url": { + "$resolved_refs": [ + "#/definitions/url_prop", + "common.json#/url" + ], + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", + "type": "string", + "format": "uri", + "$typename": "url_prop" + }, + "non_optional": { + "type": "string" + } }, - "minItems": 1 + "required": [ + "non_optional" + ], + "$typename": "nested", + "description_translations": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." + } } }, "required": [ - "type", - "array" + "type" ] } }, @@ -885,6 +833,58 @@ "ru": "Объект с простыми свойствами." } } + }, + { + "entity_with_strict_array.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_strict_array" + ] + }, + "array": { + "type": "array", + "items": { + "$resolved_refs": [ + "entity.json" + ], + "type": "$defined_entity" + }, + "minItems": 1, + "strictParsing": true + } + }, + "required": [ + "type", + "array" + ] + } + }, + { + "entity_with_string_array_property.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_string_array_property" + ] + }, + "array": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "type", + "array" + ] + } } ] } \ No newline at end of file diff --git a/api_generator/tests/references/reference_merge_allOfs.json b/api_generator/tests/references/reference_merge_allOfs.json index 01b2e04b9..fb97f81fa 100644 --- a/api_generator/tests/references/reference_merge_allOfs.json +++ b/api_generator/tests/references/reference_merge_allOfs.json @@ -288,50 +288,6 @@ ] } }, - { - "translations.json": { - "entity_with_property_with_default_value_nested": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - }, - "entity_with_simple_properties": { - "en": "Entity with simple properties.", - "ru": "Объект с простыми свойствами." - }, - "entity_with_simple_properties_id": { - "en": "ID. Can't contain expressions.", - "ru": "Идентификатор. Не может содержать выражение." - }, - "entity_with_simple_properties_string": { - "en": "String.", - "ru": "Строка." - }, - "entity_with_simple_properties_integer": { - "en": "Integer.", - "ru": "Целое число." - }, - "entity_with_simple_properties_double": { - "en": "Floating point number.", - "ru": "Число с плавающей точкой." - }, - "entity_with_simple_properties_boolean": { - "en": "Boolean property.", - "ru": "Логическое значение." - }, - "entity_with_simple_properties_boolean_int": { - "en": "Boolean value in numeric format.", - "ru": "Логическое значение в числовом формате." - }, - "entity_with_simple_properties_positive_integer": { - "en": "Positive integer.", - "ru": "Положительное целое число." - }, - "entity_with_simple_properties_color": { - "en": "Color.", - "ru": "Цвет." - } - } - }, { "entity.json": { "anyOf": [ @@ -396,61 +352,47 @@ } }, { - "entity_with_property_with_default_value.json": { - "type": "object", - "definitions": { - "int_prop": { - "$ref": "common.json#/non_negative_integer", - "default_value": "0" - }, - "url_prop": { - "$ref": "common.json#/url", - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru" - }, - "nested": { - "type": "object", - "properties": { - "int": { - "alias_dart": "iNum", - "$ref": "#/definitions/int_prop" - }, - "url": { - "$ref": "#/definitions/url_prop" - }, - "non_optional": { - "type": "string" - } - }, - "$description": "translations.json#/entity_with_property_with_default_value_nested", - "required": [ - "non_optional" - ] - } + "translations.json": { + "entity_with_property_with_default_value_nested": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." }, - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_property_with_default_value" - ] - }, - "int": { - "alias_dart": "iNum", - "$ref": "#/definitions/int_prop" - }, - "url": { - "$ref": "#/definitions/url_prop" - }, - "nested": { - "$ref": "#/definitions/nested" - } + "entity_with_simple_properties": { + "en": "Entity with simple properties.", + "ru": "Объект с простыми свойствами." }, - "required": [ - "type" - ] + "entity_with_simple_properties_id": { + "en": "ID. Can't contain expressions.", + "ru": "Идентификатор. Не может содержать выражение." + }, + "entity_with_simple_properties_string": { + "en": "String.", + "ru": "Строка." + }, + "entity_with_simple_properties_integer": { + "en": "Integer.", + "ru": "Целое число." + }, + "entity_with_simple_properties_double": { + "en": "Floating point number.", + "ru": "Число с плавающей точкой." + }, + "entity_with_simple_properties_boolean": { + "en": "Boolean property.", + "ru": "Логическое значение." + }, + "entity_with_simple_properties_boolean_int": { + "en": "Boolean value in numeric format.", + "ru": "Логическое значение в числовом формате." + }, + "entity_with_simple_properties_positive_integer": { + "en": "Positive integer.", + "ru": "Положительное целое число." + }, + "entity_with_simple_properties_color": { + "en": "Color.", + "ru": "Цвет." + } } }, { @@ -595,51 +537,60 @@ } }, { - "entity_with_strict_array.json": { + "entity_with_property_with_default_value.json": { "type": "object", + "definitions": { + "int_prop": { + "$ref": "common.json#/non_negative_integer", + "default_value": "0" + }, + "url_prop": { + "$ref": "common.json#/url", + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru" + }, + "nested": { + "type": "object", + "properties": { + "int": { + "alias_dart": "iNum", + "$ref": "#/definitions/int_prop" + }, + "url": { + "$ref": "#/definitions/url_prop" + }, + "non_optional": { + "type": "string" + } + }, + "$description": "translations.json#/entity_with_property_with_default_value_nested", + "required": [ + "non_optional" + ] + } + }, "properties": { "type": { "type": "string", "enum": [ - "entity_with_strict_array" + "entity_with_property_with_default_value" ] }, - "array": { - "type": "array", - "items": { - "$ref": "entity.json" - }, - "minItems": 1, - "strictParsing": true + "int": { + "alias_dart": "iNum", + "$ref": "#/definitions/int_prop" + }, + "url": { + "$ref": "#/definitions/url_prop" + }, + "nested": { + "$ref": "#/definitions/nested" } }, "required": [ - "type", - "array" - ] - } - }, - { - "entity_with_string_array_property.json": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_string_array_property" - ] - }, - "array": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "required": [ - "type", - "array" + "type" ] } }, @@ -708,6 +659,55 @@ "type" ] } + }, + { + "entity_with_strict_array.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_strict_array" + ] + }, + "array": { + "type": "array", + "items": { + "$ref": "entity.json" + }, + "minItems": 1, + "strictParsing": true + } + }, + "required": [ + "type", + "array" + ] + } + }, + { + "entity_with_string_array_property.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_string_array_property" + ] + }, + "array": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "type", + "array" + ] + } } ] } \ No newline at end of file diff --git a/api_generator/tests/references/reference_resolve_references.json b/api_generator/tests/references/reference_resolve_references.json index 0d8b6eaef..02085d8be 100644 --- a/api_generator/tests/references/reference_resolve_references.json +++ b/api_generator/tests/references/reference_resolve_references.json @@ -369,50 +369,6 @@ ] } }, - { - "translations.json": { - "entity_with_property_with_default_value_nested": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - }, - "entity_with_simple_properties": { - "en": "Entity with simple properties.", - "ru": "Объект с простыми свойствами." - }, - "entity_with_simple_properties_id": { - "en": "ID. Can't contain expressions.", - "ru": "Идентификатор. Не может содержать выражение." - }, - "entity_with_simple_properties_string": { - "en": "String.", - "ru": "Строка." - }, - "entity_with_simple_properties_integer": { - "en": "Integer.", - "ru": "Целое число." - }, - "entity_with_simple_properties_double": { - "en": "Floating point number.", - "ru": "Число с плавающей точкой." - }, - "entity_with_simple_properties_boolean": { - "en": "Boolean property.", - "ru": "Логическое значение." - }, - "entity_with_simple_properties_boolean_int": { - "en": "Boolean value in numeric format.", - "ru": "Логическое значение в числовом формате." - }, - "entity_with_simple_properties_positive_integer": { - "en": "Positive integer.", - "ru": "Положительное целое число." - }, - "entity_with_simple_properties_color": { - "en": "Color.", - "ru": "Цвет." - } - } - }, { "entity.json": { "anyOf": [ @@ -534,142 +490,47 @@ } }, { - "entity_with_property_with_default_value.json": { - "type": "object", - "definitions": { - "int_prop": { - "default_value": "0", - "$resolved_refs": [ - "common.json#/non_negative_integer" - ], - "type": "integer", - "constraint": "number >= 0" - }, - "url_prop": { - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "$resolved_refs": [ - "common.json#/url" - ], - "type": "string", - "format": "uri" - }, - "nested": { - "type": "object", - "properties": { - "int": { - "alias_dart": "iNum", - "$resolved_refs": [ - "#/definitions/int_prop", - "common.json#/non_negative_integer" - ], - "default_value": "0", - "type": "integer", - "constraint": "number >= 0" - }, - "url": { - "$resolved_refs": [ - "#/definitions/url_prop", - "common.json#/url" - ], - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "type": "string", - "format": "uri" - }, - "non_optional": { - "type": "string" - } - }, - "required": [ - "non_optional" - ], - "description_translations": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - } - } + "translations.json": { + "entity_with_property_with_default_value_nested": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." }, - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_property_with_default_value" - ] - }, - "int": { - "alias_dart": "iNum", - "$resolved_refs": [ - "#/definitions/int_prop", - "common.json#/non_negative_integer" - ], - "default_value": "0", - "type": "integer", - "constraint": "number >= 0" - }, - "url": { - "$resolved_refs": [ - "#/definitions/url_prop", - "common.json#/url" - ], - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "type": "string", - "format": "uri" - }, - "nested": { - "$resolved_refs": [ - "#/definitions/nested" - ], - "type": "object", - "properties": { - "int": { - "alias_dart": "iNum", - "$resolved_refs": [ - "#/definitions/int_prop", - "common.json#/non_negative_integer" - ], - "default_value": "0", - "type": "integer", - "constraint": "number >= 0", - "$typename": "int_prop" - }, - "url": { - "$resolved_refs": [ - "#/definitions/url_prop", - "common.json#/url" - ], - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru", - "type": "string", - "format": "uri", - "$typename": "url_prop" - }, - "non_optional": { - "type": "string" - } - }, - "required": [ - "non_optional" - ], - "$typename": "nested", - "description_translations": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - } - } + "entity_with_simple_properties": { + "en": "Entity with simple properties.", + "ru": "Объект с простыми свойствами." }, - "required": [ - "type" - ] + "entity_with_simple_properties_id": { + "en": "ID. Can't contain expressions.", + "ru": "Идентификатор. Не может содержать выражение." + }, + "entity_with_simple_properties_string": { + "en": "String.", + "ru": "Строка." + }, + "entity_with_simple_properties_integer": { + "en": "Integer.", + "ru": "Целое число." + }, + "entity_with_simple_properties_double": { + "en": "Floating point number.", + "ru": "Число с плавающей точкой." + }, + "entity_with_simple_properties_boolean": { + "en": "Boolean property.", + "ru": "Логическое значение." + }, + "entity_with_simple_properties_boolean_int": { + "en": "Boolean value in numeric format.", + "ru": "Логическое значение в числовом формате." + }, + "entity_with_simple_properties_positive_integer": { + "en": "Positive integer.", + "ru": "Положительное целое число." + }, + "entity_with_simple_properties_color": { + "en": "Color.", + "ru": "Цвет." + } } }, { @@ -858,54 +719,141 @@ } }, { - "entity_with_strict_array.json": { + "entity_with_property_with_default_value.json": { "type": "object", + "definitions": { + "int_prop": { + "default_value": "0", + "$resolved_refs": [ + "common.json#/non_negative_integer" + ], + "type": "integer", + "constraint": "number >= 0" + }, + "url_prop": { + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", + "$resolved_refs": [ + "common.json#/url" + ], + "type": "string", + "format": "uri" + }, + "nested": { + "type": "object", + "properties": { + "int": { + "alias_dart": "iNum", + "$resolved_refs": [ + "#/definitions/int_prop", + "common.json#/non_negative_integer" + ], + "default_value": "0", + "type": "integer", + "constraint": "number >= 0" + }, + "url": { + "$resolved_refs": [ + "#/definitions/url_prop", + "common.json#/url" + ], + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", + "type": "string", + "format": "uri" + }, + "non_optional": { + "type": "string" + } + }, + "required": [ + "non_optional" + ], + "description_translations": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." + } + } + }, "properties": { "type": { "type": "string", "enum": [ - "entity_with_strict_array" + "entity_with_property_with_default_value" ] }, - "array": { - "type": "array", - "items": { - "$resolved_refs": [ - "entity.json" - ], - "type": "$defined_entity" - }, - "minItems": 1, - "strictParsing": true - } - }, - "required": [ - "type", - "array" - ] - } - }, - { - "entity_with_string_array_property.json": { - "type": "object", - "properties": { - "type": { + "int": { + "alias_dart": "iNum", + "$resolved_refs": [ + "#/definitions/int_prop", + "common.json#/non_negative_integer" + ], + "default_value": "0", + "type": "integer", + "constraint": "number >= 0" + }, + "url": { + "$resolved_refs": [ + "#/definitions/url_prop", + "common.json#/url" + ], + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", "type": "string", - "enum": [ - "entity_with_string_array_property" - ] + "format": "uri" }, - "array": { - "type": "array", - "items": { - "type": "string" + "nested": { + "$resolved_refs": [ + "#/definitions/nested" + ], + "type": "object", + "properties": { + "int": { + "alias_dart": "iNum", + "$resolved_refs": [ + "#/definitions/int_prop", + "common.json#/non_negative_integer" + ], + "default_value": "0", + "type": "integer", + "constraint": "number >= 0", + "$typename": "int_prop" + }, + "url": { + "$resolved_refs": [ + "#/definitions/url_prop", + "common.json#/url" + ], + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru", + "type": "string", + "format": "uri", + "$typename": "url_prop" + }, + "non_optional": { + "type": "string" + } }, - "minItems": 1 + "required": [ + "non_optional" + ], + "$typename": "nested", + "description_translations": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." + } } }, "required": [ - "type", - "array" + "type" ] } }, @@ -1026,6 +974,58 @@ "ru": "Объект с простыми свойствами." } } + }, + { + "entity_with_strict_array.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_strict_array" + ] + }, + "array": { + "type": "array", + "items": { + "$resolved_refs": [ + "entity.json" + ], + "type": "$defined_entity" + }, + "minItems": 1, + "strictParsing": true + } + }, + "required": [ + "type", + "array" + ] + } + }, + { + "entity_with_string_array_property.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_string_array_property" + ] + }, + "array": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "type", + "array" + ] + } } ] } \ No newline at end of file diff --git a/api_generator/tests/references/reference_resolve_structure.json b/api_generator/tests/references/reference_resolve_structure.json index 01b2e04b9..fb97f81fa 100644 --- a/api_generator/tests/references/reference_resolve_structure.json +++ b/api_generator/tests/references/reference_resolve_structure.json @@ -288,50 +288,6 @@ ] } }, - { - "translations.json": { - "entity_with_property_with_default_value_nested": { - "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", - "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." - }, - "entity_with_simple_properties": { - "en": "Entity with simple properties.", - "ru": "Объект с простыми свойствами." - }, - "entity_with_simple_properties_id": { - "en": "ID. Can't contain expressions.", - "ru": "Идентификатор. Не может содержать выражение." - }, - "entity_with_simple_properties_string": { - "en": "String.", - "ru": "Строка." - }, - "entity_with_simple_properties_integer": { - "en": "Integer.", - "ru": "Целое число." - }, - "entity_with_simple_properties_double": { - "en": "Floating point number.", - "ru": "Число с плавающей точкой." - }, - "entity_with_simple_properties_boolean": { - "en": "Boolean property.", - "ru": "Логическое значение." - }, - "entity_with_simple_properties_boolean_int": { - "en": "Boolean value in numeric format.", - "ru": "Логическое значение в числовом формате." - }, - "entity_with_simple_properties_positive_integer": { - "en": "Positive integer.", - "ru": "Положительное целое число." - }, - "entity_with_simple_properties_color": { - "en": "Color.", - "ru": "Цвет." - } - } - }, { "entity.json": { "anyOf": [ @@ -396,61 +352,47 @@ } }, { - "entity_with_property_with_default_value.json": { - "type": "object", - "definitions": { - "int_prop": { - "$ref": "common.json#/non_negative_integer", - "default_value": "0" - }, - "url_prop": { - "$ref": "common.json#/url", - "schemes": [ - "https" - ], - "default_value": "https://yandex.ru" - }, - "nested": { - "type": "object", - "properties": { - "int": { - "alias_dart": "iNum", - "$ref": "#/definitions/int_prop" - }, - "url": { - "$ref": "#/definitions/url_prop" - }, - "non_optional": { - "type": "string" - } - }, - "$description": "translations.json#/entity_with_property_with_default_value_nested", - "required": [ - "non_optional" - ] - } + "translations.json": { + "entity_with_property_with_default_value_nested": { + "en": "non_optional is used to suppress auto-generation of default value for object with all-optional fields.", + "ru": "non_optional используется, чтобы запретить автогенерацию дефолтного значения для объекта, все свойства которого опциональны." }, - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_property_with_default_value" - ] - }, - "int": { - "alias_dart": "iNum", - "$ref": "#/definitions/int_prop" - }, - "url": { - "$ref": "#/definitions/url_prop" - }, - "nested": { - "$ref": "#/definitions/nested" - } + "entity_with_simple_properties": { + "en": "Entity with simple properties.", + "ru": "Объект с простыми свойствами." }, - "required": [ - "type" - ] + "entity_with_simple_properties_id": { + "en": "ID. Can't contain expressions.", + "ru": "Идентификатор. Не может содержать выражение." + }, + "entity_with_simple_properties_string": { + "en": "String.", + "ru": "Строка." + }, + "entity_with_simple_properties_integer": { + "en": "Integer.", + "ru": "Целое число." + }, + "entity_with_simple_properties_double": { + "en": "Floating point number.", + "ru": "Число с плавающей точкой." + }, + "entity_with_simple_properties_boolean": { + "en": "Boolean property.", + "ru": "Логическое значение." + }, + "entity_with_simple_properties_boolean_int": { + "en": "Boolean value in numeric format.", + "ru": "Логическое значение в числовом формате." + }, + "entity_with_simple_properties_positive_integer": { + "en": "Positive integer.", + "ru": "Положительное целое число." + }, + "entity_with_simple_properties_color": { + "en": "Color.", + "ru": "Цвет." + } } }, { @@ -595,51 +537,60 @@ } }, { - "entity_with_strict_array.json": { + "entity_with_property_with_default_value.json": { "type": "object", + "definitions": { + "int_prop": { + "$ref": "common.json#/non_negative_integer", + "default_value": "0" + }, + "url_prop": { + "$ref": "common.json#/url", + "schemes": [ + "https" + ], + "default_value": "https://yandex.ru" + }, + "nested": { + "type": "object", + "properties": { + "int": { + "alias_dart": "iNum", + "$ref": "#/definitions/int_prop" + }, + "url": { + "$ref": "#/definitions/url_prop" + }, + "non_optional": { + "type": "string" + } + }, + "$description": "translations.json#/entity_with_property_with_default_value_nested", + "required": [ + "non_optional" + ] + } + }, "properties": { "type": { "type": "string", "enum": [ - "entity_with_strict_array" + "entity_with_property_with_default_value" ] }, - "array": { - "type": "array", - "items": { - "$ref": "entity.json" - }, - "minItems": 1, - "strictParsing": true + "int": { + "alias_dart": "iNum", + "$ref": "#/definitions/int_prop" + }, + "url": { + "$ref": "#/definitions/url_prop" + }, + "nested": { + "$ref": "#/definitions/nested" } }, "required": [ - "type", - "array" - ] - } - }, - { - "entity_with_string_array_property.json": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "entity_with_string_array_property" - ] - }, - "array": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - }, - "required": [ - "type", - "array" + "type" ] } }, @@ -708,6 +659,55 @@ "type" ] } + }, + { + "entity_with_strict_array.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_strict_array" + ] + }, + "array": { + "type": "array", + "items": { + "$ref": "entity.json" + }, + "minItems": 1, + "strictParsing": true + } + }, + "required": [ + "type", + "array" + ] + } + }, + { + "entity_with_string_array_property.json": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "entity_with_string_array_property" + ] + }, + "array": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + }, + "required": [ + "type", + "array" + ] + } } ] } \ No newline at end of file diff --git a/json-builder/python/codegen_config.json b/json-builder/python/codegen_config.json index 8f5bb36b2..79ab82c6d 100644 --- a/json-builder/python/codegen_config.json +++ b/json-builder/python/codegen_config.json @@ -1,4 +1,4 @@ { "lang": "python", - "header": "# Generated code. Do not modify.\n# flake8: noqa: F401, F405, F811\n\nfrom __future__ import annotations\nfrom pydivkit.core import BaseDiv, Field\nimport enum\nimport typing\n\n" + "header": "# Generated code. Do not modify.\n# flake8: noqa: F401, F405, F811\n\nfrom __future__ import annotations\nfrom pydivkit.core import BaseDiv, Field, Expr\nimport enum\nimport typing\n\n" } diff --git a/json-builder/python/poetry.lock b/json-builder/python/poetry.lock index c8956e133..f5557ef01 100644 --- a/json-builder/python/poetry.lock +++ b/json-builder/python/poetry.lock @@ -1,54 +1,93 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + [[package]] name = "add-trailing-comma" -version = "2.3.0" +version = "2.4.0" description = "Automatically add trailing commas to calls and literals" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "add_trailing_comma-2.4.0-py2.py3-none-any.whl", hash = "sha256:88fc66ddb7554b3519529f8e14d6c793d1ae66ccd2a7d0d5396a421d955eb521"}, + {file = "add_trailing_comma-2.4.0.tar.gz", hash = "sha256:76c0e8a95cb4c06a7d9182db61573bb5253a76ee3a2bd0126b481cc0b4871713"}, +] [package.dependencies] tokenize-rt = ">=3.0.1" [[package]] name = "attrs" -version = "22.1.0" +version = "23.1.0" description = "Classes Without Boilerplate" -category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "autoflake" -version = "1.7.7" +version = "1.7.8" description = "Removes unused imports and unused variables" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "autoflake-1.7.8-py3-none-any.whl", hash = "sha256:46373ef69b6714f5064c923bb28bd797c4f8a9497f557d87fc36665c6d956b39"}, + {file = "autoflake-1.7.8.tar.gz", hash = "sha256:e7e46372dee46fa1c97acf310d99d922b63d369718a270809d7c278d34a194cf"}, +] [package.dependencies] -pyflakes = ">=1.1.0" +pyflakes = ">=1.1.0,<3" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] name = "black" -version = "22.10.0" +version = "23.3.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, +] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" +packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -57,40 +96,41 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "cfgv" -version = "3.3.1" -description = "Validate configuration and produce human readable error messages." -category = "dev" -optional = false -python-versions = ">=3.6.1" - [[package]] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "colorlog" version = "6.7.0" description = "Add colours to the output of Python's logging module." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "colorlog-6.7.0-py2.py3-none-any.whl", hash = "sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662"}, + {file = "colorlog-6.7.0.tar.gz", hash = "sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5"}, +] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} @@ -102,52 +142,54 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] name = "configargparse" version = "1.5.3" description = "A drop-in replacement for argparse that allows options to also be set via config files and/or environment variables." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "ConfigArgParse-1.5.3-py3-none-any.whl", hash = "sha256:18f6535a2db9f6e02bd5626cc7455eac3e96b9ab3d969d366f9aafd5c5c00fe7"}, + {file = "ConfigArgParse-1.5.3.tar.gz", hash = "sha256:1b0b3cbf664ab59dada57123c81eff3d9737e0d11d8cf79e3d6eb10823f1739f"}, +] [package.extras] -test = ["mock", "pytest", "pyyaml"] -yaml = ["pyyaml"] +test = ["PyYAML", "mock", "pytest"] +yaml = ["PyYAML"] [[package]] -name = "distlib" -version = "0.3.6" -description = "Distribution utilities" -category = "dev" +name = "exceptiongroup" +version = "1.1.1" +description = "Backport of PEP 654 (exception groups)" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, +] + +[package.extras] +test = ["pytest (>=6)"] [[package]] name = "fast-json" version = "0.3.2" description = "Combines best parts of json and ujson for fast serialization" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "fast-json-0.3.2.tar.gz", hash = "sha256:a1e706410cdc1b7bcab14383cdab9e093d7ca872ff761927c162bd7fda83ad2f"}, +] [package.dependencies] ujson = "*" -[[package]] -name = "filelock" -version = "3.8.0" -description = "A platform independent file lock." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] -testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] - [[package]] name = "fixit" version = "0.1.4" description = "A lint framework that writes better Python code for you." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "fixit-0.1.4-py3-none-any.whl", hash = "sha256:4d4db17b91e562637f78ffcb017e82b02b299863addf9907b57f05fafd45f8c4"}, + {file = "fixit-0.1.4.tar.gz", hash = "sha256:450281387eebb36fdc6027cdbd14d48a4d4b84134034bd0e50415aaeff272ced"}, +] [package.dependencies] flake8 = ">=3.8.1" @@ -163,9 +205,12 @@ dev = ["black (>=19.10b0)", "codecov (>=2.0.15)", "coverage (>=4.5.4)", "diff-co name = "flake8" version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.6.1" +files = [ + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" @@ -176,9 +221,12 @@ pyflakes = ">=2.5.0,<2.6.0" name = "gray" version = "0.10.2" description = "Less uncompromising Python code formatter" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "gray-0.10.2-py2.py3-none-any.whl", hash = "sha256:f137d088b2d6f06e830f5d8e29b7bff53c19585bae2809b379b53d8954cdc85f"}, + {file = "gray-0.10.2.tar.gz", hash = "sha256:5510e15b99e6532dfbc59d7e9ef0ac31f46e73f8602f35bfca036d4a34d481d0"}, +] [package.dependencies] add-trailing-comma = ">=2.1.0" @@ -194,61 +242,62 @@ unify = ">=0.5" [package.extras] develop = ["pre-commit (>=2.12,<3.0)", "pylama (>=7.7.1,<7.8.0)", "pytest (>=5.4.1,<5.5.0)", "wheel (>=0.36.2,<0.37.0)"] -[[package]] -name = "identify" -version = "2.5.6" -description = "File identification library for Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -license = ["ukkonen"] - [[package]] name = "importlib-resources" -version = "5.10.0" +version = "5.12.0" description = "Read resources from Python packages" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, + {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, +] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "isort" -version = "5.10.1" +version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false -python-versions = ">=3.6.1,<4.0" +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] [package.extras] -colors = ["colorama (>=0.4.3,<0.5.0)"] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] -requirements_deprecated_finder = ["pip-api", "pipreqs"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "jsonschema" -version = "4.16.0" +version = "4.17.3" description = "An implementation of JSON Schema validation for Python" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, + {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, +] [package.dependencies] attrs = ">=17.4.0" @@ -262,11 +311,42 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "libcst" -version = "0.4.7" +version = "1.0.0" description = "A concrete syntax tree with AST-like properties for Python 3.5, 3.6, 3.7, 3.8, 3.9, and 3.10 programs." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "libcst-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb3d38d6e228df5cd3ce2e62917239f20c272f5821124cb2fc8ac93e661a16d5"}, + {file = "libcst-1.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d7d05877510001fab8843da8c523c2cee6b202f8cfe4da69389e53114cbc05a7"}, + {file = "libcst-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40ba3a3243b43d32f0a74dff42be1278d923853082da78feb8965138015686fa"}, + {file = "libcst-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa948d82bd66188498dc241576fe660ff64007aa767ad50e2283d4a96f2b9d"}, + {file = "libcst-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:898a1e1d61efbc4a4658bab9af7fcb787d978fb9579ab2e37bf01121dfa03e84"}, + {file = "libcst-1.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:715e75401f4a2aeb13606ee0eb5252f59ed423a30fb3d5f97f02a1a01565cab0"}, + {file = "libcst-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e4a24daa7d71e2667d7a1db96104e1d2be22445bc383cdd305175344df4e3e10"}, + {file = "libcst-1.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d685bbdd666e17e844cd1f452987c59f51093a6e22ce17af74395426a9588d81"}, + {file = "libcst-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d5e1569660b73260f1b2c9910daab6a29a6597d46873a548efafcf625495a6f"}, + {file = "libcst-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bfba66b6d049e2f5266e7d2fefd99d90b90a7f5270904a15ec176f206495a7a"}, + {file = "libcst-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00439f1d7d800248d9f249154f9103d32524bdd3bddc3a28ae7e2544f0d0638b"}, + {file = "libcst-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:d90f8abad09a94a5dfb386d730df5db54e8e095665451bca780b0cb91787b522"}, + {file = "libcst-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9e7319193589fc7e34d16d9dfb1509f273b1a0b685203294e3dc43448da545b4"}, + {file = "libcst-1.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c500c5d65221d161bbf9dba917c8d06d95800d85a94914638a59e4f7ebf52c96"}, + {file = "libcst-1.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37149c7d35163290a2d3fd029735110beaae5e068e6799ed54860b9546048e30"}, + {file = "libcst-1.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:778a54edb6a785e0c78a727287017f0200ce2fd994246d1017a72a51de4e0677"}, + {file = "libcst-1.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3d3468e4823f51bcf84b14aac47e23938a5ad579d65e8a5ebb30078f0416f205"}, + {file = "libcst-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a38f5071cc38578e09a80f96c9e1a20fe7b78d3cc15d97e562d261076a763195"}, + {file = "libcst-1.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:823972ed0c6197dcd02940bdda016224534fa4517e651742f8430a46f9a200a3"}, + {file = "libcst-1.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b45cbf0abf9c07b969e3eda0183486fc2439bef6e1bf88fe68dd31b930f727"}, + {file = "libcst-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:393263e80ae1df4fdc04c6df0019715c5bab1d8add4eed434c699951cf31293d"}, + {file = "libcst-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9168899f5f1476c426f2ec5c5f66cb643503ac244bcd70feb74f81499d81d58"}, + {file = "libcst-1.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:4892a84bd9c5a62239de326fc86234b2913a0d1ace391040be8443be05bbc642"}, + {file = "libcst-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e41ff5f24e59db5be08b85817c8bae77d37d56c6d999125bfa17daccf0dbbef8"}, + {file = "libcst-1.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8b2b914804c0ec03446293139b8d00d5ee4f5d95d1f98b06a27e86e76f3e9020"}, + {file = "libcst-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b45eade33b0870debf2a7fade2f28cc34c8f99d192ca59e064c45d9f8763c70"}, + {file = "libcst-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:221c2bc5a6b6ed431b31c47d4de8ae6a8224bfbf161601c47abead1084b47271"}, + {file = "libcst-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7988cfeacbdff652774e9ccee5f25a418487733d98b13d38c4c4e4ba5d7a16ff"}, + {file = "libcst-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:57de502a8fd84bf086732c72303f51dcece9b9f114bd64225e4c928b34a67b19"}, + {file = "libcst-1.0.0.tar.gz", hash = "sha256:aaf3471c11a7dfc76c46d0b80e64bde5d066d88393fe14b79bcaeb6753744bae"}, +] [package.dependencies] pyyaml = ">=5.2" @@ -274,528 +354,26 @@ typing-extensions = ">=3.7.4.2" typing-inspect = ">=0.4.0" [package.extras] -dev = ["black (==22.3.0)", "coverage (>=4.5.4)", "fixit (==0.1.1)", "flake8 (>=3.7.8)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.0.3)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<0.9)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.9)", "setuptools-rust (>=0.12.1)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==1.3)", "usort (==1.0.0rc1)"] +dev = ["Sphinx (>=5.1.1)", "black (==23.1.0)", "build (>=0.10.0)", "coverage (>=4.5.4)", "fixit (==0.1.1)", "flake8 (>=3.7.8,<5)", "hypothesis (>=4.36.0)", "hypothesmith (>=0.0.4)", "jinja2 (==3.1.2)", "jupyter (>=1.0.0)", "maturin (>=0.8.3,<0.14)", "nbsphinx (>=0.4.2)", "prompt-toolkit (>=2.0.9)", "pyre-check (==0.9.10)", "setuptools-rust (>=1.5.2)", "setuptools-scm (>=6.0.1)", "slotscheck (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "ufmt (==2.1.0)", "usort (==1.0.6)"] [[package]] name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] [[package]] name = "mypy" version = "0.931" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.6" - -[package.dependencies] -mypy-extensions = ">=0.4.3" -tomli = ">=1.1.0" -typing-extensions = ">=3.10" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -python2 = ["typed-ast (>=1.4.0,<2)"] - -[[package]] -name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "nodeenv" -version = "1.7.0" -description = "Node.js virtual environment builder" -category = "dev" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" - -[[package]] -name = "packaging" -version = "21.3" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" - -[[package]] -name = "pathspec" -version = "0.10.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] - -[[package]] -name = "pluggy" -version = "1.0.0" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pre-commit" -version = "2.20.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -toml = "*" -virtualenv = ">=20.0.8" - -[[package]] -name = "prettylog" -version = "0.3.0" -description = "Let's write beautiful logs" -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -colorlog = "*" -fast-json = "*" - -[package.extras] -develop = ["coverage (!=4.3)", "pylama", "pytest", "pytest-cov", "timeout-decorator", "tox (>=2.4)"] - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "pycodestyle" -version = "2.9.1" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "pydocstyle" -version = "6.1.1" -description = "Python docstring style checker" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -snowballstemmer = "*" - -[package.extras] -toml = ["toml"] - -[[package]] -name = "pyflakes" -version = "2.5.0" -description = "passive checker of Python programs" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "pylama" -version = "8.4.1" -description = "Code audit tool for python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -mccabe = ">=0.7.0" -pycodestyle = ">=2.9.1" -pydocstyle = ">=6.1.1" -pyflakes = ">=2.5.0" - -[package.extras] -all = ["eradicate", "mypy", "pylint", "radon", "vulture"] -eradicate = ["eradicate"] -mypy = ["mypy"] -pylint = ["pylint"] -radon = ["radon"] -tests = ["eradicate (>=2.0.0)", "mypy", "pylama-quotes", "pylint (>=2.11.1)", "pytest (>=7.1.2)", "pytest-mypy", "radon (>=5.1.0)", "toml", "types-setuptools", "types-toml", "vulture"] -toml = ["toml (>=0.10.2)"] -vulture = ["vulture"] - -[[package]] -name = "pyparsing" -version = "3.0.9" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" -optional = false -python-versions = ">=3.6.8" - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - -[[package]] -name = "pyrsistent" -version = "0.18.1" -description = "Persistent/Functional/Immutable data structures" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pytest" -version = "7.1.3" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -attrs = ">=19.2.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -tomli = ">=1.0.0" - -[package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] - -[[package]] -name = "pytest-asyncio" -version = "0.18.3" -description = "Pytest support for asyncio" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -pytest = ">=6.1.0" - -[package.extras] -testing = ["coverage (==6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (==0.931)", "pytest-trio (>=0.7.0)"] - -[[package]] -name = "pyupgrade" -version = "3.1.0" -description = "A tool to automatically upgrade syntax for newer versions." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -tokenize-rt = ">=3.2.0" - -[[package]] -name = "pyyaml" -version = "6.0" -description = "YAML parser and emitter for Python" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "teamcity-messages" -version = "1.31" -description = "Send test results to TeamCity continuous integration server from unittest, nose, py.test, twisted trial, behave (Python 2.6+)" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "tokenize-rt" -version = "5.0.0" -description = "A wrapper around the stdlib `tokenize` which roundtrips." -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "tomli" -version = "2.0.1" -description = "A lil' TOML parser" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "typing-extensions" -version = "4.4.0" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "typing-inspect" -version = "0.8.0" -description = "Runtime inspection utilities for typing module." -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -mypy-extensions = ">=0.3.0" -typing-extensions = ">=3.7.4" - -[[package]] -name = "ujson" -version = "5.5.0" -description = "Ultra fast JSON encoder and decoder for Python" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "unify" -version = "0.5" -description = "Modifies strings to all use the same (single/double) quote where possible." -category = "dev" -optional = false -python-versions = "*" - -[package.dependencies] -untokenize = "*" - -[[package]] -name = "untokenize" -version = "0.1.1" -description = "Transforms tokens into original source code (while preserving whitespace)." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "virtualenv" -version = "20.16.5" -description = "Virtual Python Environment builder" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -distlib = ">=0.3.5,<1" -filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" - -[package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "yesqa" -version = "1.4.0" -description = "Automatically remove unnecessary `# noqa` comments." -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -flake8 = ">=3.9" -tokenize-rt = ">=2.1" - -[[package]] -name = "zipp" -version = "3.10.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.8" -content-hash = "b7739d82e3df78621b6ec5ddea4c49ee924d9ec9a6acfa0dffc4d6bf0ab1be8f" - -[metadata.files] -add-trailing-comma = [ - {file = "add_trailing_comma-2.3.0-py2.py3-none-any.whl", hash = "sha256:a63a495bae8f357c71792429cb0829fc7a7f93be989f43f9520a6fe08c94d035"}, - {file = "add_trailing_comma-2.3.0.tar.gz", hash = "sha256:9ad133414966018bae5904ad9a116bdf1715c105815f374e103b0de15268dae0"}, -] -attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, -] -autoflake = [ - {file = "autoflake-1.7.7-py3-none-any.whl", hash = "sha256:a9b43d08f8e455824e4f7b3f078399f59ba538ba53872f466c09e55c827773ef"}, - {file = "autoflake-1.7.7.tar.gz", hash = "sha256:c8e4fc41aa3eae0f5c94b939e3a3d50923d7a9306786a6cbf4866a077b8f6832"}, -] -black = [ - {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, - {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, - {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, - {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, - {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, - {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, - {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, - {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, - {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, - {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, - {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, - {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, - {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, - {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, - {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, - {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, - {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, - {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, - {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, - {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, - {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, -] -cfgv = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] -colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, -] -colorlog = [ - {file = "colorlog-6.7.0-py2.py3-none-any.whl", hash = "sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662"}, - {file = "colorlog-6.7.0.tar.gz", hash = "sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5"}, -] -configargparse = [ - {file = "ConfigArgParse-1.5.3-py3-none-any.whl", hash = "sha256:18f6535a2db9f6e02bd5626cc7455eac3e96b9ab3d969d366f9aafd5c5c00fe7"}, - {file = "ConfigArgParse-1.5.3.tar.gz", hash = "sha256:1b0b3cbf664ab59dada57123c81eff3d9737e0d11d8cf79e3d6eb10823f1739f"}, -] -distlib = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, -] -fast-json = [ - {file = "fast-json-0.3.2.tar.gz", hash = "sha256:a1e706410cdc1b7bcab14383cdab9e093d7ca872ff761927c162bd7fda83ad2f"}, -] -filelock = [ - {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, - {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, -] -fixit = [ - {file = "fixit-0.1.4-py3-none-any.whl", hash = "sha256:4d4db17b91e562637f78ffcb017e82b02b299863addf9907b57f05fafd45f8c4"}, - {file = "fixit-0.1.4.tar.gz", hash = "sha256:450281387eebb36fdc6027cdbd14d48a4d4b84134034bd0e50415aaeff272ced"}, -] -flake8 = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, -] -gray = [ - {file = "gray-0.10.2-py2.py3-none-any.whl", hash = "sha256:f137d088b2d6f06e830f5d8e29b7bff53c19585bae2809b379b53d8954cdc85f"}, - {file = "gray-0.10.2.tar.gz", hash = "sha256:5510e15b99e6532dfbc59d7e9ef0ac31f46e73f8602f35bfca036d4a34d481d0"}, -] -identify = [ - {file = "identify-2.5.6-py2.py3-none-any.whl", hash = "sha256:b276db7ec52d7e89f5bc4653380e33054ddc803d25875952ad90b0f012cbcdaa"}, - {file = "identify-2.5.6.tar.gz", hash = "sha256:6c32dbd747aa4ceee1df33f25fed0b0f6e0d65721b15bd151307ff7056d50245"}, -] -importlib-resources = [ - {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"}, - {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] -jsonschema = [ - {file = "jsonschema-4.16.0-py3-none-any.whl", hash = "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9"}, - {file = "jsonschema-4.16.0.tar.gz", hash = "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23"}, -] -libcst = [ - {file = "libcst-0.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dc6f8965b6ca68d47e11321772887d81fa6fd8ea86e6ef87434ca2147de10747"}, - {file = "libcst-0.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f47d809df59fcd83058b777b86a300154ee3a1f1b0523a398a67b5f8affd4c"}, - {file = "libcst-0.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0d19de56aa733b4ef024527e3ce4896d4b0e9806889797f409ec24caa651a44"}, - {file = "libcst-0.4.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31da97bc986dc3f7a97f7d431fa911932aaf716d2f8bcda947fc964afd3b57cd"}, - {file = "libcst-0.4.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b2e2c5e33e53669c20de0853cecfac1ffb8657ee727ab8527140f39049b820"}, - {file = "libcst-0.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:76fae68bd6b7ce069e267b3322c806b4305341cea78d161ae40e0ed641c8c660"}, - {file = "libcst-0.4.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bac76d69980bb3254f503f52128c256ef4d1bcbaabe4a17c3a9ebcd1fc0472c0"}, - {file = "libcst-0.4.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f86535271eaefe84a99736875566a038449f92e1a2a61ea0b588d8359fbefd"}, - {file = "libcst-0.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:617f7fa2610a8c86cf22d8d03416f25391383d05bd0ad1ca8ef68023ddd6b4f6"}, - {file = "libcst-0.4.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3637fffe476c5b4ee2225c6474b83382518f2c1b2fe4771039e06bdd7835a4a"}, - {file = "libcst-0.4.7-cp37-cp37m-win_amd64.whl", hash = "sha256:f56565124c2541adee0634e411b2126b3f335306d19e91ed2bfe52efa698b219"}, - {file = "libcst-0.4.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0ca2771ff3cfdf1f148349f89fcae64afa365213ed5c2703a69a89319325d0c8"}, - {file = "libcst-0.4.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa438131b7befc7e5a3cbadb5a7b1506305de5d62262ea0556add0152f40925e"}, - {file = "libcst-0.4.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6bd66a8be2ffad7b968d90dae86c62fd4739c0e011d71f3e76544a891ae743"}, - {file = "libcst-0.4.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:214a9c4f4f90cd5b4bfa18e17877da4dd9a896821d9af9be86fa3effdc289b9b"}, - {file = "libcst-0.4.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a37f2b459a8b51a41e260bd89c24ae41ab1d658f610c91650c79b1bbf27138"}, - {file = "libcst-0.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:2f6766391d90472f036b88a95251c87d498ab068c377724f212ab0cc20509a68"}, - {file = "libcst-0.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:234293aa8681a3d47fef1716c5622797a81cbe85a9381fe023815468cfe20eed"}, - {file = "libcst-0.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fa618dc359663a0a097c633452b104c1ca93365da7a811e655c6944f6b323239"}, - {file = "libcst-0.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3569d9901c18940632414fb7a0943bffd326db9f726a9c041664926820857815"}, - {file = "libcst-0.4.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beb5347e46b419f782589da060e9300957e71d561aa5574309883b71f93c1dfe"}, - {file = "libcst-0.4.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e541ccfeebda1ae5f005fc120a5bf3e8ac9ccfda405ec3efd3df54fc4688ac3"}, - {file = "libcst-0.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:3a2b7253cd2e3f0f8a3e23b5c2acb492811d865ef36e0816091c925f32b713d2"}, - {file = "libcst-0.4.7.tar.gz", hash = "sha256:95c52c2130531f6e726a3b077442cfd486975435fecf3db8224d43fba7b85099"}, -] -mccabe = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] -mypy = [ +files = [ {file = "mypy-0.931-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c5b42d0815e15518b1f0990cff7a705805961613e701db60387e6fb663fe78a"}, {file = "mypy-0.931-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c89702cac5b302f0c5d33b172d2b55b5df2bede3344a2fbed99ff96bddb2cf00"}, {file = "mypy-0.931-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:300717a07ad09525401a508ef5d105e6b56646f7942eb92715a1c8d610149714"}, @@ -817,103 +395,227 @@ mypy = [ {file = "mypy-0.931-py3-none-any.whl", hash = "sha256:1171f2e0859cfff2d366da2c7092b06130f232c636a3f7301e3feb8b41f6377d"}, {file = "mypy-0.931.tar.gz", hash = "sha256:0038b21890867793581e4cb0d810829f5fd4441aa75796b53033af3aa30430ce"}, ] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = ">=1.1.0" +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<2)"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -nodeenv = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, + +[[package]] +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, + +[[package]] +name = "pathspec" +version = "0.11.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] -pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, -] -pkgutil-resolve-name = [ + +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +description = "Resolve a name to an object." +optional = false +python-versions = ">=3.6" +files = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, ] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, + +[[package]] +name = "platformdirs" +version = "3.5.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, + {file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, ] -pluggy = [ + +[package.extras] +docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.6" +files = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -pre-commit = [ - {file = "pre_commit-2.20.0-py2.py3-none-any.whl", hash = "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7"}, - {file = "pre_commit-2.20.0.tar.gz", hash = "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959"}, -] -prettylog = [ + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "prettylog" +version = "0.3.0" +description = "Let's write beautiful logs" +optional = false +python-versions = "*" +files = [ {file = "prettylog-0.3.0-py3-none-any.whl", hash = "sha256:d0880b5fb0986237e21511e85a6c2a942a0087e65ad0a836b77a5b59ce44cd58"}, {file = "prettylog-0.3.0.tar.gz", hash = "sha256:e417a7988ef26b457ef9021e0e6417d01d0c49b41732a0fe255b5bed109396f0"}, ] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pycodestyle = [ + +[package.dependencies] +colorlog = "*" +fast-json = "*" + +[package.extras] +develop = ["coverage (!=4.3)", "pylama", "pytest", "pytest-cov", "timeout-decorator", "tox (>=2.4)"] + +[[package]] +name = "pycodestyle" +version = "2.9.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.6" +files = [ {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, ] -pydocstyle = [ - {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, - {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, -] -pyflakes = [ + +[[package]] +name = "pyflakes" +version = "2.5.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.6" +files = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] -pylama = [ - {file = "pylama-8.4.1-py3-none-any.whl", hash = "sha256:5bbdbf5b620aba7206d688ed9fc917ecd3d73e15ec1a89647037a09fa3a86e60"}, - {file = "pylama-8.4.1.tar.gz", hash = "sha256:2d4f7aecfb5b7466216d48610c7d6bad1c3990c29cdd392ad08259b161e486f6"}, + +[[package]] +name = "pyrsistent" +version = "0.19.3" +description = "Persistent/Functional/Immutable data structures" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, + {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, + {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, + {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, + {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, + {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, ] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + +[[package]] +name = "pytest" +version = "7.3.1" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, + {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, ] -pyrsistent = [ - {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, - {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, - {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, - {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, -] -pytest = [ - {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, - {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, -] -pytest-asyncio = [ + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.18.3" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.7" +files = [ {file = "pytest-asyncio-0.18.3.tar.gz", hash = "sha256:7659bdb0a9eb9c6e3ef992eef11a2b3e69697800ad02fb06374a210d85b29f91"}, {file = "pytest_asyncio-0.18.3-1-py3-none-any.whl", hash = "sha256:16cf40bdf2b4fb7fc8e4b82bd05ce3fbcd454cbf7b92afc445fe299dabb88213"}, {file = "pytest_asyncio-0.18.3-py3-none-any.whl", hash = "sha256:8fafa6c52161addfd41ee7ab35f11836c5a16ec208f93ee388f752bea3493a84"}, ] -pyupgrade = [ - {file = "pyupgrade-3.1.0-py2.py3-none-any.whl", hash = "sha256:77c6101a710be3e24804891e43388cedbee617258e93b09c8c5e58de08617758"}, - {file = "pyupgrade-3.1.0.tar.gz", hash = "sha256:7a8d393d85e15e0e2753e90b7b2e173b9d29dfd71e61f93d93e985b242627ed3"}, + +[package.dependencies] +pytest = ">=6.1.0" + +[package.extras] +testing = ["coverage (==6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (==0.931)", "pytest-trio (>=0.7.0)"] + +[[package]] +name = "pyupgrade" +version = "3.4.0" +description = "A tool to automatically upgrade syntax for newer versions." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyupgrade-3.4.0-py2.py3-none-any.whl", hash = "sha256:98b6bee32149f662da1aa038cb9baf93d592ae696059acd613db6ff583583048"}, + {file = "pyupgrade-3.4.0.tar.gz", hash = "sha256:f6bcf0d5e59170d178a2630e981d0e7b04d9b13f3c0e7e62f3e6bab582f841e4"}, ] -pyyaml = [ + +[package.dependencies] +tokenize-rt = ">=3.2.0" + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, @@ -955,116 +657,168 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -teamcity-messages = [ - {file = "teamcity-messages-1.31.tar.gz", hash = "sha256:00ba119a31c19e67c6f88cc6a6b994bfb1919fd3a6ac2f7f837e64a6ddb180b9"}, - {file = "teamcity_messages-1.31-py3-none-any.whl", hash = "sha256:008ddb8b31a342edfb065bebce5470246c3e397b208235a57795da3181977eb8"}, -] -tokenize-rt = [ + +[[package]] +name = "tokenize-rt" +version = "5.0.0" +description = "A wrapper around the stdlib `tokenize` which roundtrips." +optional = false +python-versions = ">=3.7" +files = [ {file = "tokenize_rt-5.0.0-py2.py3-none-any.whl", hash = "sha256:c67772c662c6b3dc65edf66808577968fb10badfc2042e3027196bed4daf9e5a"}, {file = "tokenize_rt-5.0.0.tar.gz", hash = "sha256:3160bc0c3e8491312d0485171dea861fc160a240f5f5766b72a1165408d10740"}, ] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + +[[package]] +name = "typing-extensions" +version = "4.6.3" +description = "Backported and Experimental Type Hints for Python 3.7+" +optional = false +python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] -typing-inspect = [ - {file = "typing_inspect-0.8.0-py3-none-any.whl", hash = "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188"}, - {file = "typing_inspect-0.8.0.tar.gz", hash = "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d"}, + +[[package]] +name = "typing-inspect" +version = "0.9.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +files = [ + {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, + {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, ] -ujson = [ - {file = "ujson-5.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ff4928dc1e9704b567171c16787238201fdbf023665573c12c02146fe1e02eec"}, - {file = "ujson-5.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1dc2f46c31ef22b0aaa28cd71be897bea271e700636658d573df9c43c49ebbd0"}, - {file = "ujson-5.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6019e3480d933d3698f2ecb4b46d64bfadd64e718f04fac36e681f3254b49a93"}, - {file = "ujson-5.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5179088ef6487c475604b7898731a6ddeeada7702cfb2162155b016703a8475"}, - {file = "ujson-5.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c04ae27e076d81a3839047d8eed57c1e17e361640616fd520d752375e3ba8f0c"}, - {file = "ujson-5.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:60a4b481978ea2aad8fe8af1ecc271624d01b3cf4b09e9b643dd2fe19c07634c"}, - {file = "ujson-5.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a09d203983104918c62f2eef9406f24c355511f9217967df23e70fa7f5b54ff"}, - {file = "ujson-5.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b9812638d7aa8ecda2e8e1513fb4da999249603bffab7439a5f8f0bb362b0db"}, - {file = "ujson-5.5.0-cp310-cp310-win32.whl", hash = "sha256:33cd9084fefc74cbacf88c92fd260b61211e00bcde38d640c369e5dc34a2b4e1"}, - {file = "ujson-5.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:765d46f3d5e7a1d48075035e2d1a9164f683e3fccde834ca04602e6c588835bc"}, - {file = "ujson-5.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:278aa9d7cb56435c96d19f5d702e026bcf69f824e24b41e9b52706abd3565837"}, - {file = "ujson-5.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9585892091ae86045135d6a6129a644142d6a51b23e1428bb5de6d10bc0ce0c7"}, - {file = "ujson-5.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cdc46859024501c20ab74ad542cdf2f08b94b5ce384f2f569483fa3ed926d04"}, - {file = "ujson-5.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5bea13c73f36c4346808df3fa806596163a7962b6d28001ca2a391cab856089"}, - {file = "ujson-5.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f3f4240d99d55eb97cb012e9adf401f5ed9cd827af0341ac44603832202b0d2"}, - {file = "ujson-5.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d93940664a5ccfd79f72dcb939b0c31a3479889f14f0eb95ec52976f8c0cae7d"}, - {file = "ujson-5.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:880c84ce59f49776cf120f77e7ca04877c97c6887917078dbc369eb47004d7cf"}, - {file = "ujson-5.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:977bf5be704a88d46bf5b228df8b44521b1f3119d741062191608b3a6a38f224"}, - {file = "ujson-5.5.0-cp311-cp311-win32.whl", hash = "sha256:e0b36257dc90194784531c3b922d8d31fb2b4d8e5adfd27aff4eee7174176365"}, - {file = "ujson-5.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a34a5f034b339f69ef7f6a134c22d04b92e07b6ddc1dd65382e7e4ec65d6437d"}, - {file = "ujson-5.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f26544bc10c83a2ff9aa2e093500c1b473f327faae31fb468d591e5823333376"}, - {file = "ujson-5.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fd797a4837ba10671954e7c09010cec7aca67e09d193f4920a16beea5f66f65"}, - {file = "ujson-5.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d7cfac2547c93389fa303fc0c0eb6698825564e8389c41c9b60009c746207b6"}, - {file = "ujson-5.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4875cafc9a6482c04c7df52a725d1c41beb74913c0ff4ec8f189f1954a2afe9"}, - {file = "ujson-5.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0762a4fdf86e01f3f8d8b6b7158d01fdd870799ff3f402b676e358fcd879e7eb"}, - {file = "ujson-5.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6c7ae6e0778ab9610f5e80e0595957d101ab8de18c32a8c053a19943ef4831d0"}, - {file = "ujson-5.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:94874584b733a18b310b0e954d53168e62cd4a0fd9db85b1903f0902a7eb33e8"}, - {file = "ujson-5.5.0-cp37-cp37m-win32.whl", hash = "sha256:3b74467564814fbce322427a5664e6bcc7dae6dbc8acbef76300fe43ca4072ab"}, - {file = "ujson-5.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:59cdcd934385f36e8bd76aedc234371cc75c848d95bdce804ac8aa8744cfeffa"}, - {file = "ujson-5.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2e506ecf89b6b9d304362ccef770831ec242a52c89dab1b4aabf1ab0eb1d5ed6"}, - {file = "ujson-5.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10095160dbe6bba8059ad6677a01da251431f4c68041bf796dcac0956b34f8f7"}, - {file = "ujson-5.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5035bb997d163f346c22abcec75190e7e756a5349e7c708bd3d5fd7066a9a854"}, - {file = "ujson-5.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d12f2d2df195c8c4e49d2cdbad640353a856c62ca2c624d8b47aa33b65a2a2"}, - {file = "ujson-5.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a485117f97312bef45f5d79d2ff97eff4da503b8a04f3691f59d31141686459"}, - {file = "ujson-5.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:21678d7e068707e4d54bdfeb8c250ebc548b51e499aed778b22112ca31a79669"}, - {file = "ujson-5.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a9b1320d8363a42d857fae8065a2174d38217cdd58cd8dc4f48d54e0591271e"}, - {file = "ujson-5.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:701e81e047f5c0cffd4ac828efca68b0bd270c616654966a051e9a5f836b385e"}, - {file = "ujson-5.5.0-cp38-cp38-win32.whl", hash = "sha256:1cef44ea4973344baed3d50a5da4a8843de3a6af7dea7fadf0a594e53ce5892f"}, - {file = "ujson-5.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e510d288e613d6927796dfb728e13e4530fc83b9ccac5888a21f7860486eab21"}, - {file = "ujson-5.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e1135264bcd40965cd35b0869e36952f54825024befdc7a923df9a7d83cfd800"}, - {file = "ujson-5.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:703fd69d9cb21d6ec2086789df9be2cf8140a76ff127050c24007ea8940dcd3b"}, - {file = "ujson-5.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:849f2ff40264152f25589cb48ddb4a43d14db811f841ec73989bfc0c8c4853fa"}, - {file = "ujson-5.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf416a93e1331820c77e3429df26946dbd4fe105e9b487cd2d1b7298b75784a8"}, - {file = "ujson-5.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:593a0f6fb0e186c5ba65465ed6f6215a30d1efa898c25e74de1c8577a1bff6d0"}, - {file = "ujson-5.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c20cc83b0df47129ec6ed8a47fa7dcfc309c5bad029464004162738502568bb"}, - {file = "ujson-5.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6f83be8257b2f2dd6dea5ee62cd28db90584da7a7af1fba77a2102fc7943638a"}, - {file = "ujson-5.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8141f654432cf75144d6103bfac2286b8adf23467201590b173a74535d6be22d"}, - {file = "ujson-5.5.0-cp39-cp39-win32.whl", hash = "sha256:3fe1aea596f9539fc20cd9e52f098c842afc090168824fd4ca9744fe13151a03"}, - {file = "ujson-5.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:a655f7b755cfc5c07f2116b6dcf0ba148c89adef9a6d40c1b0f1fada878c4345"}, - {file = "ujson-5.5.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f19f11055ba2961eb39bdb1ff15763a53fca4fa0b5b624da3c7a528e83cdd09c"}, - {file = "ujson-5.5.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d87c817b292efb748f1974f37e8bb8a8772ef92f05f84e507159360814bcc3f"}, - {file = "ujson-5.5.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f9681ec4c60d0da590552427d770636d9079038c30b265f507ccde23caa7823"}, - {file = "ujson-5.5.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f63d1ae1ca17bb2c847e298c7bcf084a73d56d434b4c50509fb93a4b4300b0b2"}, - {file = "ujson-5.5.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:95603eff711b8f3b9596e1c961dbeb745a792ba1904141612f194e07edd71e5f"}, - {file = "ujson-5.5.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2d90414e3b4b44b39825049185959488e084ea7fcaf6124afd5c00893938b09d"}, - {file = "ujson-5.5.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7471d4486f23518cff343f1eec6c68d1b977ed74c3e6cc3e1ac896b9b7d68645"}, - {file = "ujson-5.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee9a2c9a4b2421e77f8fe33ed0621dea03c66c710707553020b1e32f3afb6240"}, - {file = "ujson-5.5.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a8cb3c8637006c5bd8237ebb5992a76ba06e39988ad5cff2096227443e8fd6a"}, - {file = "ujson-5.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d9c89c521dc90c7564358e525f849b93ad1d710553c1491f66b8cce8113bc901"}, - {file = "ujson-5.5.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ab011e3556a9a1d9461bd686870c527327765ed02fe53550531d6609a8a33ff"}, - {file = "ujson-5.5.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:603607f56a0ee84d9cd2c7e9b1d29b18a70684b94ee34f07b9ffe8dc9c8a9f81"}, - {file = "ujson-5.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75bef34e69e7effb7b4849e3f830e3174d2cc6ec7273503fdde111c222dc9b3"}, - {file = "ujson-5.5.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abfe83e082c9208891e2158c1b5044a650ecec408b823bf6bf16cd7f8085cafa"}, - {file = "ujson-5.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4ef4ab8352861b99bd7fedb1fc6df3ea7f7d5216c789ba6d859e4ea06f1a4c45"}, - {file = "ujson-5.5.0.tar.gz", hash = "sha256:b25077a971c7da47bd6846a912a747f6963776d90720c88603b1b55d81790780"}, + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "ujson" +version = "5.7.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ujson-5.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5eba5e69e4361ac3a311cf44fa71bc619361b6e0626768a494771aacd1c2f09b"}, + {file = "ujson-5.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aae4d9e1b4c7b61780f0a006c897a4a1904f862fdab1abb3ea8f45bd11aa58f3"}, + {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2e43ccdba1cb5c6d3448eadf6fc0dae7be6c77e357a3abc968d1b44e265866d"}, + {file = "ujson-5.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54384ce4920a6d35fa9ea8e580bc6d359e3eb961fa7e43f46c78e3ed162d56ff"}, + {file = "ujson-5.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24ad1aa7fc4e4caa41d3d343512ce68e41411fb92adf7f434a4d4b3749dc8f58"}, + {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:afff311e9f065a8f03c3753db7011bae7beb73a66189c7ea5fcb0456b7041ea4"}, + {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e80f0d03e7e8646fc3d79ed2d875cebd4c83846e129737fdc4c2532dbd43d9e"}, + {file = "ujson-5.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:137831d8a0db302fb6828ee21c67ad63ac537bddc4376e1aab1c8573756ee21c"}, + {file = "ujson-5.7.0-cp310-cp310-win32.whl", hash = "sha256:7df3fd35ebc14dafeea031038a99232b32f53fa4c3ecddb8bed132a43eefb8ad"}, + {file = "ujson-5.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:af4639f684f425177d09ae409c07602c4096a6287027469157bfb6f83e01448b"}, + {file = "ujson-5.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b0f2680ce8a70f77f5d70aaf3f013d53e6af6d7058727a35d8ceb4a71cdd4e9"}, + {file = "ujson-5.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a19fd8e7d8cc58a169bea99fed5666023adf707a536d8f7b0a3c51dd498abf"}, + {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6abb8e6d8f1ae72f0ed18287245f5b6d40094e2656d1eab6d99d666361514074"}, + {file = "ujson-5.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8cd622c069368d5074bd93817b31bdb02f8d818e57c29e206f10a1f9c6337dd"}, + {file = "ujson-5.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14f9082669f90e18e64792b3fd0bf19f2b15e7fe467534a35ea4b53f3bf4b755"}, + {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d7ff6ebb43bc81b057724e89550b13c9a30eda0f29c2f506f8b009895438f5a6"}, + {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f7f241488879d91a136b299e0c4ce091996c684a53775e63bb442d1a8e9ae22a"}, + {file = "ujson-5.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5593263a7fcfb934107444bcfba9dde8145b282de0ee9f61e285e59a916dda0f"}, + {file = "ujson-5.7.0-cp311-cp311-win32.whl", hash = "sha256:26c2b32b489c393106e9cb68d0a02e1a7b9d05a07429d875c46b94ee8405bdb7"}, + {file = "ujson-5.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:ed24406454bb5a31df18f0a423ae14beb27b28cdfa34f6268e7ebddf23da807e"}, + {file = "ujson-5.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:18679484e3bf9926342b1c43a3bd640f93a9eeeba19ef3d21993af7b0c44785d"}, + {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee295761e1c6c30400641f0a20d381633d7622633cdf83a194f3c876a0e4b7e"}, + {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b738282e12a05f400b291966630a98d622da0938caa4bc93cf65adb5f4281c60"}, + {file = "ujson-5.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00343501dbaa5172e78ef0e37f9ebd08040110e11c12420ff7c1f9f0332d939e"}, + {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c0d1f7c3908357ee100aa64c4d1cf91edf99c40ac0069422a4fd5fd23b263263"}, + {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a5d2f44331cf04689eafac7a6596c71d6657967c07ac700b0ae1c921178645da"}, + {file = "ujson-5.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:16b2254a77b310f118717715259a196662baa6b1f63b1a642d12ab1ff998c3d7"}, + {file = "ujson-5.7.0-cp37-cp37m-win32.whl", hash = "sha256:6faf46fa100b2b89e4db47206cf8a1ffb41542cdd34dde615b2fc2288954f194"}, + {file = "ujson-5.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ff0004c3f5a9a6574689a553d1b7819d1a496b4f005a7451f339dc2d9f4cf98c"}, + {file = "ujson-5.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:75204a1dd7ec6158c8db85a2f14a68d2143503f4bafb9a00b63fe09d35762a5e"}, + {file = "ujson-5.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7312731c7826e6c99cdd3ac503cd9acd300598e7a80bcf41f604fee5f49f566c"}, + {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b9dc5a90e2149643df7f23634fe202fed5ebc787a2a1be95cf23632b4d90651"}, + {file = "ujson-5.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6a6961fc48821d84b1198a09516e396d56551e910d489692126e90bf4887d29"}, + {file = "ujson-5.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b01a9af52a0d5c46b2c68e3f258fdef2eacaa0ce6ae3e9eb97983f5b1166edb6"}, + {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7316d3edeba8a403686cdcad4af737b8415493101e7462a70ff73dd0609eafc"}, + {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4ee997799a23227e2319a3f8817ce0b058923dbd31904761b788dc8f53bd3e30"}, + {file = "ujson-5.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dda9aa4c33435147262cd2ea87c6b7a1ca83ba9b3933ff7df34e69fee9fced0c"}, + {file = "ujson-5.7.0-cp38-cp38-win32.whl", hash = "sha256:bea8d30e362180aafecabbdcbe0e1f0b32c9fa9e39c38e4af037b9d3ca36f50c"}, + {file = "ujson-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:c96e3b872bf883090ddf32cc41957edf819c5336ab0007d0cf3854e61841726d"}, + {file = "ujson-5.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6411aea4c94a8e93c2baac096fbf697af35ba2b2ed410b8b360b3c0957a952d3"}, + {file = "ujson-5.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d3b3499c55911f70d4e074c626acdb79a56f54262c3c83325ffb210fb03e44d"}, + {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341f891d45dd3814d31764626c55d7ab3fd21af61fbc99d070e9c10c1190680b"}, + {file = "ujson-5.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f242eec917bafdc3f73a1021617db85f9958df80f267db69c76d766058f7b19"}, + {file = "ujson-5.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3af9f9f22a67a8c9466a32115d9073c72a33ae627b11de6f592df0ee09b98b6"}, + {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a3d794afbf134df3056a813e5c8a935208cddeae975bd4bc0ef7e89c52f0ce0"}, + {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:800bf998e78dae655008dd10b22ca8dc93bdcfcc82f620d754a411592da4bbf2"}, + {file = "ujson-5.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5ac3d5c5825e30b438ea92845380e812a476d6c2a1872b76026f2e9d8060fc2"}, + {file = "ujson-5.7.0-cp39-cp39-win32.whl", hash = "sha256:cd90027e6d93e8982f7d0d23acf88c896d18deff1903dd96140613389b25c0dd"}, + {file = "ujson-5.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:523ee146cdb2122bbd827f4dcc2a8e66607b3f665186bce9e4f78c9710b6d8ab"}, + {file = "ujson-5.7.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e87cec407ec004cf1b04c0ed7219a68c12860123dfb8902ef880d3d87a71c172"}, + {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bab10165db6a7994e67001733f7f2caf3400b3e11538409d8756bc9b1c64f7e8"}, + {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b522be14a28e6ac1cf818599aeff1004a28b42df4ed4d7bc819887b9dac915fc"}, + {file = "ujson-5.7.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7592f40175c723c032cdbe9fe5165b3b5903604f774ab0849363386e99e1f253"}, + {file = "ujson-5.7.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ed22f9665327a981f288a4f758a432824dc0314e4195a0eaeb0da56a477da94d"}, + {file = "ujson-5.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:adf445a49d9a97a5a4c9bb1d652a1528de09dd1c48b29f79f3d66cea9f826bf6"}, + {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64772a53f3c4b6122ed930ae145184ebaed38534c60f3d859d8c3f00911eb122"}, + {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35209cb2c13fcb9d76d249286105b4897b75a5e7f0efb0c0f4b90f222ce48910"}, + {file = "ujson-5.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90712dfc775b2c7a07d4d8e059dd58636bd6ff1776d79857776152e693bddea6"}, + {file = "ujson-5.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0e4e8981c6e7e9e637e637ad8ffe948a09e5434bc5f52ecbb82b4b4cfc092bfb"}, + {file = "ujson-5.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:581c945b811a3d67c27566539bfcb9705ea09cb27c4be0002f7a553c8886b817"}, + {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d36a807a24c7d44f71686685ae6fbc8793d784bca1adf4c89f5f780b835b6243"}, + {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b4257307e3662aa65e2644a277ca68783c5d51190ed9c49efebdd3cbfd5fa44"}, + {file = "ujson-5.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea7423d8a2f9e160c5e011119741682414c5b8dce4ae56590a966316a07a4618"}, + {file = "ujson-5.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4c592eb91a5968058a561d358d0fef59099ed152cfb3e1cd14eee51a7a93879e"}, + {file = "ujson-5.7.0.tar.gz", hash = "sha256:e788e5d5dcae8f6118ac9b45d0b891a0d55f7ac480eddcb7f07263f2bcf37b23"}, ] -unify = [ + +[[package]] +name = "unify" +version = "0.5" +description = "Modifies strings to all use the same (single/double) quote where possible." +optional = false +python-versions = "*" +files = [ {file = "unify-0.5.tar.gz", hash = "sha256:8ddce812b2457212b7598fe574c9e6eb3ad69710f445391338270c7f8a71723c"}, ] -untokenize = [ + +[package.dependencies] +untokenize = "*" + +[[package]] +name = "untokenize" +version = "0.1.1" +description = "Transforms tokens into original source code (while preserving whitespace)." +optional = false +python-versions = "*" +files = [ {file = "untokenize-0.1.1.tar.gz", hash = "sha256:3865dbbbb8efb4bb5eaa72f1be7f3e0be00ea8b7f125c69cbd1f5fda926f37a2"}, ] -virtualenv = [ - {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, - {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, -] -yesqa = [ - {file = "yesqa-1.4.0-py2.py3-none-any.whl", hash = "sha256:8d66f162731173b20b29f0107804b51a7c8573f5c8d82f8ee2c8cf1724a2c84b"}, - {file = "yesqa-1.4.0.tar.gz", hash = "sha256:7d9d784b7fb91987f9eded7d03b1a5af578e51dee59b97f0475898a2fe6a9527"}, -] -zipp = [ - {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"}, - {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"}, + +[[package]] +name = "zipp" +version = "3.15.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.7" +files = [ + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.8" +content-hash = "a09a8dce1992e3144299e3c88b9e03a5189f19bdf2b0be3ac9afdef7c9e46b9b" diff --git a/json-builder/python/pydivkit/__init__.py b/json-builder/python/pydivkit/__init__.py index ed25075c3..9bb3dc3ff 100644 --- a/json-builder/python/pydivkit/__init__.py +++ b/json-builder/python/pydivkit/__init__.py @@ -1,12 +1,12 @@ # flake8: noqa: F405 -from typing import Dict, Any +from typing import Any, Dict from pydivkit.core import Field, Ref from pydivkit.div import * from pydivkit.div import __all__ as __div_all__ -def make_card(log_id: str, *divs: Div): +def make_card(log_id: str, *divs: Div) -> DivData: return DivData( log_id=log_id, states=[ diff --git a/json-builder/python/pydivkit/core/__init__.py b/json-builder/python/pydivkit/core/__init__.py index f872a9750..57d16b9de 100644 --- a/json-builder/python/pydivkit/core/__init__.py +++ b/json-builder/python/pydivkit/core/__init__.py @@ -1,9 +1,11 @@ from .entities import BaseDiv, BaseEntity -from .fields import Field, Ref +from .fields import Expr, Field, Ref + __all__ = ( "BaseEntity", "BaseDiv", "Field", "Ref", + "Expr", ) diff --git a/json-builder/python/pydivkit/core/entities.py b/json-builder/python/pydivkit/core/entities.py index ac53a80f7..3e0b4fece 100644 --- a/json-builder/python/pydivkit/core/entities.py +++ b/json-builder/python/pydivkit/core/entities.py @@ -10,11 +10,11 @@ from functools import reduce from types import MappingProxyType from typing import ( Any, Dict, FrozenSet, List, Mapping, Optional, Sequence, Set, Type, Union, - get_args, get_origin, get_type_hints, + get_args, get_origin, get_type_hints, Iterator, Tuple, ) from .compat import classproperty -from .fields import _Field +from .fields import Expr, _Field from .types.union import inject_types @@ -54,16 +54,20 @@ def _cast_value_type(value: Any, type_: Any) -> Any: # noqa return value origin_type = get_origin(type_) - if origin_type is list: - if not isinstance(value, list): + + if isinstance(origin_type, type) and isinstance(origin_type, (str, bytes)): + return type_(value) + + if isinstance(origin_type, type) and issubclass(origin_type, Sequence): + if not isinstance(value, Sequence): raise ValueError( f"Value {value} has wrong type. Expected type is {type_}.", ) element_type, *_ = get_args(type_) return [_cast_value_type(v, element_type) for v in value] - if origin_type is dict: - if not isinstance(value, dict): + if isinstance(origin_type, type) and issubclass(origin_type, Mapping): + if not isinstance(value, Mapping): raise ValueError( f"Value {value} has wrong type. Expected type is {type_}.", ) @@ -88,7 +92,9 @@ def _cast_value_type(value: Any, type_: Any) -> Any: # noqa raise ValueError( f"Union {type_} does not contain type {type_value}.", ) - raise ValueError(f"Value {value} does not have field {TYPE_FIELD}.") + raise ValueError( + f"Value {value} does not have field {TYPE_FIELD}.", + ) for u_type in get_args(type_): try: return _cast_value_type(value, u_type) @@ -123,11 +129,17 @@ def _cast_value_type(value: Any, type_: Any) -> Any: # noqa def dump(obj: Any) -> Any: - if isinstance(obj, list): + if isinstance(obj, (str, bytes)): + return obj + if isinstance(obj, Sequence): return [dump(obj_item) for obj_item in obj] - elif isinstance(obj, BaseEntity): + if isinstance(obj, Mapping): + return {k: v for k, v in obj.items()} + if isinstance(obj, Expr): + return str(obj) + if isinstance(obj, BaseEntity): return obj.dict() - elif isinstance(obj, enum.Enum): + if isinstance(obj, enum.Enum): return obj.value return obj @@ -173,6 +185,8 @@ BUILTIN_TYPES_TO_SCHEMA: Mapping[type, Mapping[str, Any]] = MappingProxyType( }, ), str: MappingProxyType({"type": "string"}), + bytes: MappingProxyType({"type": "string"}), + Expr: MappingProxyType({"type": "string", "pattern": "^@{.*}$"}), }, ) @@ -244,14 +258,14 @@ def _field_to_schema( schema: Optional[SchemaType] = None if field and field.name == TYPE_FIELD and field.default: schema = _type_field_to_schema(field) - elif origin is list: + elif type_ in BUILTIN_TYPES_TO_SCHEMA: + schema = {**BUILTIN_TYPES_TO_SCHEMA[type_]} + elif isinstance(origin, type) and issubclass(origin, Sequence): schema = _list_to_schema(type_, definitions, exclude) - elif origin is dict: + elif isinstance(origin, type) and issubclass(origin, Mapping): schema = _dict_to_schema() elif origin is Union: schema = _union_to_schema(field, type_, exclude, definitions) - elif type_ in BUILTIN_TYPES_TO_SCHEMA: - schema = {**BUILTIN_TYPES_TO_SCHEMA[type_]} elif issubclass(type_, BaseEntity): schema = type_.schema_as_ref(definitions, exclude) elif issubclass(type_, enum.Enum): @@ -509,7 +523,9 @@ class BaseEntity: field_value = getattr(self, field_name, field.default) if field_value is not None: if isinstance(field_value, _Field) and field_value.ref_to: - result[f"${field.field_name}"] = field_value.ref_to.field_name + result[ + f"${field.field_name}" + ] = field_value.ref_to.field_name else: result[field.field_name] = dump(field_value) return result @@ -681,6 +697,44 @@ class BaseDiv(BaseEntity): ref_types[ref_uid] = field_type return MappingProxyType(ref_types) + @staticmethod + def _make_union(type: Type[Any]) -> Set[Type[Any]]: + if get_origin(type) is Union: + return set(get_args(type)) + return {type} + + @classmethod + def _validate_subclass( + cls, + ref_type: Type[Any], + expected_field_type: Type[Any], + ) -> bool: + def _check_origins() -> Iterator[Tuple[Tuple[Any, ...], Tuple[Any, ...]]]: + for ref in cls._make_union(ref_type): + for expect in cls._make_union(expected_field_type): + if get_origin(expect) == get_origin(ref): + yield get_args(ref), get_args(expect) + return None + + for origins in _check_origins(): + if origins is None: + return False + + expect, ref = origins + + if get_args(expect) == get_args(ref): + return True + + if not any( + issubclass(exp, get_args(ref)) + for exp in get_args(expect) + if get_origin(exp) is not Union + ): + continue + + return True + return False + @classmethod def _validate_ref_types(cls) -> None: ref_types = cls._merge_ref_types( @@ -693,6 +747,9 @@ class BaseDiv(BaseEntity): if ( ref_type != expected_field_type and ref_type != Optional[expected_field_type] + and ref_type != Union[expected_field_type, Expr] + and ref_type != Union[expected_field_type, Expr, None] + and not cls._validate_subclass(ref_type, expected_field_type) ): raise TypeError( f"Type of attribute '{field_name}' does " diff --git a/json-builder/python/pydivkit/core/fields.py b/json-builder/python/pydivkit/core/fields.py index 9b39cd789..c22a8d7f9 100644 --- a/json-builder/python/pydivkit/core/fields.py +++ b/json-builder/python/pydivkit/core/fields.py @@ -23,7 +23,9 @@ class _Field: def apply_constraints(self, constraints: Mapping[str, Any]) -> None: for c_key, c_value in constraints.items(): - if self.constraints.get(c_key) and self.constraints[c_key] != c_value: + if self.constraints.get(c_key) and self.constraints[ + c_key + ] != c_value: raise ValueError( f"Incompatible constraints: {c_key} = " f"{self.constraints[c_key]} and {c_key} = {c_value}", @@ -82,3 +84,19 @@ def Ref(field: Any) -> Any: ) field.is_ref = True return _Field(ref_to=field) + + +class Expr: + __slots__ = ("v",) + v: str + + def __init__(self, v: str): + if not v.startswith("@{") or not v.endswith("}"): + raise ValueError(f"failed to initiate Expr with {v}") + self.v = v + + def __repr__(self) -> str: + return f"Expr({self.v})" + + def __str__(self) -> str: + return self.v diff --git a/json-builder/python/pydivkit/div/__init__.py b/json-builder/python/pydivkit/div/__init__.py index eb3a2ca81..3c1b2af36 100644 --- a/json-builder/python/pydivkit/div/__init__.py +++ b/json-builder/python/pydivkit/div/__init__.py @@ -19,6 +19,7 @@ from .div_aspect import DivAspect from .div_background import DivBackground from .div_base import DivBase from .div_blend_mode import DivBlendMode +from .div_blur import DivBlur from .div_border import DivBorder from .div_change_bounds_transition import DivChangeBoundsTransition from .div_change_set_transition import DivChangeSetTransition @@ -30,15 +31,24 @@ from .div_container import ( ) from .div_corners_radius import DivCornersRadius from .div_count import DivCount +from .div_currency_input_mask import DivCurrencyInputMask from .div_custom import DivCustom from .div_data import DivData, DivDataState +from .div_default_indicator_item_placement import ( + DivDefaultIndicatorItemPlacement, +) from .div_dimension import DivDimension +from .div_disappear_action import DivDisappearAction from .div_download_callbacks import DivDownloadCallbacks from .div_drawable import DivDrawable from .div_edge_insets import DivEdgeInsets from .div_extension import DivExtension from .div_fade_transition import DivFadeTransition +from .div_filter import DivFilter from .div_fixed_count import DivFixedCount +from .div_fixed_length_input_mask import ( + DivFixedLengthInputMask, DivFixedLengthInputMaskPatternElement, +) from .div_fixed_size import DivFixedSize from .div_focus import DivFocus, DivFocusNextFocusIds from .div_font_family import DivFontFamily @@ -53,8 +63,15 @@ from .div_image import DivImage from .div_image_background import DivImageBackground from .div_image_scale import DivImageScale from .div_indicator import DivIndicator, DivIndicatorAnimation +from .div_indicator_item_placement import DivIndicatorItemPlacement from .div_infinity_count import DivInfinityCount from .div_input import DivInput, DivInputKeyboardType, DivInputNativeInterface +from .div_input_mask import DivInputMask +from .div_input_mask_base import DivInputMaskBase +from .div_input_validator import DivInputValidator +from .div_input_validator_base import DivInputValidatorBase +from .div_input_validator_expression import DivInputValidatorExpression +from .div_input_validator_regex import DivInputValidatorRegex from .div_line_style import DivLineStyle from .div_linear_gradient import DivLinearGradient from .div_match_parent_size import DivMatchParentSize @@ -79,6 +96,7 @@ from .div_radial_gradient_relative_radius import ( ) from .div_rounded_rectangle_shape import DivRoundedRectangleShape from .div_scale_transition import DivScaleTransition +from .div_select import DivSelect, DivSelectOption from .div_separator import ( DelimiterStyleOrientation, DivSeparator, DivSeparatorDelimiterStyle, ) @@ -91,6 +109,9 @@ from .div_slide_transition import DivSlideTransition, DivSlideTransitionEdge from .div_slider import DivSlider, DivSliderTextStyle from .div_solid_background import DivSolidBackground from .div_state import DivState, DivStateState +from .div_stretch_indicator_item_placement import ( + DivStretchIndicatorItemPlacement, +) from .div_stroke import DivStroke from .div_tabs import ( DivTabs, DivTabsItem, DivTabsTabTitleStyle, TabTitleStyleAnimationType, @@ -99,6 +120,9 @@ from .div_text import ( DivText, DivTextEllipsis, DivTextImage, DivTextRange, DivTextTruncate, ) from .div_text_gradient import DivTextGradient +from .div_text_range_background import DivTextRangeBackground +from .div_text_range_border import DivTextRangeBorder +from .div_timer import DivTimer from .div_tooltip import DivTooltip, DivTooltipPosition from .div_transform import DivTransform from .div_transition_base import DivTransitionBase @@ -106,9 +130,13 @@ from .div_transition_selector import DivTransitionSelector from .div_transition_trigger import DivTransitionTrigger from .div_trigger import DivTrigger, DivTriggerMode from .div_variable import DivVariable +from .div_video import DivVideo +from .div_video_source import DivVideoSource, DivVideoSourceResolution from .div_visibility import DivVisibility from .div_visibility_action import DivVisibilityAction -from .div_wrap_content_size import DivWrapContentSize +from .div_wrap_content_size import ( + DivWrapContentSize, DivWrapContentSizeConstraintSize, +) from .integer_variable import IntegerVariable from .number_variable import NumberVariable from .string_variable import StringVariable @@ -125,6 +153,7 @@ DivAnimation.update_forward_refs() DivAppearanceSetTransition.update_forward_refs() DivAspect.update_forward_refs() DivBase.update_forward_refs() +DivBlur.update_forward_refs() DivBorder.update_forward_refs() DivChangeBoundsTransition.update_forward_refs() DivChangeSetTransition.update_forward_refs() @@ -132,15 +161,20 @@ DivCircleShape.update_forward_refs() DivContainer.update_forward_refs() DivContainerSeparator.update_forward_refs() DivCornersRadius.update_forward_refs() +DivCurrencyInputMask.update_forward_refs() DivCustom.update_forward_refs() DivData.update_forward_refs() DivDataState.update_forward_refs() +DivDefaultIndicatorItemPlacement.update_forward_refs() DivDimension.update_forward_refs() +DivDisappearAction.update_forward_refs() DivDownloadCallbacks.update_forward_refs() DivEdgeInsets.update_forward_refs() DivExtension.update_forward_refs() DivFadeTransition.update_forward_refs() DivFixedCount.update_forward_refs() +DivFixedLengthInputMask.update_forward_refs() +DivFixedLengthInputMaskPatternElement.update_forward_refs() DivFixedSize.update_forward_refs() DivFocus.update_forward_refs() DivFocusNextFocusIds.update_forward_refs() @@ -153,6 +187,10 @@ DivIndicator.update_forward_refs() DivInfinityCount.update_forward_refs() DivInput.update_forward_refs() DivInputNativeInterface.update_forward_refs() +DivInputMaskBase.update_forward_refs() +DivInputValidatorBase.update_forward_refs() +DivInputValidatorExpression.update_forward_refs() +DivInputValidatorRegex.update_forward_refs() DivLinearGradient.update_forward_refs() DivMatchParentSize.update_forward_refs() DivNeighbourPageSize.update_forward_refs() @@ -171,6 +209,8 @@ DivRadialGradientRelativeCenter.update_forward_refs() DivRadialGradientRelativeRadius.update_forward_refs() DivRoundedRectangleShape.update_forward_refs() DivScaleTransition.update_forward_refs() +DivSelect.update_forward_refs() +DivSelectOption.update_forward_refs() DivSeparator.update_forward_refs() DivSeparatorDelimiterStyle.update_forward_refs() DivShadow.update_forward_refs() @@ -181,6 +221,7 @@ DivSliderTextStyle.update_forward_refs() DivSolidBackground.update_forward_refs() DivState.update_forward_refs() DivStateState.update_forward_refs() +DivStretchIndicatorItemPlacement.update_forward_refs() DivStroke.update_forward_refs() DivTabs.update_forward_refs() DivTabsItem.update_forward_refs() @@ -189,15 +230,21 @@ DivText.update_forward_refs() DivTextEllipsis.update_forward_refs() DivTextImage.update_forward_refs() DivTextRange.update_forward_refs() +DivTextRangeBorder.update_forward_refs() +DivTimer.update_forward_refs() DivTooltip.update_forward_refs() DivTransform.update_forward_refs() DivTransitionBase.update_forward_refs() DivTrigger.update_forward_refs() +DivVideo.update_forward_refs() +DivVideoSource.update_forward_refs() +DivVideoSourceResolution.update_forward_refs() DivVisibilityAction.update_forward_refs() DivWrapContentSize.update_forward_refs() +DivWrapContentSizeConstraintSize.update_forward_refs() IntegerVariable.update_forward_refs() NumberVariable.update_forward_refs() StringVariable.update_forward_refs() UrlVariable.update_forward_refs() -__all__ = ("BooleanVariable", "ColorVariable", "DelimiterStyleOrientation", "Div", "DivAbsoluteEdgeInsets", "DivAccessibility", "DivAccessibilityMode", "DivAccessibilityType", "DivAction", "DivActionMenuItem", "DivActionTarget", "DivAlignmentHorizontal", "DivAlignmentVertical", "DivAnimation", "DivAnimationInterpolator", "DivAnimationName", "DivAppearanceSetTransition", "DivAppearanceTransition", "DivAspect", "DivBackground", "DivBase", "DivBlendMode", "DivBorder", "DivChangeBoundsTransition", "DivChangeSetTransition", "DivChangeTransition", "DivCircleShape", "DivContainer", "DivContainerLayoutMode", "DivContainerOrientation", "DivContainerSeparator", "DivCornersRadius", "DivCount", "DivCustom", "DivData", "DivDataState", "DivDimension", "DivDownloadCallbacks", "DivDrawable", "DivEdgeInsets", "DivExtension", "DivFadeTransition", "DivFixedCount", "DivFixedSize", "DivFocus", "DivFocusNextFocusIds", "DivFontFamily", "DivFontWeight", "DivGallery", "DivGalleryCrossContentAlignment", "DivGalleryOrientation", "DivGalleryScrollMode", "DivGifImage", "DivGrid", "DivImage", "DivImageBackground", "DivImageScale", "DivIndicator", "DivIndicatorAnimation", "DivInfinityCount", "DivInput", "DivInputKeyboardType", "DivInputNativeInterface", "DivLineStyle", "DivLinearGradient", "DivMatchParentSize", "DivNeighbourPageSize", "DivNinePatchBackground", "DivPageSize", "DivPager", "DivPagerLayoutMode", "DivPagerOrientation", "DivPatch", "DivPatchChange", "DivPatchMode", "DivPercentageSize", "DivPivot", "DivPivotFixed", "DivPivotPercentage", "DivPoint", "DivRadialGradient", "DivRadialGradientCenter", "DivRadialGradientFixedCenter", "DivRadialGradientRadius", "DivRadialGradientRelativeCenter", "DivRadialGradientRelativeRadius", "DivRadialGradientRelativeRadiusValue", "DivRoundedRectangleShape", "DivScaleTransition", "DivSeparator", "DivSeparatorDelimiterStyle", "DivShadow", "DivShape", "DivShapeDrawable", "DivSize", "DivSizeUnit", "DivSlideTransition", "DivSlideTransitionEdge", "DivSlider", "DivSliderTextStyle", "DivSolidBackground", "DivState", "DivStateState", "DivStroke", "DivTabs", "DivTabsItem", "DivTabsTabTitleStyle", "DivText", "DivTextEllipsis", "DivTextGradient", "DivTextImage", "DivTextRange", "DivTextTruncate", "DivTooltip", "DivTooltipPosition", "DivTransform", "DivTransitionBase", "DivTransitionSelector", "DivTransitionTrigger", "DivTrigger", "DivTriggerMode", "DivVariable", "DivVisibility", "DivVisibilityAction", "DivWrapContentSize", "IntegerVariable", "NumberVariable", "StringVariable", "TabTitleStyleAnimationType", "UrlVariable") \ No newline at end of file +__all__ = ("BooleanVariable", "ColorVariable", "DelimiterStyleOrientation", "Div", "DivAbsoluteEdgeInsets", "DivAccessibility", "DivAccessibilityMode", "DivAccessibilityType", "DivAction", "DivActionMenuItem", "DivActionTarget", "DivAlignmentHorizontal", "DivAlignmentVertical", "DivAnimation", "DivAnimationInterpolator", "DivAnimationName", "DivAppearanceSetTransition", "DivAppearanceTransition", "DivAspect", "DivBackground", "DivBase", "DivBlendMode", "DivBlur", "DivBorder", "DivChangeBoundsTransition", "DivChangeSetTransition", "DivChangeTransition", "DivCircleShape", "DivContainer", "DivContainerLayoutMode", "DivContainerOrientation", "DivContainerSeparator", "DivCornersRadius", "DivCount", "DivCurrencyInputMask", "DivCustom", "DivData", "DivDataState", "DivDefaultIndicatorItemPlacement", "DivDimension", "DivDisappearAction", "DivDownloadCallbacks", "DivDrawable", "DivEdgeInsets", "DivExtension", "DivFadeTransition", "DivFilter", "DivFixedCount", "DivFixedLengthInputMask", "DivFixedLengthInputMaskPatternElement", "DivFixedSize", "DivFocus", "DivFocusNextFocusIds", "DivFontFamily", "DivFontWeight", "DivGallery", "DivGalleryCrossContentAlignment", "DivGalleryOrientation", "DivGalleryScrollMode", "DivGifImage", "DivGrid", "DivImage", "DivImageBackground", "DivImageScale", "DivIndicator", "DivIndicatorAnimation", "DivIndicatorItemPlacement", "DivInfinityCount", "DivInput", "DivInputKeyboardType", "DivInputMask", "DivInputMaskBase", "DivInputNativeInterface", "DivInputValidator", "DivInputValidatorBase", "DivInputValidatorExpression", "DivInputValidatorRegex", "DivLineStyle", "DivLinearGradient", "DivMatchParentSize", "DivNeighbourPageSize", "DivNinePatchBackground", "DivPageSize", "DivPager", "DivPagerLayoutMode", "DivPagerOrientation", "DivPatch", "DivPatchChange", "DivPatchMode", "DivPercentageSize", "DivPivot", "DivPivotFixed", "DivPivotPercentage", "DivPoint", "DivRadialGradient", "DivRadialGradientCenter", "DivRadialGradientFixedCenter", "DivRadialGradientRadius", "DivRadialGradientRelativeCenter", "DivRadialGradientRelativeRadius", "DivRadialGradientRelativeRadiusValue", "DivRoundedRectangleShape", "DivScaleTransition", "DivSelect", "DivSelectOption", "DivSeparator", "DivSeparatorDelimiterStyle", "DivShadow", "DivShape", "DivShapeDrawable", "DivSize", "DivSizeUnit", "DivSlideTransition", "DivSlideTransitionEdge", "DivSlider", "DivSliderTextStyle", "DivSolidBackground", "DivState", "DivStateState", "DivStretchIndicatorItemPlacement", "DivStroke", "DivTabs", "DivTabsItem", "DivTabsTabTitleStyle", "DivText", "DivTextEllipsis", "DivTextGradient", "DivTextImage", "DivTextRange", "DivTextRangeBackground", "DivTextRangeBorder", "DivTextTruncate", "DivTimer", "DivTooltip", "DivTooltipPosition", "DivTransform", "DivTransitionBase", "DivTransitionSelector", "DivTransitionTrigger", "DivTrigger", "DivTriggerMode", "DivVariable", "DivVideo", "DivVideoSource", "DivVideoSourceResolution", "DivVisibility", "DivVisibilityAction", "DivWrapContentSize", "DivWrapContentSizeConstraintSize", "IntegerVariable", "NumberVariable", "StringVariable", "TabTitleStyleAnimationType", "UrlVariable") \ No newline at end of file diff --git a/json-builder/python/pydivkit/div/boolean_variable.py b/json-builder/python/pydivkit/div/boolean_variable.py index 12569916e..c1146af2a 100644 --- a/json-builder/python/pydivkit/div/boolean_variable.py +++ b/json-builder/python/pydivkit/div/boolean_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # A Boolean variable in binary format. @@ -14,22 +14,24 @@ class BooleanVariable(BaseDiv): def __init__( self, *, - name: str, - value: bool, type: str = "boolean", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, bool]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="boolean") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: bool = Field( + value: typing.Union[Expr, bool] = Field( description="Value.", ) diff --git a/json-builder/python/pydivkit/div/color_variable.py b/json-builder/python/pydivkit/div/color_variable.py index 02fa22557..b61359e4d 100644 --- a/json-builder/python/pydivkit/div/color_variable.py +++ b/json-builder/python/pydivkit/div/color_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Variable — HEX color as a string. @@ -14,22 +14,24 @@ class ColorVariable(BaseDiv): def __init__( self, *, - name: str, - value: str, type: str = "color", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="color") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: str = Field( + value: typing.Union[Expr, str] = Field( format="color", description="Value.", ) diff --git a/json-builder/python/pydivkit/div/div.py b/json-builder/python/pydivkit/div/div.py index 43e95f99d..48c44867f 100644 --- a/json-builder/python/pydivkit/div/div.py +++ b/json-builder/python/pydivkit/div/div.py @@ -7,12 +7,12 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_container, div_custom, div_gallery, div_gif_image, div_grid, div_image, - div_indicator, div_input, div_pager, div_separator, div_slider, div_state, - div_tabs, div_text, + div_indicator, div_input, div_pager, div_select, div_separator, div_slider, + div_state, div_tabs, div_text, div_video, ) @@ -31,4 +31,6 @@ Div = Union[ div_indicator.DivIndicator, div_slider.DivSlider, div_input.DivInput, + div_select.DivSelect, + div_video.DivVideo, ] diff --git a/json-builder/python/pydivkit/div/div_absolute_edge_insets.py b/json-builder/python/pydivkit/div/div_absolute_edge_insets.py index c7a6c220d..7de6683ae 100644 --- a/json-builder/python/pydivkit/div/div_absolute_edge_insets.py +++ b/json-builder/python/pydivkit/div/div_absolute_edge_insets.py @@ -6,36 +6,38 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Sets the margins, without taking the properties of the screen. +# Sets margins without regard to screen properties. class DivAbsoluteEdgeInsets(BaseDiv): def __init__( self, *, - bottom: typing.Optional[int] = None, - left: typing.Optional[int] = None, - right: typing.Optional[int] = None, - top: typing.Optional[int] = None, + bottom: typing.Optional[typing.Union[Expr, int]] = None, + left: typing.Optional[typing.Union[Expr, int]] = None, + right: typing.Optional[typing.Union[Expr, int]] = None, + top: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( bottom=bottom, left=left, right=right, top=top, + **kwargs, ) - bottom: typing.Optional[int] = Field( + bottom: typing.Optional[typing.Union[Expr, int]] = Field( description="Bottom margin.", ) - left: typing.Optional[int] = Field( + left: typing.Optional[typing.Union[Expr, int]] = Field( description="Left margin.", ) - right: typing.Optional[int] = Field( + right: typing.Optional[typing.Union[Expr, int]] = Field( description="Right margin.", ) - top: typing.Optional[int] = Field( + top: typing.Optional[typing.Union[Expr, int]] = Field( description="Top margin.", ) diff --git a/json-builder/python/pydivkit/div/div_accessibility.py b/json-builder/python/pydivkit/div/div_accessibility.py index df1726094..564a733a9 100644 --- a/json-builder/python/pydivkit/div/div_accessibility.py +++ b/json-builder/python/pydivkit/div/div_accessibility.py @@ -6,20 +6,21 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Accessibility for disabled people. +# Accessibility settings. class DivAccessibility(BaseDiv): def __init__( self, *, - description: typing.Optional[str] = None, - hint: typing.Optional[str] = None, - mode: typing.Optional[DivAccessibilityMode] = None, - mute_after_action: typing.Optional[bool] = None, - state_description: typing.Optional[str] = None, - type: typing.Optional[DivAccessibilityType] = None, + description: typing.Optional[typing.Union[Expr, str]] = None, + hint: typing.Optional[typing.Union[Expr, str]] = None, + mode: typing.Optional[typing.Union[Expr, DivAccessibilityMode]] = None, + mute_after_action: typing.Optional[typing.Union[Expr, bool]] = None, + state_description: typing.Optional[typing.Union[Expr, str]] = None, + type: typing.Optional[typing.Union[Expr, DivAccessibilityType]] = None, + **kwargs: typing.Any, ): super().__init__( description=description, @@ -28,16 +29,17 @@ class DivAccessibility(BaseDiv): mute_after_action=mute_after_action, state_description=state_description, type=type, + **kwargs, ) - description: typing.Optional[str] = Field( + description: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element description. It is used as the main description for " "screen readingapplications." ), ) - hint: typing.Optional[str] = Field( + hint: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "A tooltip of what will happen during interaction. If Speak " @@ -45,7 +47,7 @@ class DivAccessibility(BaseDiv): "is played after `description`." ), ) - mode: typing.Optional[DivAccessibilityMode] = Field( + mode: typing.Optional[typing.Union[Expr, DivAccessibilityMode]] = Field( description=( "The way the accessibility tree is organized. In the `merge` " "mode theaccessibility service perceives an element together " @@ -53,13 +55,13 @@ class DivAccessibility(BaseDiv): "together with a subtree isn\'t available foraccessibility." ), ) - mute_after_action: typing.Optional[bool] = Field( + mute_after_action: typing.Optional[typing.Union[Expr, bool]] = Field( description=( - "Mutes the sound of the screen reader after interacting with " - "the element." + "Mutes the screen reader sound after interacting with the " + "element." ), ) - state_description: typing.Optional[str] = Field( + state_description: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Description of the current state of an element. For " @@ -68,10 +70,11 @@ class DivAccessibility(BaseDiv): "switch." ), ) - type: typing.Optional[DivAccessibilityType] = Field( + type: typing.Optional[typing.Union[Expr, DivAccessibilityType]] = Field( description=( - "Element role. It is used for correct identification of an " - "element by anaccessibility service." + "Element role. Used to correctly identify an element by the " + "accessibility service.For example, the `list` element is " + "used to group list elements into one element." ), ) @@ -90,6 +93,7 @@ class DivAccessibilityType(str, enum.Enum): EDIT_TEXT = "edit_text" HEADER = "header" TAB_BAR = "tab_bar" + LIST = "list" DivAccessibility.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_action.py b/json-builder/python/pydivkit/div/div_action.py index 87fd6f089..29f49de49 100644 --- a/json-builder/python/pydivkit/div/div_action.py +++ b/json-builder/python/pydivkit/div/div_action.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_download_callbacks @@ -16,14 +16,15 @@ class DivAction(BaseDiv): def __init__( self, *, - log_id: str, download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = None, - log_url: typing.Optional[str] = None, - menu_items: typing.Optional[typing.List[DivActionMenuItem]] = None, + log_id: typing.Optional[typing.Union[Expr, str]] = None, + log_url: typing.Optional[typing.Union[Expr, str]] = None, + menu_items: typing.Optional[typing.Sequence[DivActionMenuItem]] = None, payload: typing.Optional[typing.Dict[str, typing.Any]] = None, - referer: typing.Optional[str] = None, - target: typing.Optional[DivActionTarget] = None, - url: typing.Optional[str] = None, + referer: typing.Optional[typing.Union[Expr, str]] = None, + target: typing.Optional[typing.Union[Expr, DivActionTarget]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( download_callbacks=download_callbacks, @@ -34,6 +35,7 @@ class DivAction(BaseDiv): referer=referer, target=target, url=url, + **kwargs, ) download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = Field( @@ -42,29 +44,29 @@ class DivAction(BaseDiv): "[dataloading](../../interaction.dita#loading-data)." ), ) - log_id: str = Field( + log_id: typing.Union[Expr, str] = Field( min_length=1, description="Logging ID.", ) - log_url: typing.Optional[str] = Field( + log_url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri", description="URL for logging.", ) - menu_items: typing.Optional[typing.List[DivActionMenuItem]] = Field( + menu_items: typing.Optional[typing.Sequence[DivActionMenuItem]] = Field( min_items=1, description="Context menu.", ) payload: typing.Optional[typing.Dict[str, typing.Any]] = Field( description="Additional parameters, passed to the host application.", ) - referer: typing.Optional[str] = Field( + referer: typing.Optional[typing.Union[Expr, str]] = Field( format="uri", description="Referer URL for logging.", ) - target: typing.Optional[DivActionTarget] = Field( + target: typing.Optional[typing.Union[Expr, DivActionTarget]] = Field( description="The tab in which the URL must be opened.", ) - url: typing.Optional[str] = Field( + url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri", description=( "URL. Possible values: `url` or `div-action://`. To learn " @@ -83,14 +85,16 @@ class DivActionMenuItem(BaseDiv): def __init__( self, *, - text: str, action: typing.Optional[DivAction] = None, - actions: typing.Optional[typing.List[DivAction]] = None, + actions: typing.Optional[typing.Sequence[DivAction]] = None, + text: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( action=action, actions=actions, text=text, + **kwargs, ) action: typing.Optional[DivAction] = Field( @@ -99,11 +103,11 @@ class DivActionMenuItem(BaseDiv): "`actions` parameter isset." ), ) - actions: typing.Optional[typing.List[DivAction]] = Field( + actions: typing.Optional[typing.Sequence[DivAction]] = Field( min_items=1, description="Multiple actions when clicking on a menu item.", ) - text: str = Field( + text: typing.Union[Expr, str] = Field( min_length=1, description="Menu item title.", ) diff --git a/json-builder/python/pydivkit/div/div_alignment_horizontal.py b/json-builder/python/pydivkit/div/div_alignment_horizontal.py index 58e3303c3..0f9fe3bf5 100644 --- a/json-builder/python/pydivkit/div/div_alignment_horizontal.py +++ b/json-builder/python/pydivkit/div/div_alignment_horizontal.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivAlignmentHorizontal(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_alignment_vertical.py b/json-builder/python/pydivkit/div/div_alignment_vertical.py index 9f3ab01df..3c039e919 100644 --- a/json-builder/python/pydivkit/div/div_alignment_vertical.py +++ b/json-builder/python/pydivkit/div/div_alignment_vertical.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivAlignmentVertical(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_animation.py b/json-builder/python/pydivkit/div/div_animation.py index e7868372c..ed1daa2aa 100644 --- a/json-builder/python/pydivkit/div/div_animation.py +++ b/json-builder/python/pydivkit/div/div_animation.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator, div_count @@ -16,14 +16,15 @@ class DivAnimation(BaseDiv): def __init__( self, *, - name: DivAnimationName, - duration: typing.Optional[int] = None, - end_value: typing.Optional[float] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - items: typing.Optional[typing.List[DivAnimation]] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + end_value: typing.Optional[typing.Union[Expr, float]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + items: typing.Optional[typing.Sequence[DivAnimation]] = None, + name: typing.Optional[typing.Union[Expr, DivAnimationName]] = None, repeat: typing.Optional[div_count.DivCount] = None, - start_delay: typing.Optional[int] = None, - start_value: typing.Optional[float] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + start_value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( duration=duration, @@ -34,15 +35,16 @@ class DivAnimation(BaseDiv): repeat=repeat, start_delay=start_delay, start_value=start_value, + **kwargs, ) - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - end_value: typing.Optional[float] = Field( + end_value: typing.Optional[typing.Union[Expr, float]] = Field( description="Final value of an animation.", ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description=( "Animation speed nature. When the value is set to `spring` — " "animation of dampingfluctuations cut to 0.7 with the " @@ -53,20 +55,20 @@ class DivAnimation(BaseDiv): "0.58, 1);`ease_in_out` — cubic-bezier(0.42, 0,0.58, 1)." ), ) - items: typing.Optional[typing.List[DivAnimation]] = Field( + items: typing.Optional[typing.Sequence[DivAnimation]] = Field( min_items=1, description="Animation elements.", ) - name: DivAnimationName = Field( + name: typing.Union[Expr, DivAnimationName] = Field( description="Animation type.", ) repeat: typing.Optional[div_count.DivCount] = Field( description="Number of animation repetitions.", ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) - start_value: typing.Optional[float] = Field( + start_value: typing.Optional[typing.Union[Expr, float]] = Field( description="Starting value of an animation.", ) diff --git a/json-builder/python/pydivkit/div/div_animation_interpolator.py b/json-builder/python/pydivkit/div/div_animation_interpolator.py index fd84c7e0f..80014c2a0 100644 --- a/json-builder/python/pydivkit/div/div_animation_interpolator.py +++ b/json-builder/python/pydivkit/div/div_animation_interpolator.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivAnimationInterpolator(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_appearance_set_transition.py b/json-builder/python/pydivkit/div/div_appearance_set_transition.py index 041b8e19d..052c148c5 100644 --- a/json-builder/python/pydivkit/div/div_appearance_set_transition.py +++ b/json-builder/python/pydivkit/div/div_appearance_set_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_appearance_transition @@ -16,16 +16,18 @@ class DivAppearanceSetTransition(BaseDiv): def __init__( self, *, - items: typing.List[div_appearance_transition.DivAppearanceTransition], type: str = "set", + items: typing.Optional[typing.Sequence[div_appearance_transition.DivAppearanceTransition]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, items=items, + **kwargs, ) type: str = Field(default="set") - items: typing.List[div_appearance_transition.DivAppearanceTransition] = Field( + items: typing.Sequence[div_appearance_transition.DivAppearanceTransition] = Field( min_items=1, description="An array of animations.", ) diff --git a/json-builder/python/pydivkit/div/div_appearance_transition.py b/json-builder/python/pydivkit/div/div_appearance_transition.py index 42926c046..dc1953371 100644 --- a/json-builder/python/pydivkit/div/div_appearance_transition.py +++ b/json-builder/python/pydivkit/div/div_appearance_transition.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_appearance_set_transition, div_fade_transition, div_scale_transition, diff --git a/json-builder/python/pydivkit/div/div_aspect.py b/json-builder/python/pydivkit/div/div_aspect.py index bd16c2ade..7004f807a 100644 --- a/json-builder/python/pydivkit/div/div_aspect.py +++ b/json-builder/python/pydivkit/div/div_aspect.py @@ -6,23 +6,25 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Size with a fixed aspect ratio. It counts height from width and ignores other -# specified height values. +# Fixed aspect ratio. The element's height is calculated based on the width, +# ignoring the `height` value. class DivAspect(BaseDiv): def __init__( self, *, - ratio: float, + ratio: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( ratio=ratio, + **kwargs, ) - ratio: float = Field( - description="`ratio = width / height`.", + ratio: typing.Union[Expr, float] = Field( + description="`height = width / ratio`.", ) diff --git a/json-builder/python/pydivkit/div/div_background.py b/json-builder/python/pydivkit/div/div_background.py index 88d07fe5a..890563643 100644 --- a/json-builder/python/pydivkit/div/div_background.py +++ b/json-builder/python/pydivkit/div/div_background.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_image_background, div_linear_gradient, div_nine_patch_background, diff --git a/json-builder/python/pydivkit/div/div_base.py b/json-builder/python/pydivkit/div/div_base.py index 706cf64ef..d1dd4cc4c 100644 --- a/json-builder/python/pydivkit/div/div_base.py +++ b/json-builder/python/pydivkit/div/div_base.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_focus, div_size, div_tooltip, div_transform, div_transition_trigger, - div_visibility, div_visibility_action, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_size, div_tooltip, div_transform, + div_transition_trigger, div_visibility, div_visibility_action, ) @@ -22,30 +22,32 @@ class DivBase(BaseDiv): def __init__( self, *, accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( accessibility=accessibility, @@ -55,6 +57,7 @@ class DivBase(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, @@ -73,42 +76,47 @@ class DivBase(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -128,7 +136,7 @@ class DivBase(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " @@ -141,20 +149,20 @@ class DivBase(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -164,9 +172,8 @@ class DivBase(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -190,14 +197,14 @@ class DivBase(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -206,7 +213,7 @@ class DivBase(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_blend_mode.py b/json-builder/python/pydivkit/div/div_blend_mode.py index 3dbb9c033..cfa6c9e0f 100644 --- a/json-builder/python/pydivkit/div/div_blend_mode.py +++ b/json-builder/python/pydivkit/div/div_blend_mode.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivBlendMode(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_blur.py b/json-builder/python/pydivkit/div/div_blur.py new file mode 100644 index 000000000..0324407a0 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_blur.py @@ -0,0 +1,36 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +# Gaussian image blur. +class DivBlur(BaseDiv): + + def __init__( + self, *, + type: str = "blur", + radius: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + radius=radius, + **kwargs, + ) + + type: str = Field(default="blur") + radius: typing.Union[Expr, int] = Field( + description=( + "Blur radius. Defines how many pixels blend into each other. " + "Specified in: `dp`." + ), + ) + + +DivBlur.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_border.py b/json-builder/python/pydivkit/div/div_border.py index 998cdb7e9..bff19665c 100644 --- a/json-builder/python/pydivkit/div/div_border.py +++ b/json-builder/python/pydivkit/div/div_border.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_corners_radius, div_shadow, div_stroke @@ -16,11 +16,12 @@ class DivBorder(BaseDiv): def __init__( self, *, - corner_radius: typing.Optional[int] = None, + corner_radius: typing.Optional[typing.Union[Expr, int]] = None, corners_radius: typing.Optional[div_corners_radius.DivCornersRadius] = None, - has_shadow: typing.Optional[bool] = None, + has_shadow: typing.Optional[typing.Union[Expr, bool]] = None, shadow: typing.Optional[div_shadow.DivShadow] = None, stroke: typing.Optional[div_stroke.DivStroke] = None, + **kwargs: typing.Any, ): super().__init__( corner_radius=corner_radius, @@ -28,9 +29,10 @@ class DivBorder(BaseDiv): has_shadow=has_shadow, shadow=shadow, stroke=stroke, + **kwargs, ) - corner_radius: typing.Optional[int] = Field( + corner_radius: typing.Optional[typing.Union[Expr, int]] = Field( description=( "One radius of element and stroke corner rounding. Has a " "lower priority than`corners_radius`." @@ -39,7 +41,7 @@ class DivBorder(BaseDiv): corners_radius: typing.Optional[div_corners_radius.DivCornersRadius] = Field( description="Multiple radii of element and stroke corner rounding.", ) - has_shadow: typing.Optional[bool] = Field( + has_shadow: typing.Optional[typing.Union[Expr, bool]] = Field( description="Adding shadow.", ) shadow: typing.Optional[div_shadow.DivShadow] = Field( diff --git a/json-builder/python/pydivkit/div/div_change_bounds_transition.py b/json-builder/python/pydivkit/div/div_change_bounds_transition.py index 06e3e78ec..feccfc931 100644 --- a/json-builder/python/pydivkit/div/div_change_bounds_transition.py +++ b/json-builder/python/pydivkit/div/div_change_bounds_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator @@ -17,25 +17,27 @@ class DivChangeBoundsTransition(BaseDiv): def __init__( self, *, type: str = "change_bounds", - duration: typing.Optional[int] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - start_delay: typing.Optional[int] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, duration=duration, interpolator=interpolator, start_delay=start_delay, + **kwargs, ) type: str = Field(default="change_bounds") - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description="Transition speed nature.", ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) diff --git a/json-builder/python/pydivkit/div/div_change_set_transition.py b/json-builder/python/pydivkit/div/div_change_set_transition.py index debb4c83c..a25f1ec70 100644 --- a/json-builder/python/pydivkit/div/div_change_set_transition.py +++ b/json-builder/python/pydivkit/div/div_change_set_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_change_transition @@ -16,16 +16,18 @@ class DivChangeSetTransition(BaseDiv): def __init__( self, *, - items: typing.List[div_change_transition.DivChangeTransition], type: str = "set", + items: typing.Optional[typing.Sequence[div_change_transition.DivChangeTransition]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, items=items, + **kwargs, ) type: str = Field(default="set") - items: typing.List[div_change_transition.DivChangeTransition] = Field( + items: typing.Sequence[div_change_transition.DivChangeTransition] = Field( min_items=1, description="List of animations.", ) diff --git a/json-builder/python/pydivkit/div/div_change_transition.py b/json-builder/python/pydivkit/div/div_change_transition.py index e45a740e8..8576fb93f 100644 --- a/json-builder/python/pydivkit/div/div_change_transition.py +++ b/json-builder/python/pydivkit/div/div_change_transition.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_change_bounds_transition, div_change_set_transition diff --git a/json-builder/python/pydivkit/div/div_circle_shape.py b/json-builder/python/pydivkit/div/div_circle_shape.py index df5537327..7cc485791 100644 --- a/json-builder/python/pydivkit/div/div_circle_shape.py +++ b/json-builder/python/pydivkit/div/div_circle_shape.py @@ -6,28 +6,41 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -from . import div_fixed_size +from . import div_fixed_size, div_stroke -# A circle. +# Circle. class DivCircleShape(BaseDiv): def __init__( self, *, type: str = "circle", + background_color: typing.Optional[typing.Union[Expr, str]] = None, radius: typing.Optional[div_fixed_size.DivFixedSize] = None, + stroke: typing.Optional[div_stroke.DivStroke] = None, + **kwargs: typing.Any, ): super().__init__( type=type, + background_color=background_color, radius=radius, + stroke=stroke, + **kwargs, ) type: str = Field(default="circle") + background_color: typing.Optional[typing.Union[Expr, str]] = Field( + format="color", + description="Fill color.", + ) radius: typing.Optional[div_fixed_size.DivFixedSize] = Field( description="Radius.", ) + stroke: typing.Optional[div_stroke.DivStroke] = Field( + description="Stroke style.", + ) DivCircleShape.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_container.py b/json-builder/python/pydivkit/div/div_container.py index 45d5bae33..ecd99ac0e 100644 --- a/json-builder/python/pydivkit/div/div_container.py +++ b/json-builder/python/pydivkit/div/div_container.py @@ -6,15 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, - div_background, div_border, div_change_transition, div_drawable, - div_edge_insets, div_extension, div_focus, div_size, div_tooltip, - div_transform, div_transition_trigger, div_visibility, - div_visibility_action, + div_aspect, div_background, div_border, div_change_transition, + div_disappear_action, div_drawable, div_edge_insets, div_extension, + div_focus, div_size, div_tooltip, div_transform, div_transition_trigger, + div_visibility, div_visibility_action, ) @@ -25,44 +25,47 @@ class DivContainer(BaseDiv): def __init__( self, *, - items: typing.List[div.Div], type: str = "container", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + aspect: typing.Optional[div_aspect.DivAspect] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - layout_mode: typing.Optional[DivContainerLayoutMode] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, + layout_mode: typing.Optional[typing.Union[Expr, DivContainerLayoutMode]] = None, line_separator: typing.Optional[DivContainerSeparator] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - orientation: typing.Optional[DivContainerOrientation] = None, + orientation: typing.Optional[typing.Union[Expr, DivContainerOrientation]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, separator: typing.Optional[DivContainerSeparator] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -73,11 +76,13 @@ class DivContainer(BaseDiv): alignment_horizontal=alignment_horizontal, alignment_vertical=alignment_vertical, alpha=alpha, + aspect=aspect, background=background, border=border, column_span=column_span, content_alignment_horizontal=content_alignment_horizontal, content_alignment_vertical=content_alignment_vertical, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, extensions=extensions, focus=focus, @@ -103,11 +108,12 @@ class DivContainer(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="container") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -117,65 +123,78 @@ class DivContainer(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + aspect: typing.Optional[div_aspect.DivAspect] = Field( + description=( + "Fixed aspect ratio of the container. The element\'s height " + "is calculated based onthe width, ignoring the `height` " + "parameter\'s value. On the web, support for " + "the`aspect-ratio` CSS property is required to use this " + "parameter." + ), + ) + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( - "Default alignment of elements. Not used if the " - "`alignment_horizontal` parameteris set from the element " - "field." + "Horizontal element alignment. For child elements, it can be " + "redefined using the`alignment_horizontal` property." ), ) - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( - "Default alignment of elements. `baseline` value aligns " - "elements having their ownbaseline along this baseline. " - "Other elements are aligned by top side in thiscase. Not " - "used if the `alignment_vertical` parameter is set from the " - "elementfield." + "Vertical element alignment. The `baseline` value aligns " + "elements along their ownspecified baseline (for text and " + "other elements that have a baseline). Elementsthat don\'t " + "have their baseline value specified are aligned along the " + "top edge.For child elements, it can be redefined using the " + "`alignment_vertical` property." ), ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -195,45 +214,46 @@ class DivContainer(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - items: typing.List[div.Div] = Field( + items: typing.Sequence[div.Div] = Field( min_items=1, description="Nested elements.", ) - layout_mode: typing.Optional[DivContainerLayoutMode] = Field( + layout_mode: typing.Optional[typing.Union[Expr, DivContainerLayoutMode]] = Field( description=( - "Method of placing elements. `wrap` value includes the " - "transfer of elements to thenext line if they did not fit in " - "the previous one. If the value is set to `wrap`,then a " - "separate line will be allocated for all elements with a " - "size value of`match_parent` along the main axis. If the " - "value is set to `wrap`, then elementswith a size value of " - "`match_parent` along the cross axis will be ignored." + "Element placement method. The `wrap` value transfers " + "elements to the next line ifthey don\'t fit in the previous " + "one. If the `wrap` value is set:A separate line isallocated " + "for each element along the main axis with the size value " + "set to`match_parent`.Elements along the cross axis with the " + "size value `match_parent`are ignored." ), ) line_separator: typing.Optional[DivContainerSeparator] = Field( description=( "Separator between elements along the cross axis. Not used " - "if the `layout_mode`parameter has the value `no_wrap\'." + "if the `layout_mode`parameter is set to `no_wrap`. Only new " + "browsers are supported on the web (the`gap` property must " + "be supported for flex blocks)." ), ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - orientation: typing.Optional[DivContainerOrientation] = Field( + orientation: typing.Optional[typing.Union[Expr, DivContainerOrientation]] = Field( description=( "Location of elements. `overlap` value overlays elements on " "top of each other inthe order of enumeration. The lowest is " @@ -243,13 +263,13 @@ class DivContainer(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " @@ -259,10 +279,12 @@ class DivContainer(BaseDiv): separator: typing.Optional[DivContainerSeparator] = Field( description=( "Separator between elements along the main axis. Not used if " - "the `orientation`parameter has the value `overlap\'." + "the `orientation`parameter is set to `overlap`. Only new " + "browsers are supported on the web (the`gap` property must " + "be supported for flex blocks)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -272,9 +294,8 @@ class DivContainer(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -298,14 +319,14 @@ class DivContainer(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -314,7 +335,7 @@ class DivContainer(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -338,29 +359,31 @@ class DivContainerSeparator(BaseDiv): def __init__( self, *, - style: div_drawable.DivDrawable, - show_at_end: typing.Optional[bool] = None, - show_at_start: typing.Optional[bool] = None, - show_between: typing.Optional[bool] = None, + show_at_end: typing.Optional[typing.Union[Expr, bool]] = None, + show_at_start: typing.Optional[typing.Union[Expr, bool]] = None, + show_between: typing.Optional[typing.Union[Expr, bool]] = None, + style: typing.Optional[div_drawable.DivDrawable] = None, + **kwargs: typing.Any, ): super().__init__( show_at_end=show_at_end, show_at_start=show_at_start, show_between=show_between, style=style, + **kwargs, ) - show_at_end: typing.Optional[bool] = Field( - description="Enables showing of separator after the last item.", + show_at_end: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Enables displaying the separator after the last item.", ) - show_at_start: typing.Optional[bool] = Field( - description="Enables showing of separator before the first item.", + show_at_start: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Enables displaying the separator before the first item.", ) - show_between: typing.Optional[bool] = Field( - description="Enables showing of separator between items.", + show_between: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Enables displaying the separator between items.", ) style: div_drawable.DivDrawable = Field( - description="Style of the separator.", + description="Separator style.", ) diff --git a/json-builder/python/pydivkit/div/div_corners_radius.py b/json-builder/python/pydivkit/div/div_corners_radius.py index 2490e4128..297f3e24b 100644 --- a/json-builder/python/pydivkit/div/div_corners_radius.py +++ b/json-builder/python/pydivkit/div/div_corners_radius.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Sets corner rounding. @@ -14,19 +14,21 @@ class DivCornersRadius(BaseDiv): def __init__( self, *, - bottom_left: typing.Optional[int] = None, - bottom_right: typing.Optional[int] = None, - top_left: typing.Optional[int] = None, - top_right: typing.Optional[int] = None, + bottom_left: typing.Optional[typing.Union[Expr, int]] = None, + bottom_right: typing.Optional[typing.Union[Expr, int]] = None, + top_left: typing.Optional[typing.Union[Expr, int]] = None, + top_right: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( bottom_left=bottom_left, bottom_right=bottom_right, top_left=top_left, top_right=top_right, + **kwargs, ) - bottom_left: typing.Optional[int] = Field( + bottom_left: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Rounding radius of a lower left corner. If not specified, " "then `corner_radius` isused." @@ -34,7 +36,7 @@ class DivCornersRadius(BaseDiv): , name="bottom-left", ) - bottom_right: typing.Optional[int] = Field( + bottom_right: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Rounding radius of a lower right corner. If not specified, " "then `corner_radius`is used." @@ -42,7 +44,7 @@ class DivCornersRadius(BaseDiv): , name="bottom-right", ) - top_left: typing.Optional[int] = Field( + top_left: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Rounding radius of an upper left corner. If not specified, " "then `corner_radius`is used." @@ -50,7 +52,7 @@ class DivCornersRadius(BaseDiv): , name="top-left", ) - top_right: typing.Optional[int] = Field( + top_right: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Rounding radius of an upper right corner. If not specified, " "then `corner_radius`is used." diff --git a/json-builder/python/pydivkit/div/div_count.py b/json-builder/python/pydivkit/div/div_count.py index 1fdaedca8..f90ff6964 100644 --- a/json-builder/python/pydivkit/div/div_count.py +++ b/json-builder/python/pydivkit/div/div_count.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_fixed_count, div_infinity_count diff --git a/json-builder/python/pydivkit/div/div_currency_input_mask.py b/json-builder/python/pydivkit/div/div_currency_input_mask.py new file mode 100644 index 000000000..474baf63f --- /dev/null +++ b/json-builder/python/pydivkit/div/div_currency_input_mask.py @@ -0,0 +1,45 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +# Mask for entering currency in the specified regional format. +class DivCurrencyInputMask(BaseDiv): + + def __init__( + self, *, + type: str = "currency", + locale: typing.Optional[typing.Union[Expr, str]] = None, + raw_text_variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + locale=locale, + raw_text_variable=raw_text_variable, + **kwargs, + ) + + type: str = Field(default="currency") + locale: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Language tag that the currency format should match, as per " + "[IETF " + "BCP47](https://en.wikipedia.org/wiki/IETF_language_tag). If " + "the language is not set,it is defined automatically." + ), + ) + raw_text_variable: typing.Union[Expr, str] = Field( + min_length=1, + description="Name of the variable to store the unprocessed value.", + ) + + +DivCurrencyInputMask.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_custom.py b/json-builder/python/pydivkit/div/div_custom.py index 60b1a4ea2..f522977f5 100644 --- a/json-builder/python/pydivkit/div/div_custom.py +++ b/json-builder/python/pydivkit/div/div_custom.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_focus, div_size, div_tooltip, div_transform, div_transition_trigger, - div_visibility, div_visibility_action, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_size, div_tooltip, div_transform, + div_transition_trigger, div_visibility, div_visibility_action, ) @@ -23,35 +23,37 @@ class DivCustom(BaseDiv): def __init__( self, *, - custom_type: str, type: str = "custom", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, custom_props: typing.Optional[typing.Dict[str, typing.Any]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + custom_type: typing.Optional[typing.Union[Expr, str]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - items: typing.Optional[typing.List[div.Div]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -64,6 +66,7 @@ class DivCustom(BaseDiv): column_span=column_span, custom_props=custom_props, custom_type=custom_type, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, @@ -83,37 +86,38 @@ class DivCustom(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="custom") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." @@ -122,10 +126,14 @@ class DivCustom(BaseDiv): custom_props: typing.Optional[typing.Dict[str, typing.Any]] = Field( description="Element data for a host application.", ) - custom_type: str = Field( + custom_type: typing.Union[Expr, str] = Field( description="Subtype of an element for a host application.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -145,14 +153,14 @@ class DivCustom(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - items: typing.Optional[typing.List[div.Div]] = Field( + items: typing.Optional[typing.Sequence[div.Div]] = Field( min_items=1, description="Nested elements.", ) @@ -162,20 +170,20 @@ class DivCustom(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -185,9 +193,8 @@ class DivCustom(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -211,14 +218,14 @@ class DivCustom(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -227,7 +234,7 @@ class DivCustom(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_data.py b/json-builder/python/pydivkit/div/div_data.py index 9731d9880..85dd4f3e7 100644 --- a/json-builder/python/pydivkit/div/div_data.py +++ b/json-builder/python/pydivkit/div/div_data.py @@ -6,9 +6,9 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -from . import div, div_transition_selector, div_trigger, div_variable +from . import div, div_timer, div_transition_selector, div_trigger, div_variable # Root structure. @@ -16,25 +16,29 @@ class DivData(BaseDiv): def __init__( self, *, - log_id: str, - states: typing.List[DivDataState], - transition_animation_selector: typing.Optional[div_transition_selector.DivTransitionSelector] = None, - variable_triggers: typing.Optional[typing.List[div_trigger.DivTrigger]] = None, - variables: typing.Optional[typing.List[div_variable.DivVariable]] = None, + log_id: typing.Optional[typing.Union[Expr, str]] = None, + states: typing.Optional[typing.Sequence[DivDataState]] = None, + timers: typing.Optional[typing.Sequence[div_timer.DivTimer]] = None, + transition_animation_selector: typing.Optional[typing.Union[Expr, div_transition_selector.DivTransitionSelector]] = None, + variable_triggers: typing.Optional[typing.Sequence[div_trigger.DivTrigger]] = None, + variables: typing.Optional[typing.Sequence[div_variable.DivVariable]] = None, + **kwargs: typing.Any, ): super().__init__( log_id=log_id, states=states, + timers=timers, transition_animation_selector=transition_animation_selector, variable_triggers=variable_triggers, variables=variables, + **kwargs, ) - log_id: str = Field( + log_id: typing.Union[Expr, str] = Field( min_length=1, description="Logging ID.", ) - states: typing.List[DivDataState] = Field( + states: typing.Sequence[DivDataState] = Field( min_items=1, description=( "A set of visual element states. Each element can have a few " @@ -43,14 +47,18 @@ class DivData(BaseDiv): "using[action](div-action.md)." ), ) - transition_animation_selector: typing.Optional[div_transition_selector.DivTransitionSelector] = Field( + timers: typing.Optional[typing.Sequence[div_timer.DivTimer]] = Field( + min_items=1, + description="List of timers.", + ) + transition_animation_selector: typing.Optional[typing.Union[Expr, div_transition_selector.DivTransitionSelector]] = Field( description="Events that trigger transition animations. @deprecated", ) - variable_triggers: typing.Optional[typing.List[div_trigger.DivTrigger]] = Field( + variable_triggers: typing.Optional[typing.Sequence[div_trigger.DivTrigger]] = Field( min_items=1, description="Triggers for changing variables.", ) - variables: typing.Optional[typing.List[div_variable.DivVariable]] = Field( + variables: typing.Optional[typing.Sequence[div_variable.DivVariable]] = Field( min_items=1, description="Declaration of variables that can be used in an element.", ) @@ -60,18 +68,20 @@ class DivDataState(BaseDiv): def __init__( self, *, - div: div.Div, - state_id: int, + div: typing.Optional[div.Div] = None, + state_id: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( div=div, state_id=state_id, + **kwargs, ) div: div.Div = Field( description="Contents.", ) - state_id: int = Field( + state_id: typing.Union[Expr, int] = Field( description="State ID.", ) diff --git a/json-builder/python/pydivkit/div/div_default_indicator_item_placement.py b/json-builder/python/pydivkit/div/div_default_indicator_item_placement.py new file mode 100644 index 000000000..f8e775bd4 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_default_indicator_item_placement.py @@ -0,0 +1,35 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_fixed_size + + +# Element size adjusts to a parent element. +class DivDefaultIndicatorItemPlacement(BaseDiv): + + def __init__( + self, *, + type: str = "default", + space_between_centers: typing.Optional[div_fixed_size.DivFixedSize] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + space_between_centers=space_between_centers, + **kwargs, + ) + + type: str = Field(default="default") + space_between_centers: typing.Optional[div_fixed_size.DivFixedSize] = Field( + description="Spacing between indicator centers.", + ) + + +DivDefaultIndicatorItemPlacement.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_dimension.py b/json-builder/python/pydivkit/div/div_dimension.py index 3b5ac6c65..5aab955fc 100644 --- a/json-builder/python/pydivkit/div/div_dimension.py +++ b/json-builder/python/pydivkit/div/div_dimension.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit @@ -16,17 +16,19 @@ class DivDimension(BaseDiv): def __init__( self, *, - value: float, - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( unit=unit, value=value, + **kwargs, ) - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( ) - value: float = Field( + value: typing.Union[Expr, float] = Field( description="Value.", ) diff --git a/json-builder/python/pydivkit/div/div_disappear_action.py b/json-builder/python/pydivkit/div/div_disappear_action.py new file mode 100644 index 000000000..369f23ae9 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_disappear_action.py @@ -0,0 +1,86 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_download_callbacks + + +# Actions performed when an element becomes invisible. +class DivDisappearAction(BaseDiv): + + def __init__( + self, *, + disappear_duration: typing.Optional[typing.Union[Expr, int]] = None, + download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = None, + log_id: typing.Optional[typing.Union[Expr, str]] = None, + log_limit: typing.Optional[typing.Union[Expr, int]] = None, + payload: typing.Optional[typing.Dict[str, typing.Any]] = None, + referer: typing.Optional[typing.Union[Expr, str]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + visibility_percentage: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, + ): + super().__init__( + disappear_duration=disappear_duration, + download_callbacks=download_callbacks, + log_id=log_id, + log_limit=log_limit, + payload=payload, + referer=referer, + url=url, + visibility_percentage=visibility_percentage, + **kwargs, + ) + + disappear_duration: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Time in milliseconds during which an element must be " + "invisible to trigger`disappear-action`." + ), + ) + download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = Field( + description=( + "Callbacks that are called after " + "[dataloading](../../interaction.dita#loading-data)." + ), + ) + log_id: typing.Union[Expr, str] = Field( + min_length=1, + description="Logging ID.", + ) + log_limit: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Limit on the number of loggings. If `0`, the limit is " + "removed." + ), + ) + payload: typing.Optional[typing.Dict[str, typing.Any]] = Field( + description="Additional parameters, passed to the host application.", + ) + referer: typing.Optional[typing.Union[Expr, str]] = Field( + format="uri", + description="Referer URL for logging.", + ) + url: typing.Optional[typing.Union[Expr, str]] = Field( + format="uri", + description=( + "URL. Possible values: `url` or `div-action://`. To learn " + "more, see [Interactionwith " + "elements](../../interaction.dita)." + ), + ) + visibility_percentage: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Percentage of the visible part of an element that triggers " + "`disappear-action`." + ), + ) + + +DivDisappearAction.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_download_callbacks.py b/json-builder/python/pydivkit/div/div_download_callbacks.py index 7c1f38b96..26ffb5779 100644 --- a/json-builder/python/pydivkit/div/div_download_callbacks.py +++ b/json-builder/python/pydivkit/div/div_download_callbacks.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_action @@ -17,22 +17,24 @@ class DivDownloadCallbacks(BaseDiv): def __init__( self, *, - on_fail_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - on_success_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + on_fail_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + on_success_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + **kwargs: typing.Any, ): super().__init__( on_fail_actions=on_fail_actions, on_success_actions=on_success_actions, + **kwargs, ) - on_fail_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + on_fail_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "Actions in case of unsuccessful loading if the host " "reported it or the waitingtime expired." ), ) - on_success_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + on_success_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Actions in case of successful loading.", ) diff --git a/json-builder/python/pydivkit/div/div_drawable.py b/json-builder/python/pydivkit/div/div_drawable.py index 35f3c0667..822b28560 100644 --- a/json-builder/python/pydivkit/div/div_drawable.py +++ b/json-builder/python/pydivkit/div/div_drawable.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_shape_drawable diff --git a/json-builder/python/pydivkit/div/div_edge_insets.py b/json-builder/python/pydivkit/div/div_edge_insets.py index c248ec743..2edac4607 100644 --- a/json-builder/python/pydivkit/div/div_edge_insets.py +++ b/json-builder/python/pydivkit/div/div_edge_insets.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit @@ -16,11 +16,12 @@ class DivEdgeInsets(BaseDiv): def __init__( self, *, - bottom: typing.Optional[int] = None, - left: typing.Optional[int] = None, - right: typing.Optional[int] = None, - top: typing.Optional[int] = None, - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, + bottom: typing.Optional[typing.Union[Expr, int]] = None, + left: typing.Optional[typing.Union[Expr, int]] = None, + right: typing.Optional[typing.Union[Expr, int]] = None, + top: typing.Optional[typing.Union[Expr, int]] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + **kwargs: typing.Any, ): super().__init__( bottom=bottom, @@ -28,21 +29,22 @@ class DivEdgeInsets(BaseDiv): right=right, top=top, unit=unit, + **kwargs, ) - bottom: typing.Optional[int] = Field( + bottom: typing.Optional[typing.Union[Expr, int]] = Field( description="Bottom margin.", ) - left: typing.Optional[int] = Field( + left: typing.Optional[typing.Union[Expr, int]] = Field( description="Left margin.", ) - right: typing.Optional[int] = Field( + right: typing.Optional[typing.Union[Expr, int]] = Field( description="Right margin.", ) - top: typing.Optional[int] = Field( + top: typing.Optional[typing.Union[Expr, int]] = Field( description="Top margin.", ) - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( ) diff --git a/json-builder/python/pydivkit/div/div_extension.py b/json-builder/python/pydivkit/div/div_extension.py index 4ff1f3ed6..bb29d28fd 100644 --- a/json-builder/python/pydivkit/div/div_extension.py +++ b/json-builder/python/pydivkit/div/div_extension.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Extension that affects an element. @@ -14,15 +14,17 @@ class DivExtension(BaseDiv): def __init__( self, *, - id: str, + id: typing.Optional[typing.Union[Expr, str]] = None, params: typing.Optional[typing.Dict[str, typing.Any]] = None, + **kwargs: typing.Any, ): super().__init__( id=id, params=params, + **kwargs, ) - id: str = Field( + id: typing.Union[Expr, str] = Field( min_length=1, description="Extension ID.", ) diff --git a/json-builder/python/pydivkit/div/div_fade_transition.py b/json-builder/python/pydivkit/div/div_fade_transition.py index 39b2ae845..d05c124bb 100644 --- a/json-builder/python/pydivkit/div/div_fade_transition.py +++ b/json-builder/python/pydivkit/div/div_fade_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator @@ -17,10 +17,11 @@ class DivFadeTransition(BaseDiv): def __init__( self, *, type: str = "fade", - alpha: typing.Optional[float] = None, - duration: typing.Optional[int] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - start_delay: typing.Optional[int] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -28,22 +29,23 @@ class DivFadeTransition(BaseDiv): duration=duration, interpolator=interpolator, start_delay=start_delay, + **kwargs, ) type: str = Field(default="fade") - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Value of the alpha channel which the element starts " "appearing from or at which itfinishes disappearing." ), ) - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description="Transition speed nature.", ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) diff --git a/json-builder/python/pydivkit/div/div_filter.py b/json-builder/python/pydivkit/div/div_filter.py new file mode 100644 index 000000000..d596fd19f --- /dev/null +++ b/json-builder/python/pydivkit/div/div_filter.py @@ -0,0 +1,17 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing +from typing import Union + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_blur + + +DivFilter = Union[ + div_blur.DivBlur, +] diff --git a/json-builder/python/pydivkit/div/div_fixed_count.py b/json-builder/python/pydivkit/div/div_fixed_count.py index 185f8ba75..b34754d02 100644 --- a/json-builder/python/pydivkit/div/div_fixed_count.py +++ b/json-builder/python/pydivkit/div/div_fixed_count.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Fixed number of repetitions. @@ -14,16 +14,18 @@ class DivFixedCount(BaseDiv): def __init__( self, *, - value: int, type: str = "fixed", + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default="fixed") - value: int = Field( + value: typing.Union[Expr, int] = Field( description="Number of repetitions.", ) diff --git a/json-builder/python/pydivkit/div/div_fixed_length_input_mask.py b/json-builder/python/pydivkit/div/div_fixed_length_input_mask.py new file mode 100644 index 000000000..c15bd731f --- /dev/null +++ b/json-builder/python/pydivkit/div/div_fixed_length_input_mask.py @@ -0,0 +1,104 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +# Mask for entering text with a fixed number of characters. +class DivFixedLengthInputMask(BaseDiv): + + def __init__( + self, *, + type: str = "fixed_length", + always_visible: typing.Optional[typing.Union[Expr, bool]] = None, + pattern: typing.Optional[typing.Union[Expr, str]] = None, + pattern_elements: typing.Optional[typing.Sequence[DivFixedLengthInputMaskPatternElement]] = None, + raw_text_variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + always_visible=always_visible, + pattern=pattern, + pattern_elements=pattern_elements, + raw_text_variable=raw_text_variable, + **kwargs, + ) + + type: str = Field(default="fixed_length") + always_visible: typing.Optional[typing.Union[Expr, bool]] = Field( + description=( + "If this option is enabled, the text field contains the mask " + "before being filledin." + ), + ) + pattern: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "String that sets the text input template. For example, the " + "`+7 (###) ###-##-#`template for a phone number." + ), + ) + pattern_elements: typing.Sequence[DivFixedLengthInputMaskPatternElement] = Field( + min_items=1, + description=( + "Template decoding is a description of the characters that " + "will be replaced withuser input." + ), + ) + raw_text_variable: typing.Union[Expr, str] = Field( + min_length=1, + description="Name of the variable to store the unprocessed value.", + ) + + +# Template decoding is a description of the characters that will be replaced with +# user input. +class DivFixedLengthInputMaskPatternElement(BaseDiv): + + def __init__( + self, *, + key: typing.Optional[typing.Union[Expr, str]] = None, + placeholder: typing.Optional[typing.Union[Expr, str]] = None, + regex: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + key=key, + placeholder=placeholder, + regex=regex, + **kwargs, + ) + + key: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "A character in the template that will be replaced with a " + "user-defined character." + ), + ) + placeholder: typing.Optional[typing.Union[Expr, str]] = Field( + description=( + "The character that\'s displayed in the input field where " + "the user is expected toenter text. This is used if mask " + "display is enabled." + ), + ) + regex: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Regular expression for validating character inputs. For " + "example, when a mask isdigit-only." + ), + ) + + +DivFixedLengthInputMaskPatternElement.update_forward_refs() + + +DivFixedLengthInputMask.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_fixed_size.py b/json-builder/python/pydivkit/div/div_fixed_size.py index d2f4016ae..c66926de9 100644 --- a/json-builder/python/pydivkit/div/div_fixed_size.py +++ b/json-builder/python/pydivkit/div/div_fixed_size.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit @@ -16,25 +16,27 @@ class DivFixedSize(BaseDiv): def __init__( self, *, - value: int, type: str = "fixed", - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, unit=unit, value=value, + **kwargs, ) type: str = Field(default="fixed") - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description=( "Unit of measurement. To learn more about units of size " "measurement, see [Layoutinside the " "card](../../layout.dita)." ), ) - value: int = Field( + value: typing.Union[Expr, int] = Field( description="Element size.", ) diff --git a/json-builder/python/pydivkit/div/div_focus.py b/json-builder/python/pydivkit/div/div_focus.py index e2b792ad6..c322bd3bc 100644 --- a/json-builder/python/pydivkit/div/div_focus.py +++ b/json-builder/python/pydivkit/div/div_focus.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_action, div_background, div_border @@ -16,11 +16,12 @@ class DivFocus(BaseDiv): def __init__( self, *, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, next_focus_ids: typing.Optional[DivFocusNextFocusIds] = None, - on_blur: typing.Optional[typing.List[div_action.DivAction]] = None, - on_focus: typing.Optional[typing.List[div_action.DivAction]] = None, + on_blur: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + on_focus: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + **kwargs: typing.Any, ): super().__init__( background=background, @@ -28,9 +29,10 @@ class DivFocus(BaseDiv): next_focus_ids=next_focus_ids, on_blur=on_blur, on_focus=on_focus, + **kwargs, ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description=( "Background of an element when it is in focus. It can " @@ -38,16 +40,16 @@ class DivFocus(BaseDiv): ), ) border: typing.Optional[div_border.DivBorder] = Field( - description="Border of an element when it is in focus", + description="Border of an element when it\'s in focus.", ) next_focus_ids: typing.Optional[DivFocusNextFocusIds] = Field( description="IDs of elements that will be next to get focus.", ) - on_blur: typing.Optional[typing.List[div_action.DivAction]] = Field( + on_blur: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Actions when an element loses focus.", ) - on_focus: typing.Optional[typing.List[div_action.DivAction]] = Field( + on_focus: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Actions when an element gets focus.", ) @@ -58,11 +60,12 @@ class DivFocusNextFocusIds(BaseDiv): def __init__( self, *, - down: typing.Optional[str] = None, - forward: typing.Optional[str] = None, - left: typing.Optional[str] = None, - right: typing.Optional[str] = None, - up: typing.Optional[str] = None, + down: typing.Optional[typing.Union[Expr, str]] = None, + forward: typing.Optional[typing.Union[Expr, str]] = None, + left: typing.Optional[typing.Union[Expr, str]] = None, + right: typing.Optional[typing.Union[Expr, str]] = None, + up: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( down=down, @@ -70,21 +73,22 @@ class DivFocusNextFocusIds(BaseDiv): left=left, right=right, up=up, + **kwargs, ) - down: typing.Optional[str] = Field( + down: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, ) - forward: typing.Optional[str] = Field( + forward: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, ) - left: typing.Optional[str] = Field( + left: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, ) - right: typing.Optional[str] = Field( + right: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, ) - up: typing.Optional[str] = Field( + up: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, ) diff --git a/json-builder/python/pydivkit/div/div_font_family.py b/json-builder/python/pydivkit/div/div_font_family.py index fd1bbc6b5..62203a7bb 100644 --- a/json-builder/python/pydivkit/div/div_font_family.py +++ b/json-builder/python/pydivkit/div/div_font_family.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivFontFamily(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_font_weight.py b/json-builder/python/pydivkit/div/div_font_weight.py index e43dff26f..3ee84a94a 100644 --- a/json-builder/python/pydivkit/div/div_font_weight.py +++ b/json-builder/python/pydivkit/div/div_font_weight.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivFontWeight(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_gallery.py b/json-builder/python/pydivkit/div/div_gallery.py index 828672035..b18250ee7 100644 --- a/json-builder/python/pydivkit/div/div_gallery.py +++ b/json-builder/python/pydivkit/div/div_gallery.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_focus, div_size, div_tooltip, div_transform, div_transition_trigger, - div_visibility, div_visibility_action, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_size, div_tooltip, div_transform, + div_transition_trigger, div_visibility, div_visibility_action, ) @@ -22,41 +22,43 @@ class DivGallery(BaseDiv): def __init__( self, *, - items: typing.List[div.Div], type: str = "gallery", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_count: typing.Optional[int] = None, - column_span: typing.Optional[int] = None, - cross_content_alignment: typing.Optional[DivGalleryCrossContentAlignment] = None, - cross_spacing: typing.Optional[int] = None, - default_item: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_count: typing.Optional[typing.Union[Expr, int]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + cross_content_alignment: typing.Optional[typing.Union[Expr, DivGalleryCrossContentAlignment]] = None, + cross_spacing: typing.Optional[typing.Union[Expr, int]] = None, + default_item: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - item_spacing: typing.Optional[int] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + item_spacing: typing.Optional[typing.Union[Expr, int]] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - orientation: typing.Optional[DivGalleryOrientation] = None, + orientation: typing.Optional[typing.Union[Expr, DivGalleryOrientation]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - restrict_parent_scroll: typing.Optional[bool] = None, - row_span: typing.Optional[int] = None, - scroll_mode: typing.Optional[DivGalleryScrollMode] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + scroll_mode: typing.Optional[typing.Union[Expr, DivGalleryScrollMode]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -71,6 +73,7 @@ class DivGallery(BaseDiv): cross_content_alignment=cross_content_alignment, cross_spacing=cross_spacing, default_item=default_item, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, @@ -94,46 +97,47 @@ class DivGallery(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="gallery") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_count: typing.Optional[int] = Field( + column_count: typing.Optional[typing.Union[Expr, int]] = Field( description="Number of columns for block layout.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - cross_content_alignment: typing.Optional[DivGalleryCrossContentAlignment] = Field( + cross_content_alignment: typing.Optional[typing.Union[Expr, DivGalleryCrossContentAlignment]] = Field( description=( "Aligning elements in the direction perpendicular to the " "scroll direction. Inhorizontal galleries:`start` — " @@ -143,13 +147,13 @@ class DivGallery(BaseDiv): "card;`center` — to the center;`end` — to the right." ), ) - cross_spacing: typing.Optional[int] = Field( + cross_spacing: typing.Optional[typing.Union[Expr, int]] = Field( description=( - "Spacing between elements across the scroll axis. Default " - "value is `item_spacing`" + "Spacing between elements across the scroll axis. By " + "default, the value set to`item_spacing`." ), ) - default_item: typing.Optional[int] = Field( + default_item: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Ordinal number of the gallery element to be scrolled to by " "default. For`scroll_mode`:`default` — the scroll position " @@ -158,7 +162,11 @@ class DivGallery(BaseDiv): "to the center of the element." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -178,17 +186,17 @@ class DivGallery(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - item_spacing: typing.Optional[int] = Field( + item_spacing: typing.Optional[typing.Union[Expr, int]] = Field( description="Spacing between elements.", ) - items: typing.List[div.Div] = Field( + items: typing.Sequence[div.Div] = Field( min_items=1, description=( "Gallery elements. Scrolling to elements can be " @@ -211,38 +219,38 @@ class DivGallery(BaseDiv): margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - orientation: typing.Optional[DivGalleryOrientation] = Field( + orientation: typing.Optional[typing.Union[Expr, DivGalleryOrientation]] = Field( description="Gallery orientation.", ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - restrict_parent_scroll: typing.Optional[bool] = Field( + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "If the parameter is enabled, the gallery won\'t transmit " "the scroll gesture to theparent element." ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - scroll_mode: typing.Optional[DivGalleryScrollMode] = Field( + scroll_mode: typing.Optional[typing.Union[Expr, DivGalleryScrollMode]] = Field( description=( "Scroll type: `default` — continuous, `paging` — " "page-by-page." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -252,9 +260,8 @@ class DivGallery(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -278,14 +285,14 @@ class DivGallery(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -294,7 +301,7 @@ class DivGallery(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_gif_image.py b/json-builder/python/pydivkit/div/div_gif_image.py index f49a5d880..6f8104a83 100644 --- a/json-builder/python/pydivkit/div/div_gif_image.py +++ b/json-builder/python/pydivkit/div/div_gif_image.py @@ -6,15 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, div_aspect, div_background, div_border, div_change_transition, - div_edge_insets, div_extension, div_focus, div_image_scale, div_size, - div_tooltip, div_transform, div_transition_trigger, div_visibility, - div_visibility_action, + div_disappear_action, div_edge_insets, div_extension, div_focus, + div_image_scale, div_size, div_tooltip, div_transform, + div_transition_trigger, div_visibility, div_visibility_action, ) @@ -23,45 +23,47 @@ class DivGifImage(BaseDiv): def __init__( self, *, - gif_url: str, type: str = "gif", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, aspect: typing.Optional[div_aspect.DivAspect] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, + gif_url: typing.Optional[typing.Union[Expr, str]] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - placeholder_color: typing.Optional[str] = None, - preload_required: typing.Optional[bool] = None, - preview: typing.Optional[str] = None, - row_span: typing.Optional[int] = None, - scale: typing.Optional[div_image_scale.DivImageScale] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + placeholder_color: typing.Optional[typing.Union[Expr, str]] = None, + preload_required: typing.Optional[typing.Union[Expr, bool]] = None, + preview: typing.Optional[typing.Union[Expr, str]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -78,6 +80,7 @@ class DivGifImage(BaseDiv): column_span=column_span, content_alignment_horizontal=content_alignment_horizontal, content_alignment_vertical=content_alignment_vertical, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, extensions=extensions, focus=focus, @@ -103,11 +106,12 @@ class DivGifImage(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="gif") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -117,57 +121,65 @@ class DivGifImage(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) aspect: typing.Optional[div_aspect.DivAspect] = Field( + description=( + "Fixed aspect ratio. The element\'s height is calculated " + "based on the width,ignoring the `height` value." + ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description="Horizontal image alignment.", ) - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description="Vertical image alignment.", ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -178,7 +190,7 @@ class DivGifImage(BaseDiv): focus: typing.Optional[div_focus.DivFocus] = Field( description="Parameters when focusing on an element or losing focus.", ) - gif_url: str = Field( + gif_url: typing.Union[Expr, str] = Field( format="uri", description="Direct URL to a GIF image.", ) @@ -191,18 +203,18 @@ class DivGifImage(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( @@ -211,14 +223,14 @@ class DivGifImage(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - placeholder_color: typing.Optional[str] = Field( + placeholder_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Placeholder background before the image is loaded.", ) - preload_required: typing.Optional[bool] = Field( + preload_required: typing.Optional[typing.Union[Expr, bool]] = Field( description="Background image must be loaded before the display.", ) - preview: typing.Optional[str] = Field( + preview: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Image preview encoded in `base64`. It will be shown instead " @@ -226,27 +238,27 @@ class DivGifImage(BaseDiv): "`data url`:`data:[;base64],`" ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - scale: typing.Optional[div_image_scale.DivImageScale] = Field( + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = Field( description=( "Image scaling:`fit` places the entire image into the " "element (free space isfilled with background);`fill` scales " "the image to the element size and cuts offthe excess." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -256,9 +268,8 @@ class DivGifImage(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -282,14 +293,14 @@ class DivGifImage(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -298,7 +309,7 @@ class DivGifImage(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_grid.py b/json-builder/python/pydivkit/div/div_grid.py index d394d30d4..fcdf4f429 100644 --- a/json-builder/python/pydivkit/div/div_grid.py +++ b/json-builder/python/pydivkit/div/div_grid.py @@ -6,14 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, - div_background, div_border, div_change_transition, div_edge_insets, - div_extension, div_focus, div_size, div_tooltip, div_transform, - div_transition_trigger, div_visibility, div_visibility_action, + div_background, div_border, div_change_transition, div_disappear_action, + div_edge_insets, div_extension, div_focus, div_size, div_tooltip, + div_transform, div_transition_trigger, div_visibility, + div_visibility_action, ) @@ -22,41 +23,43 @@ class DivGrid(BaseDiv): def __init__( self, *, - column_count: int, - items: typing.List[div.Div], type: str = "grid", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_count: typing.Optional[typing.Union[Expr, int]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -73,6 +76,7 @@ class DivGrid(BaseDiv): column_span=column_span, content_alignment_horizontal=content_alignment_horizontal, content_alignment_vertical=content_alignment_vertical, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, extensions=extensions, focus=focus, @@ -94,11 +98,12 @@ class DivGrid(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="grid") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -108,58 +113,62 @@ class DivGrid(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_count: int = Field( + column_count: typing.Union[Expr, int] = Field( description="Number of columns.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description="Horizontal alignment of grid contents.", ) - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description="Vertical alignment of grid contents.", ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -179,22 +188,22 @@ class DivGrid(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - items: typing.List[div.Div] = Field( + items: typing.Sequence[div.Div] = Field( min_items=1, description="Contents.", ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( @@ -203,20 +212,20 @@ class DivGrid(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -226,9 +235,8 @@ class DivGrid(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -252,14 +260,14 @@ class DivGrid(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -268,7 +276,7 @@ class DivGrid(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_image.py b/json-builder/python/pydivkit/div/div_image.py index bec774c2a..063c907b9 100644 --- a/json-builder/python/pydivkit/div/div_image.py +++ b/json-builder/python/pydivkit/div/div_image.py @@ -6,15 +6,16 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, div_aspect, div_background, div_blend_mode, div_border, - div_change_transition, div_edge_insets, div_extension, div_fade_transition, - div_focus, div_image_scale, div_size, div_tooltip, div_transform, - div_transition_trigger, div_visibility, div_visibility_action, + div_change_transition, div_disappear_action, div_edge_insets, div_extension, + div_fade_transition, div_filter, div_focus, div_image_scale, div_size, + div_tooltip, div_transform, div_transition_trigger, div_visibility, + div_visibility_action, ) @@ -23,49 +24,52 @@ class DivImage(BaseDiv): def __init__( self, *, - image_url: str, type: str = "image", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, appearance_animation: typing.Optional[div_fade_transition.DivFadeTransition] = None, aspect: typing.Optional[div_aspect.DivAspect] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, + filters: typing.Optional[typing.Sequence[div_filter.DivFilter]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - high_priority_preview_show: typing.Optional[bool] = None, - id: typing.Optional[str] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + high_priority_preview_show: typing.Optional[typing.Union[Expr, bool]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + image_url: typing.Optional[typing.Union[Expr, str]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - placeholder_color: typing.Optional[str] = None, - preload_required: typing.Optional[bool] = None, - preview: typing.Optional[str] = None, - row_span: typing.Optional[int] = None, - scale: typing.Optional[div_image_scale.DivImageScale] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tint_color: typing.Optional[str] = None, - tint_mode: typing.Optional[div_blend_mode.DivBlendMode] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + placeholder_color: typing.Optional[typing.Union[Expr, str]] = None, + preload_required: typing.Optional[typing.Union[Expr, bool]] = None, + preview: typing.Optional[typing.Union[Expr, str]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tint_color: typing.Optional[typing.Union[Expr, str]] = None, + tint_mode: typing.Optional[typing.Union[Expr, div_blend_mode.DivBlendMode]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -83,8 +87,10 @@ class DivImage(BaseDiv): column_span=column_span, content_alignment_horizontal=content_alignment_horizontal, content_alignment_vertical=content_alignment_vertical, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, extensions=extensions, + filters=filters, focus=focus, height=height, high_priority_preview_show=high_priority_preview_show, @@ -111,11 +117,12 @@ class DivImage(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="image") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -125,26 +132,26 @@ class DivImage(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." @@ -154,31 +161,39 @@ class DivImage(BaseDiv): description="Transparency animation when loading an image.", ) aspect: typing.Optional[div_aspect.DivAspect] = Field( + description=( + "Fixed aspect ratio. The element\'s height is calculated " + "based on the width,ignoring the `height` value." + ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description="Horizontal image alignment.", ) - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description="Vertical image alignment.", ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -186,6 +201,10 @@ class DivImage(BaseDiv): "[DivExtension](../../extensions.dita)." ), ) + filters: typing.Optional[typing.Sequence[div_filter.DivFilter]] = Field( + min_items=1, + description="Image filters.", + ) focus: typing.Optional[div_focus.DivFocus] = Field( description="Parameters when focusing on an element or losing focus.", ) @@ -198,7 +217,7 @@ class DivImage(BaseDiv): "card](../../layout.dita)." ), ) - high_priority_preview_show: typing.Optional[bool] = Field( + high_priority_preview_show: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "It sets the priority of displaying the preview — the " "preview is decoded in themain stream and displayed as the " @@ -207,22 +226,22 @@ class DivImage(BaseDiv): "launch time." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - image_url: str = Field( + image_url: typing.Union[Expr, str] = Field( format="uri", description="Direct URL to an image.", ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( @@ -231,14 +250,14 @@ class DivImage(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - placeholder_color: typing.Optional[str] = Field( + placeholder_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Placeholder background before the image is loaded.", ) - preload_required: typing.Optional[bool] = Field( + preload_required: typing.Optional[typing.Union[Expr, bool]] = Field( description="Background image must be loaded before the display.", ) - preview: typing.Optional[str] = Field( + preview: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Image preview encoded in `base64`. It will be shown instead " @@ -246,34 +265,34 @@ class DivImage(BaseDiv): "`data url`:`data:[;base64],`" ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - scale: typing.Optional[div_image_scale.DivImageScale] = Field( + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = Field( description=( "Image scaling:`fit` places the entire image into the " "element (free space isfilled with background);`fill` scales " "the image to the element size and cuts offthe excess." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tint_color: typing.Optional[str] = Field( + tint_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="New color of a contour image.", ) - tint_mode: typing.Optional[div_blend_mode.DivBlendMode] = Field( - description="The blend mode of color specified in tint_color.", + tint_mode: typing.Optional[typing.Union[Expr, div_blend_mode.DivBlendMode]] = Field( + description="Blend mode of the color specified in `tint_color`.", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -283,9 +302,8 @@ class DivImage(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -309,14 +327,14 @@ class DivImage(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -325,7 +343,7 @@ class DivImage(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_image_background.py b/json-builder/python/pydivkit/div/div_image_background.py index c5c701a3b..74eb966ad 100644 --- a/json-builder/python/pydivkit/div/div_image_background.py +++ b/json-builder/python/pydivkit/div/div_image_background.py @@ -6,9 +6,12 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -from . import div_alignment_horizontal, div_alignment_vertical, div_image_scale +from . import ( + div_alignment_horizontal, div_alignment_vertical, div_filter, + div_image_scale, +) # Background image. @@ -16,42 +19,50 @@ class DivImageBackground(BaseDiv): def __init__( self, *, - image_url: str, type: str = "image", - alpha: typing.Optional[float] = None, - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - preload_required: typing.Optional[bool] = None, - scale: typing.Optional[div_image_scale.DivImageScale] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + filters: typing.Optional[typing.Sequence[div_filter.DivFilter]] = None, + image_url: typing.Optional[typing.Union[Expr, str]] = None, + preload_required: typing.Optional[typing.Union[Expr, bool]] = None, + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, alpha=alpha, content_alignment_horizontal=content_alignment_horizontal, content_alignment_vertical=content_alignment_vertical, + filters=filters, image_url=image_url, preload_required=preload_required, scale=scale, + **kwargs, ) type: str = Field(default="image") - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description="Image transparency.", ) - content_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + content_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description="Horizontal image alignment.", ) - content_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + content_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description="Vertical image alignment.", ) - image_url: str = Field( + filters: typing.Optional[typing.Sequence[div_filter.DivFilter]] = Field( + min_items=1, + description="Image filters.", + ) + image_url: typing.Union[Expr, str] = Field( format="uri", description="Image URL.", ) - preload_required: typing.Optional[bool] = Field( + preload_required: typing.Optional[typing.Union[Expr, bool]] = Field( description="Background image must be loaded before the display.", ) - scale: typing.Optional[div_image_scale.DivImageScale] = Field( + scale: typing.Optional[typing.Union[Expr, div_image_scale.DivImageScale]] = Field( description="Image scaling.", ) diff --git a/json-builder/python/pydivkit/div/div_image_scale.py b/json-builder/python/pydivkit/div/div_image_scale.py index fe7415862..d15cb92b5 100644 --- a/json-builder/python/pydivkit/div/div_image_scale.py +++ b/json-builder/python/pydivkit/div/div_image_scale.py @@ -6,10 +6,11 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivImageScale(str, enum.Enum): FILL = "fill" NO_SCALE = "no_scale" FIT = "fit" + STRETCH = "stretch" diff --git a/json-builder/python/pydivkit/div/div_indicator.py b/json-builder/python/pydivkit/div/div_indicator.py index 18752fe90..52dffbd72 100644 --- a/json-builder/python/pydivkit/div/div_indicator.py +++ b/json-builder/python/pydivkit/div/div_indicator.py @@ -6,14 +6,16 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_fixed_size, div_focus, div_shape, div_size, div_tooltip, div_transform, - div_transition_trigger, div_visibility, div_visibility_action, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_fixed_size, div_focus, div_indicator_item_placement, + div_rounded_rectangle_shape, div_shape, div_size, div_tooltip, + div_transform, div_transition_trigger, div_visibility, + div_visibility_action, ) @@ -24,44 +26,51 @@ class DivIndicator(BaseDiv): self, *, type: str = "indicator", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - active_item_color: typing.Optional[str] = None, - active_item_size: typing.Optional[float] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - animation: typing.Optional[DivIndicatorAnimation] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + active_item_color: typing.Optional[typing.Union[Expr, str]] = None, + active_item_size: typing.Optional[typing.Union[Expr, float]] = None, + active_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + animation: typing.Optional[typing.Union[Expr, DivIndicatorAnimation]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - inactive_item_color: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + inactive_item_color: typing.Optional[typing.Union[Expr, str]] = None, + inactive_minimum_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = None, + inactive_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = None, + items_placement: typing.Optional[div_indicator_item_placement.DivIndicatorItemPlacement] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - minimum_item_size: typing.Optional[float] = None, + minimum_item_size: typing.Optional[typing.Union[Expr, float]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - pager_id: typing.Optional[str] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + pager_id: typing.Optional[typing.Union[Expr, str]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, shape: typing.Optional[div_shape.DivShape] = None, space_between_centers: typing.Optional[div_fixed_size.DivFixedSize] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, accessibility=accessibility, active_item_color=active_item_color, active_item_size=active_item_size, + active_shape=active_shape, alignment_horizontal=alignment_horizontal, alignment_vertical=alignment_vertical, alpha=alpha, @@ -69,11 +78,15 @@ class DivIndicator(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, id=id, inactive_item_color=inactive_item_color, + inactive_minimum_shape=inactive_minimum_shape, + inactive_shape=inactive_shape, + items_placement=items_placement, margins=margins, minimum_item_size=minimum_item_size, paddings=paddings, @@ -92,53 +105,61 @@ class DivIndicator(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="indicator") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - active_item_color: typing.Optional[str] = Field( + active_item_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", - description="Active indicator color.", + description="Active indicator color. @deprecated", ) - active_item_size: typing.Optional[float] = Field( - description="A size multiplier for an active indicator.", + active_item_size: typing.Optional[typing.Union[Expr, float]] = Field( + description="A size multiplier for an active indicator. @deprecated", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + active_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = Field( + description="Active indicator shape.", + ) + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - animation: typing.Optional[DivIndicatorAnimation] = Field( + animation: typing.Optional[typing.Union[Expr, DivIndicatorAnimation]] = Field( description="Animation of switching between indicators.", ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -158,39 +179,56 @@ class DivIndicator(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - inactive_item_color: typing.Optional[str] = Field( + inactive_item_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", - description="Indicator color.", + description="Indicator color. @deprecated", + ) + inactive_minimum_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = Field( + description=( + "Inactive indicator shape, minimum size. Used when all the " + "indicators don\'t fit onthe screen." + ), + ) + inactive_shape: typing.Optional[div_rounded_rectangle_shape.DivRoundedRectangleShape] = Field( + description="Indicator shape.", + ) + items_placement: typing.Optional[div_indicator_item_placement.DivIndicatorItemPlacement] = Field( + description=( + "Indicator items placement mode:Default: Indicators\' width " + "is fixed and defined bythe `shape` parameters.Stretch: " + "Indicators are expanded to fill the entire width." + ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - minimum_item_size: typing.Optional[float] = Field( + minimum_item_size: typing.Optional[typing.Union[Expr, float]] = Field( description=( "A size multiplier for a minimal indicator. It is used when " - "the required number ofindicators don\'t fit on the screen." + "the required number ofindicators don\'t fit on the screen. " + "@deprecated" ), ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - pager_id: typing.Optional[str] = Field( + pager_id: typing.Optional[typing.Union[Expr, str]] = Field( description="ID of the pager that is a data source for an indicator.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " @@ -198,12 +236,12 @@ class DivIndicator(BaseDiv): ), ) shape: typing.Optional[div_shape.DivShape] = Field( - description="Indicator shape.", + description="Indicator shape. @deprecated", ) space_between_centers: typing.Optional[div_fixed_size.DivFixedSize] = Field( - description="Spacing between indicator centers.", + description="Spacing between indicator centers. @deprecated", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -213,9 +251,8 @@ class DivIndicator(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -239,14 +276,14 @@ class DivIndicator(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -255,7 +292,7 @@ class DivIndicator(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_indicator_item_placement.py b/json-builder/python/pydivkit/div/div_indicator_item_placement.py new file mode 100644 index 000000000..68b30279f --- /dev/null +++ b/json-builder/python/pydivkit/div/div_indicator_item_placement.py @@ -0,0 +1,20 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing +from typing import Union + +from pydivkit.core import BaseDiv, Expr, Field + +from . import ( + div_default_indicator_item_placement, div_stretch_indicator_item_placement, +) + + +DivIndicatorItemPlacement = Union[ + div_default_indicator_item_placement.DivDefaultIndicatorItemPlacement, + div_stretch_indicator_item_placement.DivStretchIndicatorItemPlacement, +] diff --git a/json-builder/python/pydivkit/div/div_infinity_count.py b/json-builder/python/pydivkit/div/div_infinity_count.py index ada5dd2bc..e7b01e9bf 100644 --- a/json-builder/python/pydivkit/div/div_infinity_count.py +++ b/json-builder/python/pydivkit/div/div_infinity_count.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Infinite number of repetitions. @@ -15,9 +15,11 @@ class DivInfinityCount(BaseDiv): def __init__( self, *, type: str = "infinity", + **kwargs: typing.Any, ): super().__init__( type=type, + **kwargs, ) type: str = Field(default="infinity") diff --git a/json-builder/python/pydivkit/div/div_input.py b/json-builder/python/pydivkit/div/div_input.py index 15990aa20..08635b8f5 100644 --- a/json-builder/python/pydivkit/div/div_input.py +++ b/json-builder/python/pydivkit/div/div_input.py @@ -6,15 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_focus, div_font_family, div_font_weight, div_size, div_size_unit, - div_tooltip, div_transform, div_transition_trigger, div_visibility, - div_visibility_action, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_font_family, div_font_weight, div_input_mask, + div_input_validator, div_size, div_size_unit, div_tooltip, div_transform, + div_transition_trigger, div_visibility, div_visibility_action, ) @@ -23,47 +23,51 @@ class DivInput(BaseDiv): def __init__( self, *, - text_variable: str, type: str = "input", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, - font_family: typing.Optional[div_font_family.DivFontFamily] = None, - font_size: typing.Optional[int] = None, - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, height: typing.Optional[div_size.DivSize] = None, - highlight_color: typing.Optional[str] = None, - hint_color: typing.Optional[str] = None, - hint_text: typing.Optional[str] = None, - id: typing.Optional[str] = None, - keyboard_type: typing.Optional[DivInputKeyboardType] = None, - letter_spacing: typing.Optional[float] = None, - line_height: typing.Optional[int] = None, + highlight_color: typing.Optional[typing.Union[Expr, str]] = None, + hint_color: typing.Optional[typing.Union[Expr, str]] = None, + hint_text: typing.Optional[typing.Union[Expr, str]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + keyboard_type: typing.Optional[typing.Union[Expr, DivInputKeyboardType]] = None, + letter_spacing: typing.Optional[typing.Union[Expr, float]] = None, + line_height: typing.Optional[typing.Union[Expr, int]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - max_visible_lines: typing.Optional[int] = None, + mask: typing.Optional[div_input_mask.DivInputMask] = None, + max_visible_lines: typing.Optional[typing.Union[Expr, int]] = None, native_interface: typing.Optional[DivInputNativeInterface] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - select_all_on_focus: typing.Optional[bool] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - text_color: typing.Optional[str] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + select_all_on_focus: typing.Optional[typing.Union[Expr, bool]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + text_color: typing.Optional[typing.Union[Expr, str]] = None, + text_variable: typing.Optional[typing.Union[Expr, str]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + validators: typing.Optional[typing.Sequence[div_input_validator.DivInputValidator]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -74,6 +78,7 @@ class DivInput(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, font_family=font_family, @@ -89,6 +94,7 @@ class DivInput(BaseDiv): letter_spacing=letter_spacing, line_height=line_height, margins=margins, + mask=mask, max_visible_lines=max_visible_lines, native_interface=native_interface, paddings=paddings, @@ -103,47 +109,53 @@ class DivInput(BaseDiv): transition_in=transition_in, transition_out=transition_out, transition_triggers=transition_triggers, + validators=validators, visibility=visibility, visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="input") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -154,16 +166,16 @@ class DivInput(BaseDiv): focus: typing.Optional[div_focus.DivFocus] = Field( description="Parameters when focusing on an element or losing focus.", ) - font_family: typing.Optional[div_font_family.DivFontFamily] = Field( + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = Field( description=( "Font family:`text` — a standard text font;`display` — a " "family of fonts with alarge font size." ), ) - font_size: typing.Optional[int] = Field( + font_size: typing.Optional[typing.Union[Expr, int]] = Field( description="Font size.", ) - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description=( "Unit of measurement:`px` — a physical pixel.`dp` — a " "logical pixel that doesn\'tdepend on screen density.`sp` — " @@ -171,7 +183,7 @@ class DivInput(BaseDiv): "Specify height in `sp`. Only available on Android." ), ) - font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Style.", ) height: typing.Optional[div_size.DivSize] = Field( @@ -183,48 +195,49 @@ class DivInput(BaseDiv): "card](../../layout.dita)." ), ) - highlight_color: typing.Optional[str] = Field( + highlight_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description=( "Text highlight color. If the value isn\'t set, the color " "set in the client will beused instead." ), ) - hint_color: typing.Optional[str] = Field( + hint_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Text color.", ) - hint_text: typing.Optional[str] = Field( + hint_text: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description="Tooltip text.", ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - keyboard_type: typing.Optional[DivInputKeyboardType] = Field( + keyboard_type: typing.Optional[typing.Union[Expr, DivInputKeyboardType]] = Field( description="Keyboard type.", ) - letter_spacing: typing.Optional[float] = Field( + letter_spacing: typing.Optional[typing.Union[Expr, float]] = Field( description="Spacing between characters.", ) - line_height: typing.Optional[int] = Field( + line_height: typing.Optional[typing.Union[Expr, int]] = Field( description=( - "Line spacing of the text range. The count is taken from the " - "font baseline.Measured in units specified in " + "Line spacing of the text. Units specified in " "`font_size_unit`." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - max_visible_lines: typing.Optional[int] = Field( + mask: typing.Optional[div_input_mask.DivInputMask] = Field( + description="Mask for entering text based on the specified template.", + ) + max_visible_lines: typing.Optional[typing.Union[Expr, int]] = Field( description=( - "Maximum number of lines that will be visible in the input " - "view." + "Maximum number of lines to be displayed in the input field." ), ) native_interface: typing.Optional[DivInputNativeInterface] = Field( @@ -233,31 +246,31 @@ class DivInput(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - select_all_on_focus: typing.Optional[bool] = Field( + select_all_on_focus: typing.Optional[typing.Union[Expr, bool]] = Field( description="Highlighting input text when focused.", ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - text_color: typing.Optional[str] = Field( + text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Text color.", ) - text_variable: str = Field( + text_variable: typing.Union[Expr, str] = Field( min_length=1, description="Name of text storage variable.", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -267,9 +280,8 @@ class DivInput(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -293,14 +305,18 @@ class DivInput(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + validators: typing.Optional[typing.Sequence[div_input_validator.DivInputValidator]] = Field( + min_items=1, + description="Validators for text value.", + ) + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -309,7 +325,7 @@ class DivInput(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -332,13 +348,15 @@ class DivInputNativeInterface(BaseDiv): def __init__( self, *, - color: str, + color: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( color=color, + **kwargs, ) - color: str = Field( + color: typing.Union[Expr, str] = Field( format="color", description="Text input line color.", ) diff --git a/json-builder/python/pydivkit/div/div_input_mask.py b/json-builder/python/pydivkit/div/div_input_mask.py new file mode 100644 index 000000000..e9b194934 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_mask.py @@ -0,0 +1,18 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing +from typing import Union + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_currency_input_mask, div_fixed_length_input_mask + + +DivInputMask = Union[ + div_fixed_length_input_mask.DivFixedLengthInputMask, + div_currency_input_mask.DivCurrencyInputMask, +] diff --git a/json-builder/python/pydivkit/div/div_input_mask_base.py b/json-builder/python/pydivkit/div/div_input_mask_base.py new file mode 100644 index 000000000..4c4c043a8 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_mask_base.py @@ -0,0 +1,30 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +class DivInputMaskBase(BaseDiv): + + def __init__( + self, *, + raw_text_variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + raw_text_variable=raw_text_variable, + **kwargs, + ) + + raw_text_variable: typing.Union[Expr, str] = Field( + min_length=1, + description="Name of the variable to store the unprocessed value.", + ) + + +DivInputMaskBase.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_input_validator.py b/json-builder/python/pydivkit/div/div_input_validator.py new file mode 100644 index 000000000..93d0e0d28 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_validator.py @@ -0,0 +1,18 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing +from typing import Union + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_input_validator_expression, div_input_validator_regex + + +DivInputValidator = Union[ + div_input_validator_regex.DivInputValidatorRegex, + div_input_validator_expression.DivInputValidatorExpression, +] diff --git a/json-builder/python/pydivkit/div/div_input_validator_base.py b/json-builder/python/pydivkit/div/div_input_validator_base.py new file mode 100644 index 000000000..9fb300dbc --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_validator_base.py @@ -0,0 +1,44 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +class DivInputValidatorBase(BaseDiv): + + def __init__( + self, *, + allow_empty: typing.Optional[typing.Union[Expr, bool]] = None, + label_id: typing.Optional[typing.Union[Expr, str]] = None, + variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + allow_empty=allow_empty, + label_id=label_id, + variable=variable, + **kwargs, + ) + + allow_empty: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Whether an empty value is correct. By default, false.", + ) + label_id: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "ID of the text div containing the error message, which will " + "also be used foraccessibility." + ), + ) + variable: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description="Name of validation storage variable.", + ) + + +DivInputValidatorBase.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_input_validator_expression.py b/json-builder/python/pydivkit/div/div_input_validator_expression.py new file mode 100644 index 000000000..eee78178c --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_validator_expression.py @@ -0,0 +1,54 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +# Expression validator. +class DivInputValidatorExpression(BaseDiv): + + def __init__( + self, *, + type: str = "expression", + allow_empty: typing.Optional[typing.Union[Expr, bool]] = None, + condition: typing.Optional[typing.Union[Expr, str]] = None, + label_id: typing.Optional[typing.Union[Expr, str]] = None, + variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + allow_empty=allow_empty, + condition=condition, + label_id=label_id, + variable=variable, + **kwargs, + ) + + type: str = Field(default="expression") + allow_empty: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Whether an empty value is correct. By default, false.", + ) + condition: typing.Union[Expr, str] = Field( + min_length=1, + description="Expression condition for evaluating.", + ) + label_id: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "ID of the text div containing the error message, which will " + "also be used foraccessibility." + ), + ) + variable: typing.Union[Expr, str] = Field( + min_length=1, + description="Name of validation storage variable.", + ) + + +DivInputValidatorExpression.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_input_validator_regex.py b/json-builder/python/pydivkit/div/div_input_validator_regex.py new file mode 100644 index 000000000..d1d1a43dc --- /dev/null +++ b/json-builder/python/pydivkit/div/div_input_validator_regex.py @@ -0,0 +1,54 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +# Regex validator. +class DivInputValidatorRegex(BaseDiv): + + def __init__( + self, *, + type: str = "regex", + allow_empty: typing.Optional[typing.Union[Expr, bool]] = None, + label_id: typing.Optional[typing.Union[Expr, str]] = None, + pattern: typing.Optional[typing.Union[Expr, str]] = None, + variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + allow_empty=allow_empty, + label_id=label_id, + pattern=pattern, + variable=variable, + **kwargs, + ) + + type: str = Field(default="regex") + allow_empty: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Whether an empty value is correct. By default, false.", + ) + label_id: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "ID of the text div containing the error message, which will " + "also be used foraccessibility." + ), + ) + pattern: typing.Union[Expr, str] = Field( + min_length=1, + description="Regex pattern for matching.", + ) + variable: typing.Union[Expr, str] = Field( + min_length=1, + description="Name of validation storage variable.", + ) + + +DivInputValidatorRegex.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_line_style.py b/json-builder/python/pydivkit/div/div_line_style.py index f464621e1..7a0d4f2a6 100644 --- a/json-builder/python/pydivkit/div/div_line_style.py +++ b/json-builder/python/pydivkit/div/div_line_style.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivLineStyle(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_linear_gradient.py b/json-builder/python/pydivkit/div/div_linear_gradient.py index 0143ed86c..83e37f7ee 100644 --- a/json-builder/python/pydivkit/div/div_linear_gradient.py +++ b/json-builder/python/pydivkit/div/div_linear_gradient.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Linear gradient. @@ -14,25 +14,27 @@ class DivLinearGradient(BaseDiv): def __init__( self, *, - colors: typing.List[str], type: str = "gradient", - angle: typing.Optional[int] = None, + angle: typing.Optional[typing.Union[Expr, int]] = None, + colors: typing.Optional[typing.Sequence[typing.Union[Expr, str]]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, angle=angle, colors=colors, + **kwargs, ) type: str = Field(default="gradient") - angle: typing.Optional[int] = Field( + angle: typing.Optional[typing.Union[Expr, int]] = Field( description="Angle of gradient direction.", ) - colors: typing.List[str] = Field( + colors: typing.Sequence[typing.Union[Expr, str]] = Field( min_items=2, description=( - "Colors. Gradient points will be located at an equal " - "distance from each other." + "Colors. Gradient points are located at an equal distance " + "from each other." ), ) diff --git a/json-builder/python/pydivkit/div/div_match_parent_size.py b/json-builder/python/pydivkit/div/div_match_parent_size.py index 013158a29..a236739fe 100644 --- a/json-builder/python/pydivkit/div/div_match_parent_size.py +++ b/json-builder/python/pydivkit/div/div_match_parent_size.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Element size adjusts to a parent element. @@ -15,15 +15,17 @@ class DivMatchParentSize(BaseDiv): def __init__( self, *, type: str = "match_parent", - weight: typing.Optional[float] = None, + weight: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, weight=weight, + **kwargs, ) type: str = Field(default="match_parent") - weight: typing.Optional[float] = Field( + weight: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Weight when distributing free space between elements with " "the size type`match_parent` inside an element. If the " diff --git a/json-builder/python/pydivkit/div/div_neighbour_page_size.py b/json-builder/python/pydivkit/div/div_neighbour_page_size.py index ab881d61b..7c62d67fc 100644 --- a/json-builder/python/pydivkit/div/div_neighbour_page_size.py +++ b/json-builder/python/pydivkit/div/div_neighbour_page_size.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_fixed_size @@ -16,12 +16,14 @@ class DivNeighbourPageSize(BaseDiv): def __init__( self, *, - neighbour_page_width: div_fixed_size.DivFixedSize, type: str = "fixed", + neighbour_page_width: typing.Optional[div_fixed_size.DivFixedSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, neighbour_page_width=neighbour_page_width, + **kwargs, ) type: str = Field(default="fixed") diff --git a/json-builder/python/pydivkit/div/div_nine_patch_background.py b/json-builder/python/pydivkit/div/div_nine_patch_background.py index e507a3451..dc820dee6 100644 --- a/json-builder/python/pydivkit/div/div_nine_patch_background.py +++ b/json-builder/python/pydivkit/div/div_nine_patch_background.py @@ -6,38 +6,39 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_absolute_edge_insets -# Image in nine patch format. -# https://developer.android.com/studio/write/draw9patch. +# Image in 9-patch format (https://developer.android.com/studio/write/draw9patch). class DivNinePatchBackground(BaseDiv): def __init__( self, *, - image_url: str, - insets: div_absolute_edge_insets.DivAbsoluteEdgeInsets, type: str = "nine_patch_image", + image_url: typing.Optional[typing.Union[Expr, str]] = None, + insets: typing.Optional[div_absolute_edge_insets.DivAbsoluteEdgeInsets] = None, + **kwargs: typing.Any, ): super().__init__( type=type, image_url=image_url, insets=insets, + **kwargs, ) type: str = Field(default="nine_patch_image") - image_url: str = Field( + image_url: typing.Union[Expr, str] = Field( format="uri", description="Image URL.", ) insets: div_absolute_edge_insets.DivAbsoluteEdgeInsets = Field( description=( - "Margins that break images into parts, according to the " - "rule, are similar " - "toborder-image-slice.(https://developer.mozilla.org/en-US/d" - "ocs/Web/CSS/border-image-slice)" + "Margins that break the image into parts using the same " + "rules as the CSS`border-image-slice` " + "property(https://developer.mozilla.org/en-US/docs/Web/CSS/b" + "order-image-slice)." ), ) diff --git a/json-builder/python/pydivkit/div/div_page_size.py b/json-builder/python/pydivkit/div/div_page_size.py index 1b34918c5..3c55f0330 100644 --- a/json-builder/python/pydivkit/div/div_page_size.py +++ b/json-builder/python/pydivkit/div/div_page_size.py @@ -6,22 +6,24 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_percentage_size -# Percentage value of the page width. +# Page width (%). class DivPageSize(BaseDiv): def __init__( self, *, - page_width: div_percentage_size.DivPercentageSize, type: str = "percentage", + page_width: typing.Optional[div_percentage_size.DivPercentageSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, page_width=page_width, + **kwargs, ) type: str = Field(default="percentage") diff --git a/json-builder/python/pydivkit/div/div_pager.py b/json-builder/python/pydivkit/div/div_pager.py index ca9b02d92..a3d851001 100644 --- a/json-builder/python/pydivkit/div/div_pager.py +++ b/json-builder/python/pydivkit/div/div_pager.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_edge_insets, div_extension, - div_fixed_size, div_focus, div_pager_layout_mode, div_size, div_tooltip, - div_transform, div_transition_trigger, div_visibility, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_fixed_size, div_focus, div_pager_layout_mode, div_size, + div_tooltip, div_transform, div_transition_trigger, div_visibility, div_visibility_action, ) @@ -24,38 +24,40 @@ class DivPager(BaseDiv): def __init__( self, *, - items: typing.List[div.Div], - layout_mode: div_pager_layout_mode.DivPagerLayoutMode, type: str = "pager", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - default_item: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + default_item: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, item_spacing: typing.Optional[div_fixed_size.DivFixedSize] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, + layout_mode: typing.Optional[div_pager_layout_mode.DivPagerLayoutMode] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - orientation: typing.Optional[DivPagerOrientation] = None, + orientation: typing.Optional[typing.Union[Expr, DivPagerOrientation]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - restrict_parent_scroll: typing.Optional[bool] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -67,6 +69,7 @@ class DivPager(BaseDiv): border=border, column_span=column_span, default_item=default_item, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, @@ -90,49 +93,54 @@ class DivPager(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="pager") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - default_item: typing.Optional[int] = Field( + default_item: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Ordinal number of the pager element that will be opened by " "default." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -152,7 +160,7 @@ class DivPager(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " @@ -162,7 +170,7 @@ class DivPager(BaseDiv): item_spacing: typing.Optional[div_fixed_size.DivFixedSize] = Field( description="Spacing between elements.", ) - items: typing.List[div.Div] = Field( + items: typing.Sequence[div.Div] = Field( min_items=1, description=( "Pager elements. Page-by-page transition options can be " @@ -193,32 +201,32 @@ class DivPager(BaseDiv): margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - orientation: typing.Optional[DivPagerOrientation] = Field( + orientation: typing.Optional[typing.Union[Expr, DivPagerOrientation]] = Field( description="Pager orientation.", ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - restrict_parent_scroll: typing.Optional[bool] = Field( + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "If the parameter is enabled, the pager won\'t transmit the " "scroll gesture to theparent element." ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -228,9 +236,8 @@ class DivPager(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -254,14 +261,14 @@ class DivPager(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -270,7 +277,7 @@ class DivPager(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) diff --git a/json-builder/python/pydivkit/div/div_pager_layout_mode.py b/json-builder/python/pydivkit/div/div_pager_layout_mode.py index 3f029df38..a0d08e49a 100644 --- a/json-builder/python/pydivkit/div/div_pager_layout_mode.py +++ b/json-builder/python/pydivkit/div/div_pager_layout_mode.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_neighbour_page_size, div_page_size diff --git a/json-builder/python/pydivkit/div/div_patch.py b/json-builder/python/pydivkit/div/div_patch.py index 464f035a9..5825fa9e1 100644 --- a/json-builder/python/pydivkit/div/div_patch.py +++ b/json-builder/python/pydivkit/div/div_patch.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div @@ -16,19 +16,21 @@ class DivPatch(BaseDiv): def __init__( self, *, - changes: typing.List[DivPatchChange], - mode: typing.Optional[DivPatchMode] = None, + changes: typing.Optional[typing.Sequence[DivPatchChange]] = None, + mode: typing.Optional[typing.Union[Expr, DivPatchMode]] = None, + **kwargs: typing.Any, ): super().__init__( changes=changes, mode=mode, + **kwargs, ) - changes: typing.List[DivPatchChange] = Field( + changes: typing.Sequence[DivPatchChange] = Field( min_items=1, description="Element changes.", ) - mode: typing.Optional[DivPatchMode] = Field( + mode: typing.Optional[typing.Union[Expr, DivPatchMode]] = Field( description=( "Procedure for applying changes:`transactional` — if an " "error occurs duringapplication of at least one element, the " @@ -47,18 +49,20 @@ class DivPatchChange(BaseDiv): def __init__( self, *, - id: str, - items: typing.Optional[typing.List[div.Div]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + items: typing.Optional[typing.Sequence[div.Div]] = None, + **kwargs: typing.Any, ): super().__init__( id=id, items=items, + **kwargs, ) - id: str = Field( + id: typing.Union[Expr, str] = Field( description="ID of an element to be replaced or removed.", ) - items: typing.Optional[typing.List[div.Div]] = Field( + items: typing.Optional[typing.Sequence[div.Div]] = Field( min_items=1, description=( "Elements to be inserted. If the parameter isn\'t specified, " diff --git a/json-builder/python/pydivkit/div/div_percentage_size.py b/json-builder/python/pydivkit/div/div_percentage_size.py index a00458bbd..1ce247359 100644 --- a/json-builder/python/pydivkit/div/div_percentage_size.py +++ b/json-builder/python/pydivkit/div/div_percentage_size.py @@ -6,24 +6,26 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Percentage value of the element size. +# Element size (%). class DivPercentageSize(BaseDiv): def __init__( self, *, - value: float, type: str = "percentage", + value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default="percentage") - value: float = Field( + value: typing.Union[Expr, float] = Field( description="Element size value.", ) diff --git a/json-builder/python/pydivkit/div/div_pivot.py b/json-builder/python/pydivkit/div/div_pivot.py index 1dc4f4e44..91bdece67 100644 --- a/json-builder/python/pydivkit/div/div_pivot.py +++ b/json-builder/python/pydivkit/div/div_pivot.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_pivot_fixed, div_pivot_percentage diff --git a/json-builder/python/pydivkit/div/div_pivot_fixed.py b/json-builder/python/pydivkit/div/div_pivot_fixed.py index 5bdf1c1fb..20d38d668 100644 --- a/json-builder/python/pydivkit/div/div_pivot_fixed.py +++ b/json-builder/python/pydivkit/div/div_pivot_fixed.py @@ -6,36 +6,38 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit -# Value of the offset of the coordinates of the axis of rotation. +# Fixed coordinates of the rotation axis. class DivPivotFixed(BaseDiv): def __init__( self, *, type: str = "pivot-fixed", - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - value: typing.Optional[int] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, unit=unit, value=value, + **kwargs, ) type: str = Field(default="pivot-fixed") - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description=( - "Unit of size measurement. To learn more about units of size " - "measurement, see[Layout inside the " + "Measurement unit. To learn more about units of size " + "measurement, see [Layoutinside the " "card](../../layout.dita)." ), ) - value: typing.Optional[int] = Field( - description="Offset.", + value: typing.Optional[typing.Union[Expr, int]] = Field( + description="Coordinate value.", ) diff --git a/json-builder/python/pydivkit/div/div_pivot_percentage.py b/json-builder/python/pydivkit/div/div_pivot_percentage.py index 06e0e11a5..e6d11584d 100644 --- a/json-builder/python/pydivkit/div/div_pivot_percentage.py +++ b/json-builder/python/pydivkit/div/div_pivot_percentage.py @@ -6,26 +6,28 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Location of the coordinate of the axis of rotation as a percentage relative to -# the element. +# Location of the coordinate of the rotation axis as a percentage relative to the +# element size. class DivPivotPercentage(BaseDiv): def __init__( self, *, - value: float, type: str = "pivot-percentage", + value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default="pivot-percentage") - value: float = Field( - description="Location of the element.", + value: typing.Union[Expr, float] = Field( + description="Coordinate value as a percentage.", ) diff --git a/json-builder/python/pydivkit/div/div_point.py b/json-builder/python/pydivkit/div/div_point.py index 080b302a1..51534bec2 100644 --- a/json-builder/python/pydivkit/div/div_point.py +++ b/json-builder/python/pydivkit/div/div_point.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_dimension @@ -16,12 +16,14 @@ class DivPoint(BaseDiv): def __init__( self, *, - x: div_dimension.DivDimension, - y: div_dimension.DivDimension, + x: typing.Optional[div_dimension.DivDimension] = None, + y: typing.Optional[div_dimension.DivDimension] = None, + **kwargs: typing.Any, ): super().__init__( x=x, y=y, + **kwargs, ) x: div_dimension.DivDimension = Field( diff --git a/json-builder/python/pydivkit/div/div_radial_gradient.py b/json-builder/python/pydivkit/div/div_radial_gradient.py index 2eb181ea6..7ac6bb860 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_radial_gradient_center, div_radial_gradient_radius @@ -16,11 +16,12 @@ class DivRadialGradient(BaseDiv): def __init__( self, *, - colors: typing.List[str], type: str = "radial_gradient", center_x: typing.Optional[div_radial_gradient_center.DivRadialGradientCenter] = None, center_y: typing.Optional[div_radial_gradient_center.DivRadialGradientCenter] = None, + colors: typing.Optional[typing.Sequence[typing.Union[Expr, str]]] = None, radius: typing.Optional[div_radial_gradient_radius.DivRadialGradientRadius] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -28,6 +29,7 @@ class DivRadialGradient(BaseDiv): center_y=center_y, colors=colors, radius=radius, + **kwargs, ) type: str = Field(default="radial_gradient") @@ -40,14 +42,14 @@ class DivRadialGradient(BaseDiv): center_y: typing.Optional[div_radial_gradient_center.DivRadialGradientCenter] = Field( description=( "Shift of the central point of the gradient relative to the " - "upper edge along the Yaxis." + "top edge along the Yaxis." ), ) - colors: typing.List[str] = Field( + colors: typing.Sequence[typing.Union[Expr, str]] = Field( min_items=2, description=( - "Colors. Gradient points will be located at an equal " - "distance from each other." + "Colors. Gradient points are located at an equal distance " + "from each other." ), ) radius: typing.Optional[div_radial_gradient_radius.DivRadialGradientRadius] = Field( diff --git a/json-builder/python/pydivkit/div/div_radial_gradient_center.py b/json-builder/python/pydivkit/div/div_radial_gradient_center.py index fb357c440..2d8769a47 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient_center.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient_center.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_radial_gradient_fixed_center, div_radial_gradient_relative_center, diff --git a/json-builder/python/pydivkit/div/div_radial_gradient_fixed_center.py b/json-builder/python/pydivkit/div/div_radial_gradient_fixed_center.py index 8f6acfbd3..9e3fe3813 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient_fixed_center.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient_fixed_center.py @@ -6,36 +6,38 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit -# Fixed central point of the gradient. +# Fixed coordinates of the central point of the gradient. class DivRadialGradientFixedCenter(BaseDiv): def __init__( self, *, - value: int, type: str = "fixed", - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, unit=unit, value=value, + **kwargs, ) type: str = Field(default="fixed") - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description=( "Unit of measurement. To learn more about units of size " "measurement, see [Layoutinside the " "card](../../layout.dita)." ), ) - value: int = Field( - description="Shift value of the fixed central point of the gradient.", + value: typing.Union[Expr, int] = Field( + description="Coordinate value.", ) diff --git a/json-builder/python/pydivkit/div/div_radial_gradient_radius.py b/json-builder/python/pydivkit/div/div_radial_gradient_radius.py index a28a6fb1f..0f84b4740 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient_radius.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient_radius.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_fixed_size, div_radial_gradient_relative_radius diff --git a/json-builder/python/pydivkit/div/div_radial_gradient_relative_center.py b/json-builder/python/pydivkit/div/div_radial_gradient_relative_center.py index 0b79fd9f5..515a20646 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient_relative_center.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient_relative_center.py @@ -6,28 +6,27 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -# Relative central point of the gradient. +# Location of the central point of the gradient relative to the element borders. class DivRadialGradientRelativeCenter(BaseDiv): def __init__( self, *, - value: float, type: str = "relative", + value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default="relative") - value: float = Field( - description=( - "Shift value of the central relative point of the gradient " - "in the range `0..1`." - ), + value: typing.Union[Expr, float] = Field( + description="Coordinate value in the range \"0...1\".", ) diff --git a/json-builder/python/pydivkit/div/div_radial_gradient_relative_radius.py b/json-builder/python/pydivkit/div/div_radial_gradient_relative_radius.py index 23720f5bf..d48d7bed3 100644 --- a/json-builder/python/pydivkit/div/div_radial_gradient_relative_radius.py +++ b/json-builder/python/pydivkit/div/div_radial_gradient_relative_radius.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Relative radius of the gradient transition. @@ -14,17 +14,19 @@ class DivRadialGradientRelativeRadius(BaseDiv): def __init__( self, *, - value: DivRadialGradientRelativeRadiusValue, type: str = "relative", + value: typing.Optional[typing.Union[Expr, DivRadialGradientRelativeRadiusValue]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, value=value, + **kwargs, ) type: str = Field(default="relative") - value: DivRadialGradientRelativeRadiusValue = Field( - description="Type of relative radius of the gradient transition.", + value: typing.Union[Expr, DivRadialGradientRelativeRadiusValue] = Field( + description="Type of the relative radius of the gradient transition.", ) diff --git a/json-builder/python/pydivkit/div/div_rounded_rectangle_shape.py b/json-builder/python/pydivkit/div/div_rounded_rectangle_shape.py index 596598da1..0054cd3e6 100644 --- a/json-builder/python/pydivkit/div/div_rounded_rectangle_shape.py +++ b/json-builder/python/pydivkit/div/div_rounded_rectangle_shape.py @@ -6,9 +6,9 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field -from . import div_fixed_size +from . import div_fixed_size, div_stroke # A rectangle with rounded corners. @@ -17,18 +17,28 @@ class DivRoundedRectangleShape(BaseDiv): def __init__( self, *, type: str = "rounded_rectangle", + background_color: typing.Optional[typing.Union[Expr, str]] = None, corner_radius: typing.Optional[div_fixed_size.DivFixedSize] = None, item_height: typing.Optional[div_fixed_size.DivFixedSize] = None, item_width: typing.Optional[div_fixed_size.DivFixedSize] = None, + stroke: typing.Optional[div_stroke.DivStroke] = None, + **kwargs: typing.Any, ): super().__init__( type=type, + background_color=background_color, corner_radius=corner_radius, item_height=item_height, item_width=item_width, + stroke=stroke, + **kwargs, ) type: str = Field(default="rounded_rectangle") + background_color: typing.Optional[typing.Union[Expr, str]] = Field( + format="color", + description="Fill color.", + ) corner_radius: typing.Optional[div_fixed_size.DivFixedSize] = Field( description="Corner rounding radius.", ) @@ -38,6 +48,9 @@ class DivRoundedRectangleShape(BaseDiv): item_width: typing.Optional[div_fixed_size.DivFixedSize] = Field( description="Width.", ) + stroke: typing.Optional[div_stroke.DivStroke] = Field( + description="Stroke style.", + ) DivRoundedRectangleShape.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_scale_transition.py b/json-builder/python/pydivkit/div/div_scale_transition.py index 280cde7e1..29830a19b 100644 --- a/json-builder/python/pydivkit/div/div_scale_transition.py +++ b/json-builder/python/pydivkit/div/div_scale_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator @@ -17,12 +17,13 @@ class DivScaleTransition(BaseDiv): def __init__( self, *, type: str = "scale", - duration: typing.Optional[int] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - pivot_x: typing.Optional[float] = None, - pivot_y: typing.Optional[float] = None, - scale: typing.Optional[float] = None, - start_delay: typing.Optional[int] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + pivot_x: typing.Optional[typing.Union[Expr, float]] = None, + pivot_y: typing.Optional[typing.Union[Expr, float]] = None, + scale: typing.Optional[typing.Union[Expr, float]] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -32,34 +33,35 @@ class DivScaleTransition(BaseDiv): pivot_y=pivot_y, scale=scale, start_delay=start_delay, + **kwargs, ) type: str = Field(default="scale") - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description="Transition speed nature.", ) - pivot_x: typing.Optional[float] = Field( + pivot_x: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Relative coordinate `X` of the point that won\'t change its " "position in case ofscaling." ), ) - pivot_y: typing.Optional[float] = Field( + pivot_y: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Relative coordinate `Y` of the point that won\'t change its " "position in case ofscaling." ), ) - scale: typing.Optional[float] = Field( + scale: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Value of the scale from which the element starts appearing " "or at which itfinishes disappearing." ), ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) diff --git a/json-builder/python/pydivkit/div/div_select.py b/json-builder/python/pydivkit/div/div_select.py new file mode 100644 index 000000000..265eeef6c --- /dev/null +++ b/json-builder/python/pydivkit/div/div_select.py @@ -0,0 +1,332 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import ( + div_accessibility, div_action, div_alignment_horizontal, + div_alignment_vertical, div_appearance_transition, div_background, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_font_family, div_font_weight, div_size, + div_size_unit, div_tooltip, div_transform, div_transition_trigger, + div_visibility, div_visibility_action, +) + + +# List of options with only one to be selected. +class DivSelect(BaseDiv): + + def __init__( + self, *, + type: str = "select", + accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, + border: typing.Optional[div_border.DivBorder] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, + focus: typing.Optional[div_focus.DivFocus] = None, + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, + height: typing.Optional[div_size.DivSize] = None, + hint_color: typing.Optional[typing.Union[Expr, str]] = None, + hint_text: typing.Optional[typing.Union[Expr, str]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + letter_spacing: typing.Optional[typing.Union[Expr, float]] = None, + line_height: typing.Optional[typing.Union[Expr, int]] = None, + margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, + options: typing.Optional[typing.Sequence[DivSelectOption]] = None, + paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + text_color: typing.Optional[typing.Union[Expr, str]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, + transform: typing.Optional[div_transform.DivTransform] = None, + transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, + transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, + transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + value_variable: typing.Optional[typing.Union[Expr, str]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, + visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, + width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + accessibility=accessibility, + alignment_horizontal=alignment_horizontal, + alignment_vertical=alignment_vertical, + alpha=alpha, + background=background, + border=border, + column_span=column_span, + disappear_actions=disappear_actions, + extensions=extensions, + focus=focus, + font_family=font_family, + font_size=font_size, + font_size_unit=font_size_unit, + font_weight=font_weight, + height=height, + hint_color=hint_color, + hint_text=hint_text, + id=id, + letter_spacing=letter_spacing, + line_height=line_height, + margins=margins, + options=options, + paddings=paddings, + row_span=row_span, + selected_actions=selected_actions, + text_color=text_color, + tooltips=tooltips, + transform=transform, + transition_change=transition_change, + transition_in=transition_in, + transition_out=transition_out, + transition_triggers=transition_triggers, + value_variable=value_variable, + visibility=visibility, + visibility_action=visibility_action, + visibility_actions=visibility_actions, + width=width, + **kwargs, + ) + + type: str = Field(default="select") + accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( + description="Accessibility settings.", + ) + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( + description=( + "Horizontal alignment of an element inside the parent " + "element." + ), + ) + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( + description=( + "Vertical alignment of an element inside the parent element." + ), + ) + alpha: typing.Optional[typing.Union[Expr, float]] = Field( + description=( + "Sets transparency of the entire element: `0` — completely " + "transparent, `1` —opaque." + ), + ) + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( + min_items=1, + description="Element background. It can contain multiple layers.", + ) + border: typing.Optional[div_border.DivBorder] = Field( + description="Element stroke.", + ) + column_span: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Merges cells in a column of the [grid](div-grid.md) " + "element." + ), + ) + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( + min_items=1, + description=( + "Extensions for additional processing of an element. The " + "list of extensions isgiven in " + "[DivExtension](../../extensions.dita)." + ), + ) + focus: typing.Optional[div_focus.DivFocus] = Field( + description="Parameters when focusing on an element or losing focus.", + ) + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = Field( + description=( + "Font family:`text` — a standard text font;`display` — a " + "family of fonts with alarge font size." + ), + ) + font_size: typing.Optional[typing.Union[Expr, int]] = Field( + description="Font size.", + ) + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( + description=( + "Unit of measurement:`px` — a physical pixel.`dp` — a " + "logical pixel that doesn\'tdepend on screen density.`sp` — " + "a logical pixel that depends on the font size ona device. " + "Specify height in `sp`. Only available on Android." + ), + ) + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( + description="Style.", + ) + height: typing.Optional[div_size.DivSize] = Field( + description=( + "Element height. For Android: if there is text in this or in " + "a child element,specify height in `sp` to scale the element " + "together with the text. To learn moreabout units of size " + "measurement, see [Layout inside the " + "card](../../layout.dita)." + ), + ) + hint_color: typing.Optional[typing.Union[Expr, str]] = Field( + format="color", + description="Hint color.", + ) + hint_text: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description="Hint text.", + ) + id: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Element ID. It must be unique within the root element. It " + "is used as`accessibilityIdentifier` on iOS." + ), + ) + letter_spacing: typing.Optional[typing.Union[Expr, float]] = Field( + description="Spacing between characters.", + ) + line_height: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Line spacing of the text. Measured in units set in " + "`font_size_unit`." + ), + ) + margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( + description="External margins from the element stroke.", + ) + options: typing.Sequence[DivSelectOption] = Field( + min_items=1, + ) + paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( + description="Internal margins from the element stroke.", + ) + row_span: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Merges cells in a string of the [grid](div-grid.md) " + "element." + ), + ) + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description=( + "List of [actions](div-action.md) to be executed when " + "selecting an element in[pager](div-pager.md)." + ), + ) + text_color: typing.Optional[typing.Union[Expr, str]] = Field( + format="color", + description="Text color.", + ) + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( + min_items=1, + description=( + "Tooltips linked to an element. A tooltip can be shown " + "by`div-action://show_tooltip?id=`, hidden by " + "`div-action://hide_tooltip?id=` where`id` — tooltip id." + ), + ) + transform: typing.Optional[div_transform.DivTransform] = Field( + description=( + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." + ), + ) + transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( + description=( + "Change animation. It is played when the position or size of " + "an element changes inthe new layout." + ), + ) + transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = Field( + description=( + "Appearance animation. It is played when an element with a " + "new ID appears. Tolearn more about the concept of " + "transitions, see " + "[Animatedtransitions](../../interaction.dita#animation/tran" + "sition-animation)." + ), + ) + transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = Field( + description=( + "Disappearance animation. It is played when an element " + "disappears in the newlayout." + ), + ) + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( + min_items=1, + description=( + "Animation starting triggers. Default value: `[state_change, " + "visibility_change]`." + ), + ) + value_variable: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "Name of the variable that stores the selected option value " + "(`value`)." + ), + ) + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( + description="Element visibility.", + ) + visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( + description=( + "Tracking visibility of a single element. Not used if the " + "`visibility_actions`parameter is set." + ), + ) + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( + min_items=1, + description="Actions when an element appears on the screen.", + ) + width: typing.Optional[div_size.DivSize] = Field( + description="Element width.", + ) + + +# List option. +class DivSelectOption(BaseDiv): + + def __init__( + self, *, + text: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + text=text, + value=value, + **kwargs, + ) + + text: typing.Optional[typing.Union[Expr, str]] = Field( + description=( + "Text description of the option displayed in the list. If " + "not set, `value` is usedinstead." + ), + ) + value: typing.Union[Expr, str] = Field( + description="Value matching the option.", + ) + + +DivSelectOption.update_forward_refs() + + +DivSelect.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_separator.py b/json-builder/python/pydivkit/div/div_separator.py index 20d7eeca2..d2eab8eaf 100644 --- a/json-builder/python/pydivkit/div/div_separator.py +++ b/json-builder/python/pydivkit/div/div_separator.py @@ -6,14 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, - div_background, div_border, div_change_transition, div_edge_insets, - div_extension, div_focus, div_size, div_tooltip, div_transform, - div_transition_trigger, div_visibility, div_visibility_action, + div_background, div_border, div_change_transition, div_disappear_action, + div_edge_insets, div_extension, div_focus, div_size, div_tooltip, + div_transform, div_transition_trigger, div_visibility, + div_visibility_action, ) @@ -26,34 +27,36 @@ class DivSeparator(BaseDiv): accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, delimiter_style: typing.Optional[DivSeparatorDelimiterStyle] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -68,6 +71,7 @@ class DivSeparator(BaseDiv): border=border, column_span=column_span, delimiter_style=delimiter_style, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, extensions=extensions, focus=focus, @@ -88,11 +92,12 @@ class DivSeparator(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="separator") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -102,39 +107,39 @@ class DivSeparator(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." @@ -143,11 +148,15 @@ class DivSeparator(BaseDiv): delimiter_style: typing.Optional[DivSeparatorDelimiterStyle] = Field( description="Separator display settings.", ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -167,18 +176,18 @@ class DivSeparator(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( @@ -187,20 +196,20 @@ class DivSeparator(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -210,9 +219,8 @@ class DivSeparator(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -236,14 +244,14 @@ class DivSeparator(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -252,7 +260,7 @@ class DivSeparator(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -266,15 +274,17 @@ class DivSeparatorDelimiterStyle(BaseDiv): def __init__( self, *, - color: typing.Optional[str] = None, - orientation: typing.Optional[DelimiterStyleOrientation] = None, + color: typing.Optional[typing.Union[Expr, str]] = None, + orientation: typing.Optional[typing.Union[Expr, DelimiterStyleOrientation]] = None, + **kwargs: typing.Any, ): super().__init__( color=color, orientation=orientation, + **kwargs, ) - color: typing.Optional[str] = Field( + color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description=( "Separator color. To prevent the separator from being " @@ -282,7 +292,7 @@ class DivSeparatorDelimiterStyle(BaseDiv): "example, `#00FFFFFF`." ), ) - orientation: typing.Optional[DelimiterStyleOrientation] = Field( + orientation: typing.Optional[typing.Union[Expr, DelimiterStyleOrientation]] = Field( description=( "Separator orientation:`vertical` — vertical;`horizontal` — " "horizontal.<" diff --git a/json-builder/python/pydivkit/div/div_shadow.py b/json-builder/python/pydivkit/div/div_shadow.py index 64a204eaa..08f2e7ad8 100644 --- a/json-builder/python/pydivkit/div/div_shadow.py +++ b/json-builder/python/pydivkit/div/div_shadow.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_point @@ -16,25 +16,27 @@ class DivShadow(BaseDiv): def __init__( self, *, - offset: div_point.DivPoint, - alpha: typing.Optional[float] = None, - blur: typing.Optional[int] = None, - color: typing.Optional[str] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + blur: typing.Optional[typing.Union[Expr, int]] = None, + color: typing.Optional[typing.Union[Expr, str]] = None, + offset: typing.Optional[div_point.DivPoint] = None, + **kwargs: typing.Any, ): super().__init__( alpha=alpha, blur=blur, color=color, offset=offset, + **kwargs, ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description="Shadow transparency.", ) - blur: typing.Optional[int] = Field( + blur: typing.Optional[typing.Union[Expr, int]] = Field( description="Blur intensity.", ) - color: typing.Optional[str] = Field( + color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Shadow color.", ) diff --git a/json-builder/python/pydivkit/div/div_shape.py b/json-builder/python/pydivkit/div/div_shape.py index 463b7ed4e..0192e9a21 100644 --- a/json-builder/python/pydivkit/div/div_shape.py +++ b/json-builder/python/pydivkit/div/div_shape.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_circle_shape, div_rounded_rectangle_shape diff --git a/json-builder/python/pydivkit/div/div_shape_drawable.py b/json-builder/python/pydivkit/div/div_shape_drawable.py index df06c12a8..65b738005 100644 --- a/json-builder/python/pydivkit/div/div_shape_drawable.py +++ b/json-builder/python/pydivkit/div/div_shape_drawable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_shape, div_stroke @@ -16,28 +16,30 @@ class DivShapeDrawable(BaseDiv): def __init__( self, *, - color: str, - shape: div_shape.DivShape, type: str = "shape_drawable", + color: typing.Optional[typing.Union[Expr, str]] = None, + shape: typing.Optional[div_shape.DivShape] = None, stroke: typing.Optional[div_stroke.DivStroke] = None, + **kwargs: typing.Any, ): super().__init__( type=type, color=color, shape=shape, stroke=stroke, + **kwargs, ) type: str = Field(default="shape_drawable") - color: str = Field( + color: typing.Union[Expr, str] = Field( format="color", - description="Fill color.", + description="Fill color. @deprecated", ) shape: div_shape.DivShape = Field( description="Shape.", ) stroke: typing.Optional[div_stroke.DivStroke] = Field( - description="Stroke style.", + description="Stroke style. @deprecated", ) diff --git a/json-builder/python/pydivkit/div/div_size.py b/json-builder/python/pydivkit/div/div_size.py index f72eb1059..4cd0abf27 100644 --- a/json-builder/python/pydivkit/div/div_size.py +++ b/json-builder/python/pydivkit/div/div_size.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_fixed_size, div_match_parent_size, div_wrap_content_size diff --git a/json-builder/python/pydivkit/div/div_size_unit.py b/json-builder/python/pydivkit/div/div_size_unit.py index dd9fae133..a1f8576a2 100644 --- a/json-builder/python/pydivkit/div/div_size_unit.py +++ b/json-builder/python/pydivkit/div/div_size_unit.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivSizeUnit(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_slide_transition.py b/json-builder/python/pydivkit/div/div_slide_transition.py index c9386a664..98dea7b03 100644 --- a/json-builder/python/pydivkit/div/div_slide_transition.py +++ b/json-builder/python/pydivkit/div/div_slide_transition.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator, div_dimension @@ -18,10 +18,11 @@ class DivSlideTransition(BaseDiv): self, *, type: str = "slide", distance: typing.Optional[div_dimension.DivDimension] = None, - duration: typing.Optional[int] = None, - edge: typing.Optional[DivSlideTransitionEdge] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - start_delay: typing.Optional[int] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + edge: typing.Optional[typing.Union[Expr, DivSlideTransitionEdge]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -30,6 +31,7 @@ class DivSlideTransition(BaseDiv): edge=edge, interpolator=interpolator, start_delay=start_delay, + **kwargs, ) type: str = Field(default="slide") @@ -41,20 +43,20 @@ class DivSlideTransition(BaseDiv): "parent element is used." ), ) - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - edge: typing.Optional[DivSlideTransitionEdge] = Field( + edge: typing.Optional[typing.Union[Expr, DivSlideTransitionEdge]] = Field( description=( "Edge of a parent element for one of the action types:where " "the element will movefrom when appearing;where the element " "will move to when disappearing." ), ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description="Transition speed nature.", ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) diff --git a/json-builder/python/pydivkit/div/div_slider.py b/json-builder/python/pydivkit/div/div_slider.py index 11f6e0f18..edd80580e 100644 --- a/json-builder/python/pydivkit/div/div_slider.py +++ b/json-builder/python/pydivkit/div/div_slider.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_drawable, div_edge_insets, - div_extension, div_focus, div_font_weight, div_point, div_size, - div_size_unit, div_tooltip, div_transform, div_transition_trigger, + div_border, div_change_transition, div_disappear_action, div_drawable, + div_edge_insets, div_extension, div_focus, div_font_weight, div_point, + div_size, div_size_unit, div_tooltip, div_transform, div_transition_trigger, div_visibility, div_visibility_action, ) @@ -23,45 +23,47 @@ class DivSlider(BaseDiv): def __init__( self, *, - thumb_style: div_drawable.DivDrawable, - track_active_style: div_drawable.DivDrawable, - track_inactive_style: div_drawable.DivDrawable, type: str = "slider", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - max_value: typing.Optional[int] = None, - min_value: typing.Optional[int] = None, + max_value: typing.Optional[typing.Union[Expr, int]] = None, + min_value: typing.Optional[typing.Union[Expr, int]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, secondary_value_accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, thumb_secondary_style: typing.Optional[div_drawable.DivDrawable] = None, thumb_secondary_text_style: typing.Optional[DivSliderTextStyle] = None, - thumb_secondary_value_variable: typing.Optional[str] = None, + thumb_secondary_value_variable: typing.Optional[typing.Union[Expr, str]] = None, + thumb_style: typing.Optional[div_drawable.DivDrawable] = None, thumb_text_style: typing.Optional[DivSliderTextStyle] = None, - thumb_value_variable: typing.Optional[str] = None, + thumb_value_variable: typing.Optional[typing.Union[Expr, str]] = None, tick_mark_active_style: typing.Optional[div_drawable.DivDrawable] = None, tick_mark_inactive_style: typing.Optional[div_drawable.DivDrawable] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, + track_active_style: typing.Optional[div_drawable.DivDrawable] = None, + track_inactive_style: typing.Optional[div_drawable.DivDrawable] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -72,6 +74,7 @@ class DivSlider(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, extensions=extensions, focus=focus, height=height, @@ -103,43 +106,48 @@ class DivSlider(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="slider") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -159,7 +167,7 @@ class DivSlider(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " @@ -169,25 +177,25 @@ class DivSlider(BaseDiv): margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - max_value: typing.Optional[int] = Field( + max_value: typing.Optional[typing.Union[Expr, int]] = Field( description="Maximum value. It must be greater than the minimum value.", ) - min_value: typing.Optional[int] = Field( + min_value: typing.Optional[typing.Union[Expr, int]] = Field( description="Minimum value.", ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) secondary_value_accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for the secondary thumb.", + description="Accessibility settings for the second pointer.", ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " @@ -200,11 +208,11 @@ class DivSlider(BaseDiv): thumb_secondary_text_style: typing.Optional[DivSliderTextStyle] = Field( description="Text style in the second pointer.", ) - thumb_secondary_value_variable: typing.Optional[str] = Field( + thumb_secondary_value_variable: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( - "Name of the variable to store the current value of the " - "secondary thumb." + "Name of the variable to store the second pointer\'s current " + "value." ), ) thumb_style: div_drawable.DivDrawable = Field( @@ -213,9 +221,11 @@ class DivSlider(BaseDiv): thumb_text_style: typing.Optional[DivSliderTextStyle] = Field( description="Text style in the first pointer.", ) - thumb_value_variable: typing.Optional[str] = Field( + thumb_value_variable: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, - description="Name of the variable to store the current thumb value.", + description=( + "Name of the variable to store the pointer\'s current value." + ), ) tick_mark_active_style: typing.Optional[div_drawable.DivDrawable] = Field( description="Style of active serifs.", @@ -223,7 +233,7 @@ class DivSlider(BaseDiv): tick_mark_inactive_style: typing.Optional[div_drawable.DivDrawable] = Field( description="Style of inactive serifs.", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -239,9 +249,8 @@ class DivSlider(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -265,14 +274,14 @@ class DivSlider(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -281,7 +290,7 @@ class DivSlider(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -294,11 +303,12 @@ class DivSliderTextStyle(BaseDiv): def __init__( self, *, - font_size: int, - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, offset: typing.Optional[div_point.DivPoint] = None, - text_color: typing.Optional[str] = None, + text_color: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( font_size=font_size, @@ -306,20 +316,21 @@ class DivSliderTextStyle(BaseDiv): font_weight=font_weight, offset=offset, text_color=text_color, + **kwargs, ) - font_size: int = Field( + font_size: typing.Union[Expr, int] = Field( description="Font size.", ) - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( ) - font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Style.", ) offset: typing.Optional[div_point.DivPoint] = Field( description="Shift relative to the center.", ) - text_color: typing.Optional[str] = Field( + text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Text color.", ) diff --git a/json-builder/python/pydivkit/div/div_solid_background.py b/json-builder/python/pydivkit/div/div_solid_background.py index f6cd10754..f3983a041 100644 --- a/json-builder/python/pydivkit/div/div_solid_background.py +++ b/json-builder/python/pydivkit/div/div_solid_background.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Solid background color. @@ -14,16 +14,18 @@ class DivSolidBackground(BaseDiv): def __init__( self, *, - color: str, type: str = "solid", + color: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, color=color, + **kwargs, ) type: str = Field(default="solid") - color: str = Field( + color: typing.Union[Expr, str] = Field( format="color", description="Color.", ) diff --git a/json-builder/python/pydivkit/div/div_state.py b/json-builder/python/pydivkit/div/div_state.py index ebba99831..510ea22cd 100644 --- a/json-builder/python/pydivkit/div/div_state.py +++ b/json-builder/python/pydivkit/div/div_state.py @@ -6,15 +6,15 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, - div_background, div_border, div_change_transition, div_edge_insets, - div_extension, div_focus, div_size, div_tooltip, div_transform, - div_transition_selector, div_transition_trigger, div_visibility, - div_visibility_action, + div_background, div_border, div_change_transition, div_disappear_action, + div_edge_insets, div_extension, div_focus, div_size, div_tooltip, + div_transform, div_transition_selector, div_transition_trigger, + div_visibility, div_visibility_action, ) @@ -23,36 +23,38 @@ class DivState(BaseDiv): def __init__( self, *, - states: typing.List[DivStateState], type: str = "state", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - default_state_id: typing.Optional[str] = None, - div_id: typing.Optional[str] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + default_state_id: typing.Optional[typing.Union[Expr, str]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + div_id: typing.Optional[typing.Union[Expr, str]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + states: typing.Optional[typing.Sequence[DivStateState]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, - transition_animation_selector: typing.Optional[div_transition_selector.DivTransitionSelector] = None, + transition_animation_selector: typing.Optional[typing.Union[Expr, div_transition_selector.DivTransitionSelector]] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -64,6 +66,7 @@ class DivState(BaseDiv): border=border, column_span=column_span, default_state_id=default_state_id, + disappear_actions=disappear_actions, div_id=div_id, extensions=extensions, focus=focus, @@ -85,56 +88,61 @@ class DivState(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="state") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - default_state_id: typing.Optional[str] = Field( + default_state_id: typing.Optional[typing.Union[Expr, str]] = Field( description=( "ID of the status that will be set by default. If the " "parameter isnt set, thefirst state of the `states` will be " "set." ), ) - div_id: typing.Optional[str] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + div_id: typing.Optional[typing.Union[Expr, str]] = Field( description=( "ID of an element to search in the hierarchy. The ID must be " "unique at onehierarchy level. @deprecated" ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -154,7 +162,7 @@ class DivState(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " @@ -167,20 +175,20 @@ class DivState(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - states: typing.List[DivStateState] = Field( + states: typing.Sequence[DivStateState] = Field( min_items=1, description=( "States. Each element can have a few states with a different " @@ -189,7 +197,7 @@ class DivState(BaseDiv): "the[action](div-action.md) element." ), ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -199,12 +207,11 @@ class DivState(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) - transition_animation_selector: typing.Optional[div_transition_selector.DivTransitionSelector] = Field( + transition_animation_selector: typing.Optional[typing.Union[Expr, div_transition_selector.DivTransitionSelector]] = Field( description=( "It determines which events trigger transition animations. " "@deprecated" @@ -231,14 +238,14 @@ class DivState(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -247,7 +254,7 @@ class DivState(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -260,11 +267,12 @@ class DivStateState(BaseDiv): def __init__( self, *, - state_id: str, animation_in: typing.Optional[div_animation.DivAnimation] = None, animation_out: typing.Optional[div_animation.DivAnimation] = None, div: typing.Optional[div.Div] = None, - swipe_out_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + state_id: typing.Optional[typing.Union[Expr, str]] = None, + swipe_out_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + **kwargs: typing.Any, ): super().__init__( animation_in=animation_in, @@ -272,6 +280,7 @@ class DivStateState(BaseDiv): div=div, state_id=state_id, swipe_out_actions=swipe_out_actions, + **kwargs, ) animation_in: typing.Optional[div_animation.DivAnimation] = Field( @@ -292,10 +301,10 @@ class DivStateState(BaseDiv): "displayed." ), ) - state_id: str = Field( + state_id: typing.Union[Expr, str] = Field( description="State ID. It must be unique at one hierarchy level.", ) - swipe_out_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + swipe_out_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Actions when swiping the state horizontally. @deprecated", ) diff --git a/json-builder/python/pydivkit/div/div_stretch_indicator_item_placement.py b/json-builder/python/pydivkit/div/div_stretch_indicator_item_placement.py new file mode 100644 index 000000000..97d894b34 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_stretch_indicator_item_placement.py @@ -0,0 +1,40 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_fixed_size + + +# Element size adjusts to a parent element. +class DivStretchIndicatorItemPlacement(BaseDiv): + + def __init__( + self, *, + type: str = "stretch", + item_spacing: typing.Optional[div_fixed_size.DivFixedSize] = None, + max_visible_items: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + item_spacing=item_spacing, + max_visible_items=max_visible_items, + **kwargs, + ) + + type: str = Field(default="stretch") + item_spacing: typing.Optional[div_fixed_size.DivFixedSize] = Field( + description="Spacing between indicator centers.", + ) + max_visible_items: typing.Optional[typing.Union[Expr, int]] = Field( + description="Maximum number of visible indicators.", + ) + + +DivStretchIndicatorItemPlacement.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_stroke.py b/json-builder/python/pydivkit/div/div_stroke.py index 272699c8c..2c7bdd4b5 100644 --- a/json-builder/python/pydivkit/div/div_stroke.py +++ b/json-builder/python/pydivkit/div/div_stroke.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_size_unit @@ -16,23 +16,25 @@ class DivStroke(BaseDiv): def __init__( self, *, - color: str, - unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - width: typing.Optional[int] = None, + color: typing.Optional[typing.Union[Expr, str]] = None, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + width: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( color=color, unit=unit, width=width, + **kwargs, ) - color: str = Field( + color: typing.Union[Expr, str] = Field( format="color", description="Stroke color.", ) - unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( ) - width: typing.Optional[int] = Field( + width: typing.Optional[typing.Union[Expr, int]] = Field( description="Stroke width.", ) diff --git a/json-builder/python/pydivkit/div/div_tabs.py b/json-builder/python/pydivkit/div/div_tabs.py index 63a740987..c0570dd6b 100644 --- a/json-builder/python/pydivkit/div/div_tabs.py +++ b/json-builder/python/pydivkit/div/div_tabs.py @@ -6,14 +6,14 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div, div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_appearance_transition, div_background, - div_border, div_change_transition, div_corners_radius, div_edge_insets, - div_extension, div_focus, div_font_family, div_font_weight, div_size, - div_size_unit, div_tooltip, div_transform, div_transition_trigger, + div_border, div_change_transition, div_corners_radius, div_disappear_action, + div_edge_insets, div_extension, div_focus, div_font_family, div_font_weight, + div_size, div_size_unit, div_tooltip, div_transform, div_transition_trigger, div_visibility, div_visibility_action, ) @@ -24,42 +24,44 @@ class DivTabs(BaseDiv): def __init__( self, *, - items: typing.List[DivTabsItem], type: str = "tabs", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - dynamic_height: typing.Optional[bool] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + dynamic_height: typing.Optional[typing.Union[Expr, bool]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, - has_separator: typing.Optional[bool] = None, + has_separator: typing.Optional[typing.Union[Expr, bool]] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + items: typing.Optional[typing.Sequence[DivTabsItem]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - restrict_parent_scroll: typing.Optional[bool] = None, - row_span: typing.Optional[int] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - selected_tab: typing.Optional[int] = None, - separator_color: typing.Optional[str] = None, + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + selected_tab: typing.Optional[typing.Union[Expr, int]] = None, + separator_color: typing.Optional[typing.Union[Expr, str]] = None, separator_paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - switch_tabs_by_content_swipe_enabled: typing.Optional[bool] = None, + switch_tabs_by_content_swipe_enabled: typing.Optional[typing.Union[Expr, bool]] = None, tab_title_style: typing.Optional[DivTabsTabTitleStyle] = None, title_paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -70,6 +72,7 @@ class DivTabs(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, dynamic_height=dynamic_height, extensions=extensions, focus=focus, @@ -98,49 +101,54 @@ class DivTabs(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="tabs") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - dynamic_height: typing.Optional[bool] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + dynamic_height: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "Updating height when changing the active element. In the " "browser, the value isalways `true`." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -151,7 +159,7 @@ class DivTabs(BaseDiv): focus: typing.Optional[div_focus.DivFocus] = Field( description="Parameters when focusing on an element or losing focus.", ) - has_separator: typing.Optional[bool] = Field( + has_separator: typing.Optional[typing.Union[Expr, bool]] = Field( description="A separating line between tabs and contents.", ) height: typing.Optional[div_size.DivSize] = Field( @@ -163,14 +171,14 @@ class DivTabs(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - items: typing.List[DivTabsItem] = Field( + items: typing.Sequence[DivTabsItem] = Field( min_items=1, description=( "Tabs. Transition between tabs can be " @@ -195,29 +203,29 @@ class DivTabs(BaseDiv): paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - restrict_parent_scroll: typing.Optional[bool] = Field( + restrict_parent_scroll: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "If the parameter is enabled, tabs won\'t transmit the " "scroll gesture to the parentelement." ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - selected_tab: typing.Optional[int] = Field( + selected_tab: typing.Optional[typing.Union[Expr, int]] = Field( description="Ordinal number of the tab that will be opened by default.", ) - separator_color: typing.Optional[str] = Field( + separator_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Separator color.", ) @@ -227,7 +235,7 @@ class DivTabs(BaseDiv): "`has_separator = false`." ), ) - switch_tabs_by_content_swipe_enabled: typing.Optional[bool] = Field( + switch_tabs_by_content_swipe_enabled: typing.Optional[typing.Union[Expr, bool]] = Field( description="Switching tabs by scrolling through the contents.", ) tab_title_style: typing.Optional[DivTabsTabTitleStyle] = Field( @@ -236,7 +244,7 @@ class DivTabs(BaseDiv): title_paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Indents in the tab name.", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -246,9 +254,8 @@ class DivTabs(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -272,14 +279,14 @@ class DivTabs(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -288,7 +295,7 @@ class DivTabs(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -302,20 +309,22 @@ class DivTabsItem(BaseDiv): def __init__( self, *, - div: div.Div, - title: str, + div: typing.Optional[div.Div] = None, + title: typing.Optional[typing.Union[Expr, str]] = None, title_click_action: typing.Optional[div_action.DivAction] = None, + **kwargs: typing.Any, ): super().__init__( div=div, title=title, title_click_action=title_click_action, + **kwargs, ) div: div.Div = Field( description="Tab contents.", ) - title: str = Field( + title: typing.Union[Expr, str] = Field( min_length=1, description="Tab title.", ) @@ -332,24 +341,25 @@ class DivTabsTabTitleStyle(BaseDiv): def __init__( self, *, - active_background_color: typing.Optional[str] = None, - active_font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, - active_text_color: typing.Optional[str] = None, - animation_duration: typing.Optional[int] = None, - animation_type: typing.Optional[TabTitleStyleAnimationType] = None, - corner_radius: typing.Optional[int] = None, + active_background_color: typing.Optional[typing.Union[Expr, str]] = None, + active_font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, + active_text_color: typing.Optional[typing.Union[Expr, str]] = None, + animation_duration: typing.Optional[typing.Union[Expr, int]] = None, + animation_type: typing.Optional[typing.Union[Expr, TabTitleStyleAnimationType]] = None, + corner_radius: typing.Optional[typing.Union[Expr, int]] = None, corners_radius: typing.Optional[div_corners_radius.DivCornersRadius] = None, - font_family: typing.Optional[div_font_family.DivFontFamily] = None, - font_size: typing.Optional[int] = None, - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, - inactive_background_color: typing.Optional[str] = None, - inactive_font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, - inactive_text_color: typing.Optional[str] = None, - item_spacing: typing.Optional[int] = None, - letter_spacing: typing.Optional[float] = None, - line_height: typing.Optional[int] = None, + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, + inactive_background_color: typing.Optional[typing.Union[Expr, str]] = None, + inactive_font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, + inactive_text_color: typing.Optional[typing.Union[Expr, str]] = None, + item_spacing: typing.Optional[typing.Union[Expr, int]] = None, + letter_spacing: typing.Optional[typing.Union[Expr, float]] = None, + line_height: typing.Optional[typing.Union[Expr, int]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, + **kwargs: typing.Any, ): super().__init__( active_background_color=active_background_color, @@ -370,26 +380,27 @@ class DivTabsTabTitleStyle(BaseDiv): letter_spacing=letter_spacing, line_height=line_height, paddings=paddings, + **kwargs, ) - active_background_color: typing.Optional[str] = Field( + active_background_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Background color of the active tab title.", ) - active_font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + active_font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Active tab title style.", ) - active_text_color: typing.Optional[str] = Field( + active_text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Color of the active tab title text.", ) - animation_duration: typing.Optional[int] = Field( + animation_duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Duration of active title change animation.", ) - animation_type: typing.Optional[TabTitleStyleAnimationType] = Field( + animation_type: typing.Optional[typing.Union[Expr, TabTitleStyleAnimationType]] = Field( description="Active title change animation.", ) - corner_radius: typing.Optional[int] = Field( + corner_radius: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Title corner rounding radius. If the parameter isn\'t " "specified, the rounding ismaximum (half of the smallest " @@ -402,46 +413,43 @@ class DivTabsTabTitleStyle(BaseDiv): "are replaced by`corner_radius`." ), ) - font_family: typing.Optional[div_font_family.DivFontFamily] = Field( + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = Field( description=( "Font family:`text` — a standard text font;`display` — a " "family of fonts with alarge font size." ), ) - font_size: typing.Optional[int] = Field( + font_size: typing.Optional[typing.Union[Expr, int]] = Field( description="Title font size.", ) - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description="Units of title font size measurement.", ) - font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description=( "Style. Use `active_font_weight` and `inactive_font_weight` " "instead. @deprecated" ), ) - inactive_background_color: typing.Optional[str] = Field( + inactive_background_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Background color of the inactive tab title.", ) - inactive_font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + inactive_font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Inactive tab title style.", ) - inactive_text_color: typing.Optional[str] = Field( + inactive_text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Color of the inactive tab title text.", ) - item_spacing: typing.Optional[int] = Field( + item_spacing: typing.Optional[typing.Union[Expr, int]] = Field( description="Spacing between neighbouring tab titles.", ) - letter_spacing: typing.Optional[float] = Field( + letter_spacing: typing.Optional[typing.Union[Expr, float]] = Field( description="Spacing between title characters.", ) - line_height: typing.Optional[int] = Field( - description=( - "Line spacing of the text range. The count is taken from the " - "font baseline." - ), + line_height: typing.Optional[typing.Union[Expr, int]] = Field( + description="Line spacing of the text.", ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Indents around the tab title.", diff --git a/json-builder/python/pydivkit/div/div_text.py b/json-builder/python/pydivkit/div/div_text.py index 7b5c09272..d673d4fba 100644 --- a/json-builder/python/pydivkit/div/div_text.py +++ b/json-builder/python/pydivkit/div/div_text.py @@ -6,16 +6,17 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( div_accessibility, div_action, div_alignment_horizontal, div_alignment_vertical, div_animation, div_appearance_transition, div_background, div_blend_mode, div_border, div_change_transition, - div_edge_insets, div_extension, div_fixed_size, div_focus, div_font_family, - div_font_weight, div_line_style, div_size, div_size_unit, div_text_gradient, - div_tooltip, div_transform, div_transition_trigger, div_visibility, - div_visibility_action, + div_disappear_action, div_edge_insets, div_extension, div_fixed_size, + div_focus, div_font_family, div_font_weight, div_line_style, div_size, + div_size_unit, div_text_gradient, div_text_range_background, + div_text_range_border, div_tooltip, div_transform, div_transition_trigger, + div_visibility, div_visibility_action, ) @@ -24,59 +25,61 @@ class DivText(BaseDiv): def __init__( self, *, - text: str, type: str = "text", accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, action: typing.Optional[div_action.DivAction] = None, action_animation: typing.Optional[div_animation.DivAnimation] = None, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - alpha: typing.Optional[float] = None, - auto_ellipsize: typing.Optional[bool] = None, - background: typing.Optional[typing.List[div_background.DivBackground]] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + auto_ellipsize: typing.Optional[typing.Union[Expr, bool]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, border: typing.Optional[div_border.DivBorder] = None, - column_span: typing.Optional[int] = None, - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, ellipsis: typing.Optional[DivTextEllipsis] = None, - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, focus: typing.Optional[div_focus.DivFocus] = None, - focused_text_color: typing.Optional[str] = None, - font_family: typing.Optional[div_font_family.DivFontFamily] = None, - font_size: typing.Optional[int] = None, - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, + focused_text_color: typing.Optional[typing.Union[Expr, str]] = None, + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, height: typing.Optional[div_size.DivSize] = None, - id: typing.Optional[str] = None, - images: typing.Optional[typing.List[DivTextImage]] = None, - letter_spacing: typing.Optional[float] = None, - line_height: typing.Optional[int] = None, - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + images: typing.Optional[typing.Sequence[DivTextImage]] = None, + letter_spacing: typing.Optional[typing.Union[Expr, float]] = None, + line_height: typing.Optional[typing.Union[Expr, int]] = None, + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - max_lines: typing.Optional[int] = None, - min_hidden_lines: typing.Optional[int] = None, + max_lines: typing.Optional[typing.Union[Expr, int]] = None, + min_hidden_lines: typing.Optional[typing.Union[Expr, int]] = None, paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, - ranges: typing.Optional[typing.List[DivTextRange]] = None, - row_span: typing.Optional[int] = None, - selectable: typing.Optional[bool] = None, - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = None, - strike: typing.Optional[div_line_style.DivLineStyle] = None, - text_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = None, - text_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = None, - text_color: typing.Optional[str] = None, + ranges: typing.Optional[typing.Sequence[DivTextRange]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selectable: typing.Optional[typing.Union[Expr, bool]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + strike: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = None, + text: typing.Optional[typing.Union[Expr, str]] = None, + text_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + text_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + text_color: typing.Optional[typing.Union[Expr, str]] = None, text_gradient: typing.Optional[div_text_gradient.DivTextGradient] = None, - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, transform: typing.Optional[div_transform.DivTransform] = None, transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = None, - truncate: typing.Optional[DivTextTruncate] = None, - underline: typing.Optional[div_line_style.DivLineStyle] = None, - visibility: typing.Optional[div_visibility.DivVisibility] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + truncate: typing.Optional[typing.Union[Expr, DivTextTruncate]] = None, + underline: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, @@ -91,6 +94,7 @@ class DivText(BaseDiv): background=background, border=border, column_span=column_span, + disappear_actions=disappear_actions, doubletap_actions=doubletap_actions, ellipsis=ellipsis, extensions=extensions, @@ -132,11 +136,12 @@ class DivText(BaseDiv): visibility_action=visibility_action, visibility_actions=visibility_actions, width=width, + **kwargs, ) type: str = Field(default="text") accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( - description="Accessibility for disabled people.", + description="Accessibility settings.", ) action: typing.Optional[div_action.DivAction] = Field( description=( @@ -146,48 +151,52 @@ class DivText(BaseDiv): ) action_animation: typing.Optional[div_animation.DivAnimation] = Field( description=( - "Action animation. Web supports `fade`, `scale` and `set` " - "only." + "Click animation. The web only supports the following " + "values: `fade`, `scale`,`native`, `no_animation` and `set`." ), ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Multiple actions when clicking on an element.", ) - alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description=( "Horizontal alignment of an element inside the parent " "element." ), ) - alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description=( "Vertical alignment of an element inside the parent element." ), ) - alpha: typing.Optional[float] = Field( + alpha: typing.Optional[typing.Union[Expr, float]] = Field( description=( "Sets transparency of the entire element: `0` — completely " "transparent, `1` —opaque." ), ) - auto_ellipsize: typing.Optional[bool] = Field( + auto_ellipsize: typing.Optional[typing.Union[Expr, bool]] = Field( description="Automatic text cropping to fit the container size.", ) - background: typing.Optional[typing.List[div_background.DivBackground]] = Field( + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( min_items=1, description="Element background. It can contain multiple layers.", ) border: typing.Optional[div_border.DivBorder] = Field( description="Element stroke.", ) - column_span: typing.Optional[int] = Field( + column_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a column of the [grid](div-grid.md) " "element." ), ) - doubletap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + doubletap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when double-clicking on an element.", ) @@ -197,7 +206,7 @@ class DivText(BaseDiv): "exceeds the limit on thenumber of lines." ), ) - extensions: typing.Optional[typing.List[div_extension.DivExtension]] = Field( + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( min_items=1, description=( "Extensions for additional processing of an element. The " @@ -208,22 +217,22 @@ class DivText(BaseDiv): focus: typing.Optional[div_focus.DivFocus] = Field( description="Parameters when focusing on an element or losing focus.", ) - focused_text_color: typing.Optional[str] = Field( + focused_text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Text color when focusing on the element.", ) - font_family: typing.Optional[div_font_family.DivFontFamily] = Field( + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = Field( description=( "Font family:`text` — a standard text font;`display` — a " "family of fonts with alarge font size." ), ) - font_size: typing.Optional[int] = Field( + font_size: typing.Optional[typing.Union[Expr, int]] = Field( description="Font size.", ) - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( ) - font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Style.", ) height: typing.Optional[div_size.DivSize] = Field( @@ -235,85 +244,82 @@ class DivText(BaseDiv): "card](../../layout.dita)." ), ) - id: typing.Optional[str] = Field( + id: typing.Optional[typing.Union[Expr, str]] = Field( min_length=1, description=( "Element ID. It must be unique within the root element. It " "is used as`accessibilityIdentifier` on iOS." ), ) - images: typing.Optional[typing.List[DivTextImage]] = Field( + images: typing.Optional[typing.Sequence[DivTextImage]] = Field( min_items=1, description="Images embedded in text.", ) - letter_spacing: typing.Optional[float] = Field( + letter_spacing: typing.Optional[typing.Union[Expr, float]] = Field( description="Spacing between characters.", ) - line_height: typing.Optional[int] = Field( - description=( - "Line spacing of the text range. The count is taken from the " - "font baseline." - ), + line_height: typing.Optional[typing.Union[Expr, int]] = Field( + description="Line spacing of the text.", ) - longtap_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + longtap_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( - "Action when long-clicking on an element. Doesn\'t work on " - "the devices w/o touchgestures." + "Action when long-clicking an element. Doesn\'t work on " + "devices that don\'t supporttouch gestures." ), ) margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="External margins from the element stroke.", ) - max_lines: typing.Optional[int] = Field( + max_lines: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Maximum number of lines not to be cropped when breaking the " "limits." ), ) - min_hidden_lines: typing.Optional[int] = Field( + min_hidden_lines: typing.Optional[typing.Union[Expr, int]] = Field( description="Minimum number of cropped lines when breaking the limits.", ) paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( description="Internal margins from the element stroke.", ) - ranges: typing.Optional[typing.List[DivTextRange]] = Field( + ranges: typing.Optional[typing.Sequence[DivTextRange]] = Field( min_items=1, description=( "A character range in which additional style parameters can " "be set. Defined bymandatory `start` and `end` fields." ), ) - row_span: typing.Optional[int] = Field( + row_span: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Merges cells in a string of the [grid](div-grid.md) " "element." ), ) - selectable: typing.Optional[bool] = Field( - description="Selecting and copying text.", + selectable: typing.Optional[typing.Union[Expr, bool]] = Field( + description="Ability to select and copy text.", ) - selected_actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description=( "List of [actions](div-action.md) to be executed when " "selecting an element in[pager](div-pager.md)." ), ) - strike: typing.Optional[div_line_style.DivLineStyle] = Field( + strike: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = Field( description="Strikethrough.", ) - text: str = Field( + text: typing.Union[Expr, str] = Field( min_length=1, description="Text.", ) - text_alignment_horizontal: typing.Optional[div_alignment_horizontal.DivAlignmentHorizontal] = Field( + text_alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( description="Horizontal text alignment.", ) - text_alignment_vertical: typing.Optional[div_alignment_vertical.DivAlignmentVertical] = Field( + text_alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( description="Vertical text alignment.", ) - text_color: typing.Optional[str] = Field( + text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description=( "Text color. Not used if the `text_gradient` parameter is " @@ -323,7 +329,7 @@ class DivText(BaseDiv): text_gradient: typing.Optional[div_text_gradient.DivTextGradient] = Field( description="Gradient text color.", ) - tooltips: typing.Optional[typing.List[div_tooltip.DivTooltip]] = Field( + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( min_items=1, description=( "Tooltips linked to an element. A tooltip can be shown " @@ -333,9 +339,8 @@ class DivText(BaseDiv): ) transform: typing.Optional[div_transform.DivTransform] = Field( description=( - "Transformation of the element. Applies the passed transform " - "to the element. Thecontent that does not fit into the " - "original view will be cut off." + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." ), ) transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( @@ -359,20 +364,20 @@ class DivText(BaseDiv): "disappears in the newlayout." ), ) - transition_triggers: typing.Optional[typing.List[div_transition_trigger.DivTransitionTrigger]] = Field( + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( min_items=1, description=( "Animation starting triggers. Default value: `[state_change, " "visibility_change]`." ), ) - truncate: typing.Optional[DivTextTruncate] = Field( + truncate: typing.Optional[typing.Union[Expr, DivTextTruncate]] = Field( description="Text cropping method. Use `ellipsis` instead. @deprecated", ) - underline: typing.Optional[div_line_style.DivLineStyle] = Field( + underline: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = Field( description="Underline.", ) - visibility: typing.Optional[div_visibility.DivVisibility] = Field( + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( description="Element visibility.", ) visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( @@ -381,7 +386,7 @@ class DivText(BaseDiv): "`visibility_actions`parameter is set." ), ) - visibility_actions: typing.Optional[typing.List[div_visibility_action.DivVisibilityAction]] = Field( + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( min_items=1, description="Actions when an element appears on the screen.", ) @@ -403,34 +408,36 @@ class DivTextEllipsis(BaseDiv): def __init__( self, *, - text: str, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - images: typing.Optional[typing.List[DivTextImage]] = None, - ranges: typing.Optional[typing.List[DivTextRange]] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + images: typing.Optional[typing.Sequence[DivTextImage]] = None, + ranges: typing.Optional[typing.Sequence[DivTextRange]] = None, + text: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( actions=actions, images=images, ranges=ranges, text=text, + **kwargs, ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Actions when clicking on a crop marker.", ) - images: typing.Optional[typing.List[DivTextImage]] = Field( + images: typing.Optional[typing.Sequence[DivTextImage]] = Field( min_items=1, description="Images embedded in a crop marker.", ) - ranges: typing.Optional[typing.List[DivTextRange]] = Field( + ranges: typing.Optional[typing.Sequence[DivTextRange]] = Field( min_items=1, description=( "Character ranges inside a crop marker with different text " "styles." ), ) - text: str = Field( + text: typing.Union[Expr, str] = Field( min_length=1, description="Marker text.", ) @@ -444,12 +451,13 @@ class DivTextImage(BaseDiv): def __init__( self, *, - start: int, - url: str, height: typing.Optional[div_fixed_size.DivFixedSize] = None, - tint_color: typing.Optional[str] = None, - tint_mode: typing.Optional[div_blend_mode.DivBlendMode] = None, + start: typing.Optional[typing.Union[Expr, int]] = None, + tint_color: typing.Optional[typing.Union[Expr, str]] = None, + tint_mode: typing.Optional[typing.Union[Expr, div_blend_mode.DivBlendMode]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, width: typing.Optional[div_fixed_size.DivFixedSize] = None, + **kwargs: typing.Any, ): super().__init__( height=height, @@ -458,26 +466,27 @@ class DivTextImage(BaseDiv): tint_mode=tint_mode, url=url, width=width, + **kwargs, ) height: typing.Optional[div_fixed_size.DivFixedSize] = Field( description="Image height.", ) - start: int = Field( + start: typing.Union[Expr, int] = Field( description=( "A symbol to insert prior to an image. To insert an image at " "the end of the text,specify the number of the last " "character plus one." ), ) - tint_color: typing.Optional[str] = Field( + tint_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="New color of a contour image.", ) - tint_mode: typing.Optional[div_blend_mode.DivBlendMode] = Field( - description="The blend mode of color specified in tint_color.", + tint_mode: typing.Optional[typing.Union[Expr, div_blend_mode.DivBlendMode]] = Field( + description="Blend mode of the color specified in `tint_color`.", ) - url: str = Field( + url: typing.Union[Expr, str] = Field( format="uri", description="Image URL.", ) @@ -494,22 +503,27 @@ class DivTextRange(BaseDiv): def __init__( self, *, - end: int, - start: int, - actions: typing.Optional[typing.List[div_action.DivAction]] = None, - font_family: typing.Optional[div_font_family.DivFontFamily] = None, - font_size: typing.Optional[int] = None, - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = None, - font_weight: typing.Optional[div_font_weight.DivFontWeight] = None, - letter_spacing: typing.Optional[float] = None, - line_height: typing.Optional[int] = None, - strike: typing.Optional[div_line_style.DivLineStyle] = None, - text_color: typing.Optional[str] = None, - top_offset: typing.Optional[int] = None, - underline: typing.Optional[div_line_style.DivLineStyle] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + background: typing.Optional[div_text_range_background.DivTextRangeBackground] = None, + border: typing.Optional[div_text_range_border.DivTextRangeBorder] = None, + end: typing.Optional[typing.Union[Expr, int]] = None, + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = None, + font_size: typing.Optional[typing.Union[Expr, int]] = None, + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = None, + letter_spacing: typing.Optional[typing.Union[Expr, float]] = None, + line_height: typing.Optional[typing.Union[Expr, int]] = None, + start: typing.Optional[typing.Union[Expr, int]] = None, + strike: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = None, + text_color: typing.Optional[typing.Union[Expr, str]] = None, + top_offset: typing.Optional[typing.Union[Expr, int]] = None, + underline: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = None, + **kwargs: typing.Any, ): super().__init__( actions=actions, + background=background, + border=border, end=end, font_family=font_family, font_size=font_size, @@ -522,28 +536,35 @@ class DivTextRange(BaseDiv): text_color=text_color, top_offset=top_offset, underline=underline, + **kwargs, ) - actions: typing.Optional[typing.List[div_action.DivAction]] = Field( + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( min_items=1, description="Action when clicking on text.", ) - end: int = Field( + background: typing.Optional[div_text_range_background.DivTextRangeBackground] = Field( + description="Character range background.", + ) + border: typing.Optional[div_text_range_border.DivTextRangeBorder] = Field( + description="Character range border.", + ) + end: typing.Union[Expr, int] = Field( description=( "Ordinal number of the last character to be included in the " "range." ), ) - font_family: typing.Optional[div_font_family.DivFontFamily] = Field( + font_family: typing.Optional[typing.Union[Expr, div_font_family.DivFontFamily]] = Field( description=( "Font family:`text` — a standard text font;`display` — a " "family of fonts with alarge font size." ), ) - font_size: typing.Optional[int] = Field( + font_size: typing.Optional[typing.Union[Expr, int]] = Field( description="Font size.", ) - font_size_unit: typing.Optional[div_size_unit.DivSizeUnit] = Field( + font_size_unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( description=( "Unit of measurement:`px` — a physical pixel.`dp` — a " "logical pixel that doesn\'tdepend on screen density.`sp` — " @@ -551,39 +572,38 @@ class DivTextRange(BaseDiv): "Specify height in `sp`. Only available on Android." ), ) - font_weight: typing.Optional[div_font_weight.DivFontWeight] = Field( + font_weight: typing.Optional[typing.Union[Expr, div_font_weight.DivFontWeight]] = Field( description="Style.", ) - letter_spacing: typing.Optional[float] = Field( + letter_spacing: typing.Optional[typing.Union[Expr, float]] = Field( description="Spacing between characters.", ) - line_height: typing.Optional[int] = Field( + line_height: typing.Optional[typing.Union[Expr, int]] = Field( description=( - "Line spacing of the text range. The count is taken from the " - "font baseline.Measured in units specified in " + "Line spacing of the text. Units specified in " "`font_size_unit`." ), ) - start: int = Field( + start: typing.Union[Expr, int] = Field( description=( "Ordinal number of a character which the range begins from. " "The first characterhas a number `0`." ), ) - strike: typing.Optional[div_line_style.DivLineStyle] = Field( + strike: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = Field( description="Strikethrough.", ) - text_color: typing.Optional[str] = Field( + text_color: typing.Optional[typing.Union[Expr, str]] = Field( format="color", description="Text color.", ) - top_offset: typing.Optional[int] = Field( + top_offset: typing.Optional[typing.Union[Expr, int]] = Field( description=( - "The top margin of the text range. Measured in units " - "specified in`font_size_unit`." + "Top margin of the character range. Units specified in " + "`font_size_unit`." ), ) - underline: typing.Optional[div_line_style.DivLineStyle] = Field( + underline: typing.Optional[typing.Union[Expr, div_line_style.DivLineStyle]] = Field( description="Underline.", ) diff --git a/json-builder/python/pydivkit/div/div_text_gradient.py b/json-builder/python/pydivkit/div/div_text_gradient.py index d8942daca..7811b135b 100644 --- a/json-builder/python/pydivkit/div/div_text_gradient.py +++ b/json-builder/python/pydivkit/div/div_text_gradient.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_linear_gradient, div_radial_gradient diff --git a/json-builder/python/pydivkit/div/div_text_range_background.py b/json-builder/python/pydivkit/div/div_text_range_background.py new file mode 100644 index 000000000..60e25581a --- /dev/null +++ b/json-builder/python/pydivkit/div/div_text_range_background.py @@ -0,0 +1,17 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing +from typing import Union + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_solid_background + + +DivTextRangeBackground = Union[ + div_solid_background.DivSolidBackground, +] diff --git a/json-builder/python/pydivkit/div/div_text_range_border.py b/json-builder/python/pydivkit/div/div_text_range_border.py new file mode 100644 index 000000000..6ea8c302c --- /dev/null +++ b/json-builder/python/pydivkit/div/div_text_range_border.py @@ -0,0 +1,40 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_stroke + + +# Character range border. +class DivTextRangeBorder(BaseDiv): + + def __init__( + self, *, + corner_radius: typing.Optional[typing.Union[Expr, int]] = None, + stroke: typing.Optional[div_stroke.DivStroke] = None, + **kwargs: typing.Any, + ): + super().__init__( + corner_radius=corner_radius, + stroke=stroke, + **kwargs, + ) + + corner_radius: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "One radius of element and stroke corner rounding. Has a " + "lower priority than`corners_radius`." + ), + ) + stroke: typing.Optional[div_stroke.DivStroke] = Field( + description="Stroke style.", + ) + + +DivTextRangeBorder.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_timer.py b/json-builder/python/pydivkit/div/div_timer.py new file mode 100644 index 000000000..0105505d9 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_timer.py @@ -0,0 +1,81 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_action + + +# Timer. +class DivTimer(BaseDiv): + + def __init__( + self, *, + duration: typing.Optional[typing.Union[Expr, int]] = None, + end_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + tick_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tick_interval: typing.Optional[typing.Union[Expr, int]] = None, + value_variable: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + duration=duration, + end_actions=end_actions, + id=id, + tick_actions=tick_actions, + tick_interval=tick_interval, + value_variable=value_variable, + **kwargs, + ) + + duration: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Timer duration in milliseconds. If the parameter is `0` or " + "not specified, thetimer runs indefinitely (until the timer " + "stop event occurs)." + ), + ) + end_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description=( + "Actions performed when the timer ends: when the timer has " + "counted to the`duration` value or the " + "`div-action://timer?action=stop&id=` command has " + "beenreceived." + ), + ) + id: typing.Union[Expr, str] = Field( + min_length=1, + description=( + "Timer ID. Must be unique. Used when calling actions for the " + "selected timer, forexample: start, stop." + ), + ) + tick_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description="Actions that are performed on each count of the timer.", + ) + tick_interval: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Duration of time intervals in milliseconds between counts. " + "If the parameter isnot specified, the timer counts down " + "from `0` to `duration` without calling`tick_actions`." + ), + ) + value_variable: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Name of the variable where the current timer value is " + "stored. Updated on eachcount or when the timer commands are " + "called (start, stop, and so on), except thecancel command." + ), + ) + + +DivTimer.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_tooltip.py b/json-builder/python/pydivkit/div/div_tooltip.py index 8bf4df32a..e69b5b265 100644 --- a/json-builder/python/pydivkit/div/div_tooltip.py +++ b/json-builder/python/pydivkit/div/div_tooltip.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div, div_animation, div_point @@ -16,13 +16,14 @@ class DivTooltip(BaseDiv): def __init__( self, *, - div: div.Div, - id: str, - position: DivTooltipPosition, animation_in: typing.Optional[div_animation.DivAnimation] = None, animation_out: typing.Optional[div_animation.DivAnimation] = None, - duration: typing.Optional[int] = None, + div: typing.Optional[div.Div] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, offset: typing.Optional[div_point.DivPoint] = None, + position: typing.Optional[typing.Union[Expr, DivTooltipPosition]] = None, + **kwargs: typing.Any, ): super().__init__( animation_in=animation_in, @@ -32,6 +33,7 @@ class DivTooltip(BaseDiv): id=id, offset=offset, position=position, + **kwargs, ) animation_in: typing.Optional[div_animation.DivAnimation] = Field( @@ -54,14 +56,14 @@ class DivTooltip(BaseDiv): "tooltips inside anelement, they won\'t be shown." ), ) - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Duration of the tooltip visibility in milliseconds. When " "the value is set to `0`,the tooltip will be visible until " "the user hides it." ), ) - id: str = Field( + id: typing.Union[Expr, str] = Field( min_length=1, description=( "Tooltip ID. It is used to avoid re-showing. It must be " @@ -71,7 +73,7 @@ class DivTooltip(BaseDiv): offset: typing.Optional[div_point.DivPoint] = Field( description="Shift relative to an anchor point.", ) - position: DivTooltipPosition = Field( + position: typing.Union[Expr, DivTooltipPosition] = Field( description=( "The position of a tooltip relative to an element it belongs " "to." diff --git a/json-builder/python/pydivkit/div/div_transform.py b/json-builder/python/pydivkit/div/div_transform.py index b5d8ddeb8..5f3f3025b 100644 --- a/json-builder/python/pydivkit/div/div_transform.py +++ b/json-builder/python/pydivkit/div/div_transform.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_pivot @@ -18,24 +18,26 @@ class DivTransform(BaseDiv): self, *, pivot_x: typing.Optional[div_pivot.DivPivot] = None, pivot_y: typing.Optional[div_pivot.DivPivot] = None, - rotation: typing.Optional[float] = None, + rotation: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( pivot_x=pivot_x, pivot_y=pivot_y, rotation=rotation, + **kwargs, ) pivot_x: typing.Optional[div_pivot.DivPivot] = Field( - description="The X coordinate of the rotation axis.", + description="X coordinate of the rotation axis.", ) pivot_y: typing.Optional[div_pivot.DivPivot] = Field( - description="The Y coordinate of the rotation axis.", + description="Y coordinate of the rotation axis.", ) - rotation: typing.Optional[float] = Field( + rotation: typing.Optional[typing.Union[Expr, float]] = Field( description=( - "The number of degrees by which the element must be rotated. " - "A positive valuedescribes a clockwise rotation." + "Degrees of the element rotation. Positive values used for " + "clockwise rotation." ), ) diff --git a/json-builder/python/pydivkit/div/div_transition_base.py b/json-builder/python/pydivkit/div/div_transition_base.py index bc1e28acf..0a84bb582 100644 --- a/json-builder/python/pydivkit/div/div_transition_base.py +++ b/json-builder/python/pydivkit/div/div_transition_base.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_animation_interpolator @@ -15,23 +15,25 @@ class DivTransitionBase(BaseDiv): def __init__( self, *, - duration: typing.Optional[int] = None, - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = None, - start_delay: typing.Optional[int] = None, + duration: typing.Optional[typing.Union[Expr, int]] = None, + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = None, + start_delay: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( duration=duration, interpolator=interpolator, start_delay=start_delay, + **kwargs, ) - duration: typing.Optional[int] = Field( + duration: typing.Optional[typing.Union[Expr, int]] = Field( description="Animation duration in milliseconds.", ) - interpolator: typing.Optional[div_animation_interpolator.DivAnimationInterpolator] = Field( + interpolator: typing.Optional[typing.Union[Expr, div_animation_interpolator.DivAnimationInterpolator]] = Field( description="Transition speed nature.", ) - start_delay: typing.Optional[int] = Field( + start_delay: typing.Optional[typing.Union[Expr, int]] = Field( description="Delay in milliseconds before animation starts.", ) diff --git a/json-builder/python/pydivkit/div/div_transition_selector.py b/json-builder/python/pydivkit/div/div_transition_selector.py index 6ef3b88e2..5b9a2fa51 100644 --- a/json-builder/python/pydivkit/div/div_transition_selector.py +++ b/json-builder/python/pydivkit/div/div_transition_selector.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivTransitionSelector(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_transition_trigger.py b/json-builder/python/pydivkit/div/div_transition_trigger.py index b531a6fb5..08daad406 100644 --- a/json-builder/python/pydivkit/div/div_transition_trigger.py +++ b/json-builder/python/pydivkit/div/div_transition_trigger.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivTransitionTrigger(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_trigger.py b/json-builder/python/pydivkit/div/div_trigger.py index f10707e43..b53db2e99 100644 --- a/json-builder/python/pydivkit/div/div_trigger.py +++ b/json-builder/python/pydivkit/div/div_trigger.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_action @@ -16,27 +16,29 @@ class DivTrigger(BaseDiv): def __init__( self, *, - actions: typing.List[div_action.DivAction], - condition: bool, - mode: typing.Optional[DivTriggerMode] = None, + actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + condition: typing.Optional[typing.Union[Expr, bool]] = None, + mode: typing.Optional[typing.Union[Expr, DivTriggerMode]] = None, + **kwargs: typing.Any, ): super().__init__( actions=actions, condition=condition, mode=mode, + **kwargs, ) - actions: typing.List[div_action.DivAction] = Field( + actions: typing.Sequence[div_action.DivAction] = Field( min_items=1, description="Action when a trigger is activated.", ) - condition: bool = Field( + condition: typing.Union[Expr, bool] = Field( description=( "Condition for activating a trigger. For example, `liked && " "subscribed`." ), ) - mode: typing.Optional[DivTriggerMode] = Field( + mode: typing.Optional[typing.Union[Expr, DivTriggerMode]] = Field( description=( "Trigger activation mode:`on_condition` — a trigger is " "activated when thecondition changes from `false` to " diff --git a/json-builder/python/pydivkit/div/div_variable.py b/json-builder/python/pydivkit/div/div_variable.py index 571e7ec4b..23f75bf60 100644 --- a/json-builder/python/pydivkit/div/div_variable.py +++ b/json-builder/python/pydivkit/div/div_variable.py @@ -7,7 +7,7 @@ import enum import typing from typing import Union -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import ( boolean_variable, color_variable, integer_variable, number_variable, diff --git a/json-builder/python/pydivkit/div/div_video.py b/json-builder/python/pydivkit/div/div_video.py new file mode 100644 index 000000000..886b451b1 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_video.py @@ -0,0 +1,310 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + +from . import ( + div_accessibility, div_action, div_alignment_horizontal, + div_alignment_vertical, div_appearance_transition, div_background, + div_border, div_change_transition, div_disappear_action, div_edge_insets, + div_extension, div_focus, div_size, div_tooltip, div_transform, + div_transition_trigger, div_video_source, div_visibility, + div_visibility_action, +) + + +# Video. +class DivVideo(BaseDiv): + + def __init__( + self, *, + type: str = "video", + accessibility: typing.Optional[div_accessibility.DivAccessibility] = None, + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = None, + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = None, + alpha: typing.Optional[typing.Union[Expr, float]] = None, + autostart: typing.Optional[typing.Union[Expr, bool]] = None, + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = None, + border: typing.Optional[div_border.DivBorder] = None, + buffering_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + column_span: typing.Optional[typing.Union[Expr, int]] = None, + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = None, + elapsed_time_variable: typing.Optional[typing.Union[Expr, str]] = None, + end_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = None, + fatal_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + focus: typing.Optional[div_focus.DivFocus] = None, + height: typing.Optional[div_size.DivSize] = None, + id: typing.Optional[typing.Union[Expr, str]] = None, + margins: typing.Optional[div_edge_insets.DivEdgeInsets] = None, + muted: typing.Optional[typing.Union[Expr, bool]] = None, + paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = None, + pause_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + player_settings_payload: typing.Optional[typing.Dict[str, typing.Any]] = None, + preview: typing.Optional[typing.Union[Expr, str]] = None, + repeatable: typing.Optional[typing.Union[Expr, bool]] = None, + resume_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + row_span: typing.Optional[typing.Union[Expr, int]] = None, + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = None, + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = None, + transform: typing.Optional[div_transform.DivTransform] = None, + transition_change: typing.Optional[div_change_transition.DivChangeTransition] = None, + transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, + transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = None, + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = None, + video_sources: typing.Optional[typing.Sequence[div_video_source.DivVideoSource]] = None, + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = None, + visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = None, + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = None, + width: typing.Optional[div_size.DivSize] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + accessibility=accessibility, + alignment_horizontal=alignment_horizontal, + alignment_vertical=alignment_vertical, + alpha=alpha, + autostart=autostart, + background=background, + border=border, + buffering_actions=buffering_actions, + column_span=column_span, + disappear_actions=disappear_actions, + elapsed_time_variable=elapsed_time_variable, + end_actions=end_actions, + extensions=extensions, + fatal_actions=fatal_actions, + focus=focus, + height=height, + id=id, + margins=margins, + muted=muted, + paddings=paddings, + pause_actions=pause_actions, + player_settings_payload=player_settings_payload, + preview=preview, + repeatable=repeatable, + resume_actions=resume_actions, + row_span=row_span, + selected_actions=selected_actions, + tooltips=tooltips, + transform=transform, + transition_change=transition_change, + transition_in=transition_in, + transition_out=transition_out, + transition_triggers=transition_triggers, + video_sources=video_sources, + visibility=visibility, + visibility_action=visibility_action, + visibility_actions=visibility_actions, + width=width, + **kwargs, + ) + + type: str = Field(default="video") + accessibility: typing.Optional[div_accessibility.DivAccessibility] = Field( + description="Accessibility settings.", + ) + alignment_horizontal: typing.Optional[typing.Union[Expr, div_alignment_horizontal.DivAlignmentHorizontal]] = Field( + description=( + "Horizontal alignment of an element inside the parent " + "element." + ), + ) + alignment_vertical: typing.Optional[typing.Union[Expr, div_alignment_vertical.DivAlignmentVertical]] = Field( + description=( + "Vertical alignment of an element inside the parent element." + ), + ) + alpha: typing.Optional[typing.Union[Expr, float]] = Field( + description=( + "Sets transparency of the entire element: `0` — completely " + "transparent, `1` —opaque." + ), + ) + autostart: typing.Optional[typing.Union[Expr, bool]] = Field( + description=( + "This option turns on automatic video playback. On the web, " + "the video starts ifmuted playback is turned on." + ), + ) + background: typing.Optional[typing.Sequence[div_background.DivBackground]] = Field( + min_items=1, + description="Element background. It can contain multiple layers.", + ) + border: typing.Optional[div_border.DivBorder] = Field( + description="Element stroke.", + ) + buffering_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description="Actions performed during video loading.", + ) + column_span: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Merges cells in a column of the [grid](div-grid.md) " + "element." + ), + ) + disappear_actions: typing.Optional[typing.Sequence[div_disappear_action.DivDisappearAction]] = Field( + min_items=1, + description="Actions when an element disappears from the screen.", + ) + elapsed_time_variable: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Time interval from the video beginning to the current " + "position in milliseconds." + ), + ) + end_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description="Actions performed after the video ends.", + ) + extensions: typing.Optional[typing.Sequence[div_extension.DivExtension]] = Field( + min_items=1, + description=( + "Extensions for additional processing of an element. The " + "list of extensions isgiven in " + "[DivExtension](../../extensions.dita)." + ), + ) + fatal_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description=( + "Actions that are performed when it is impossible to " + "continue playback due to anerror in the player." + ), + ) + focus: typing.Optional[div_focus.DivFocus] = Field( + description="Parameters when focusing on an element or losing focus.", + ) + height: typing.Optional[div_size.DivSize] = Field( + description=( + "Element height. For Android: if there is text in this or in " + "a child element,specify height in `sp` to scale the element " + "together with the text. To learn moreabout units of size " + "measurement, see [Layout inside the " + "card](../../layout.dita)." + ), + ) + id: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Element ID. It must be unique within the root element. It " + "is used as`accessibilityIdentifier` on iOS." + ), + ) + margins: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( + description="External margins from the element stroke.", + ) + muted: typing.Optional[typing.Union[Expr, bool]] = Field( + description="This option mutes video.", + ) + paddings: typing.Optional[div_edge_insets.DivEdgeInsets] = Field( + description="Internal margins from the element stroke.", + ) + pause_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description="Actions that are performed when a playback is paused.", + ) + player_settings_payload: typing.Optional[typing.Dict[str, typing.Any]] = Field( + description="Additional information that can be used in the player.", + ) + preview: typing.Optional[typing.Union[Expr, str]] = Field( + min_length=1, + description=( + "Video preview encoded in `base64`. Will be shown until the " + "video is ready toplay. `Data url` format: " + "`data:[;base64],`" + ), + ) + repeatable: typing.Optional[typing.Union[Expr, bool]] = Field( + description="This option turns on video repeat.", + ) + resume_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description="Actions performed when video playback resumes.", + ) + row_span: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Merges cells in a string of the [grid](div-grid.md) " + "element." + ), + ) + selected_actions: typing.Optional[typing.Sequence[div_action.DivAction]] = Field( + min_items=1, + description=( + "List of [actions](div-action.md) to be executed when " + "selecting an element in[pager](div-pager.md)." + ), + ) + tooltips: typing.Optional[typing.Sequence[div_tooltip.DivTooltip]] = Field( + min_items=1, + description=( + "Tooltips linked to an element. A tooltip can be shown " + "by`div-action://show_tooltip?id=`, hidden by " + "`div-action://hide_tooltip?id=` where`id` — tooltip id." + ), + ) + transform: typing.Optional[div_transform.DivTransform] = Field( + description=( + "Applies the passed transformation to the element. Content " + "that doesn\'t fit intothe original view area is cut off." + ), + ) + transition_change: typing.Optional[div_change_transition.DivChangeTransition] = Field( + description=( + "Change animation. It is played when the position or size of " + "an element changes inthe new layout." + ), + ) + transition_in: typing.Optional[div_appearance_transition.DivAppearanceTransition] = Field( + description=( + "Appearance animation. It is played when an element with a " + "new ID appears. Tolearn more about the concept of " + "transitions, see " + "[Animatedtransitions](../../interaction.dita#animation/tran" + "sition-animation)." + ), + ) + transition_out: typing.Optional[div_appearance_transition.DivAppearanceTransition] = Field( + description=( + "Disappearance animation. It is played when an element " + "disappears in the newlayout." + ), + ) + transition_triggers: typing.Optional[typing.Sequence[typing.Union[Expr, div_transition_trigger.DivTransitionTrigger]]] = Field( + min_items=1, + description=( + "Animation starting triggers. Default value: `[state_change, " + "visibility_change]`." + ), + ) + video_sources: typing.Sequence[div_video_source.DivVideoSource] = Field( + min_items=1, + ) + visibility: typing.Optional[typing.Union[Expr, div_visibility.DivVisibility]] = Field( + description="Element visibility.", + ) + visibility_action: typing.Optional[div_visibility_action.DivVisibilityAction] = Field( + description=( + "Tracking visibility of a single element. Not used if the " + "`visibility_actions`parameter is set." + ), + ) + visibility_actions: typing.Optional[typing.Sequence[div_visibility_action.DivVisibilityAction]] = Field( + min_items=1, + description="Actions when an element appears on the screen.", + ) + width: typing.Optional[div_size.DivSize] = Field( + description="Element width.", + ) + + +DivVideo.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_video_source.py b/json-builder/python/pydivkit/div/div_video_source.py new file mode 100644 index 000000000..eac650817 --- /dev/null +++ b/json-builder/python/pydivkit/div/div_video_source.py @@ -0,0 +1,96 @@ +# Generated code. Do not modify. +# flake8: noqa: F401, F405, F811 + +from __future__ import annotations + +import enum +import typing + +from pydivkit.core import BaseDiv, Expr, Field + + +class DivVideoSource(BaseDiv): + + def __init__( + self, *, + type: str = "video_source", + bitrate: typing.Optional[typing.Union[Expr, int]] = None, + mime_type: typing.Optional[typing.Union[Expr, str]] = None, + resolution: typing.Optional[DivVideoSourceResolution] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + bitrate=bitrate, + mime_type=mime_type, + resolution=resolution, + url=url, + **kwargs, + ) + + type: str = Field(default="video_source") + bitrate: typing.Optional[typing.Union[Expr, int]] = Field( + description=( + "Properties of the media file that determines the data " + "transfer rate in the videostream. Bitrate is measured in " + "kilobits per second (kbps) and indicates how muchdata is " + "transmitted per unit of time." + ), + ) + mime_type: typing.Union[Expr, str] = Field( + description=( + "The property defines the MIME type (Multipurpose Internet " + "Mail Extensions) forthe media file. A MIME type is a string " + "that indicates the type of file contentand is used to " + "determine the type of file and its correct processing." + ), + ) + resolution: typing.Optional[DivVideoSourceResolution] = Field( + description="Media file Resolution.", + ) + url: typing.Union[Expr, str] = Field( + format="uri", + description=( + "The property contains a link to a media file available for " + "playback or download." + ), + ) + + +# Media file Resolution. +class DivVideoSourceResolution(BaseDiv): + + def __init__( + self, *, + type: str = "resolution", + height: typing.Optional[typing.Union[Expr, int]] = None, + width: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, + ): + super().__init__( + type=type, + height=height, + width=width, + **kwargs, + ) + + type: str = Field(default="resolution") + height: typing.Union[Expr, int] = Field( + description=( + "Contains information about the resolution height of the " + "Media file." + ), + ) + width: typing.Union[Expr, int] = Field( + description=( + "Contains information about the resolution width of the " + "video file." + ), + ) + + +DivVideoSourceResolution.update_forward_refs() + + +DivVideoSource.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/div_visibility.py b/json-builder/python/pydivkit/div/div_visibility.py index 514af6739..8092e19b8 100644 --- a/json-builder/python/pydivkit/div/div_visibility.py +++ b/json-builder/python/pydivkit/div/div_visibility.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field class DivVisibility(str, enum.Enum): diff --git a/json-builder/python/pydivkit/div/div_visibility_action.py b/json-builder/python/pydivkit/div/div_visibility_action.py index f5dc39a08..7acfd09a7 100644 --- a/json-builder/python/pydivkit/div/div_visibility_action.py +++ b/json-builder/python/pydivkit/div/div_visibility_action.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field from . import div_download_callbacks @@ -16,14 +16,15 @@ class DivVisibilityAction(BaseDiv): def __init__( self, *, - log_id: str, download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = None, - log_limit: typing.Optional[int] = None, + log_id: typing.Optional[typing.Union[Expr, str]] = None, + log_limit: typing.Optional[typing.Union[Expr, int]] = None, payload: typing.Optional[typing.Dict[str, typing.Any]] = None, - referer: typing.Optional[str] = None, - url: typing.Optional[str] = None, - visibility_duration: typing.Optional[int] = None, - visibility_percentage: typing.Optional[int] = None, + referer: typing.Optional[typing.Union[Expr, str]] = None, + url: typing.Optional[typing.Union[Expr, str]] = None, + visibility_duration: typing.Optional[typing.Union[Expr, int]] = None, + visibility_percentage: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( download_callbacks=download_callbacks, @@ -34,6 +35,7 @@ class DivVisibilityAction(BaseDiv): url=url, visibility_duration=visibility_duration, visibility_percentage=visibility_percentage, + **kwargs, ) download_callbacks: typing.Optional[div_download_callbacks.DivDownloadCallbacks] = Field( @@ -42,11 +44,11 @@ class DivVisibilityAction(BaseDiv): "[dataloading](../../interaction.dita#loading-data)." ), ) - log_id: str = Field( + log_id: typing.Union[Expr, str] = Field( min_length=1, description="Logging ID.", ) - log_limit: typing.Optional[int] = Field( + log_limit: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Limit on the number of loggings. If `0`, the limit is " "removed." @@ -55,11 +57,11 @@ class DivVisibilityAction(BaseDiv): payload: typing.Optional[typing.Dict[str, typing.Any]] = Field( description="Additional parameters, passed to the host application.", ) - referer: typing.Optional[str] = Field( + referer: typing.Optional[typing.Union[Expr, str]] = Field( format="uri", description="Referer URL for logging.", ) - url: typing.Optional[str] = Field( + url: typing.Optional[typing.Union[Expr, str]] = Field( format="uri", description=( "URL. Possible values: `url` or `div-action://`. To learn " @@ -67,13 +69,13 @@ class DivVisibilityAction(BaseDiv): "elements](../../interaction.dita)." ), ) - visibility_duration: typing.Optional[int] = Field( + visibility_duration: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Time in milliseconds during which an element must be " "visible to trigger`visibility-action`." ), ) - visibility_percentage: typing.Optional[int] = Field( + visibility_percentage: typing.Optional[typing.Union[Expr, int]] = Field( description=( "Percentage of the visible part of an element that triggers " "`visibility-action`." diff --git a/json-builder/python/pydivkit/div/div_wrap_content_size.py b/json-builder/python/pydivkit/div/div_wrap_content_size.py index ebffed7e8..8dbaacbc2 100644 --- a/json-builder/python/pydivkit/div/div_wrap_content_size.py +++ b/json-builder/python/pydivkit/div/div_wrap_content_size.py @@ -6,7 +6,9 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field + +from . import div_size_unit # The size of an element adjusts to its contents. @@ -15,20 +17,61 @@ class DivWrapContentSize(BaseDiv): def __init__( self, *, type: str = "wrap_content", - constrained: typing.Optional[bool] = None, + constrained: typing.Optional[typing.Union[Expr, bool]] = None, + max_size: typing.Optional[DivWrapContentSizeConstraintSize] = None, + min_size: typing.Optional[DivWrapContentSizeConstraintSize] = None, + **kwargs: typing.Any, ): super().__init__( type=type, constrained=constrained, + max_size=max_size, + min_size=min_size, + **kwargs, ) type: str = Field(default="wrap_content") - constrained: typing.Optional[bool] = Field( + constrained: typing.Optional[typing.Union[Expr, bool]] = Field( description=( "The final size mustn\'t exceed the parent one. On iOS and " "in a default browser`false`. On Android always `true`." ), ) + max_size: typing.Optional[DivWrapContentSizeConstraintSize] = Field( + description="Maximum size of an element.", + ) + min_size: typing.Optional[DivWrapContentSizeConstraintSize] = Field( + description="Minimum size of an element.", + ) + + +class DivWrapContentSizeConstraintSize(BaseDiv): + + def __init__( + self, *, + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = None, + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, + ): + super().__init__( + unit=unit, + value=value, + **kwargs, + ) + + unit: typing.Optional[typing.Union[Expr, div_size_unit.DivSizeUnit]] = Field( + description=( + "Unit of measurement:`px` — a physical pixel.`dp` — a " + "logical pixel that doesn\'tdepend on screen density.`sp` — " + "a logical pixel that depends on the font size ona device. " + "Specify height in `sp`. Only available on Android." + ), + ) + value: typing.Union[Expr, int] = Field( + ) + + +DivWrapContentSizeConstraintSize.update_forward_refs() DivWrapContentSize.update_forward_refs() diff --git a/json-builder/python/pydivkit/div/integer_variable.py b/json-builder/python/pydivkit/div/integer_variable.py index c9b124539..c84be760c 100644 --- a/json-builder/python/pydivkit/div/integer_variable.py +++ b/json-builder/python/pydivkit/div/integer_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # An integer variable. @@ -14,22 +14,24 @@ class IntegerVariable(BaseDiv): def __init__( self, *, - name: str, - value: int, type: str = "integer", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, int]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="integer") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: int = Field( + value: typing.Union[Expr, int] = Field( description="Value.", ) diff --git a/json-builder/python/pydivkit/div/number_variable.py b/json-builder/python/pydivkit/div/number_variable.py index 1dd046b23..f74c973e2 100644 --- a/json-builder/python/pydivkit/div/number_variable.py +++ b/json-builder/python/pydivkit/div/number_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # A floating-point variable. @@ -14,22 +14,24 @@ class NumberVariable(BaseDiv): def __init__( self, *, - name: str, - value: float, type: str = "number", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, float]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="number") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: float = Field( + value: typing.Union[Expr, float] = Field( description="Value.", ) diff --git a/json-builder/python/pydivkit/div/string_variable.py b/json-builder/python/pydivkit/div/string_variable.py index d13fa85f4..e96cb77a3 100644 --- a/json-builder/python/pydivkit/div/string_variable.py +++ b/json-builder/python/pydivkit/div/string_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # A string variable. @@ -14,22 +14,24 @@ class StringVariable(BaseDiv): def __init__( self, *, - name: str, - value: str, type: str = "string", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="string") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: str = Field( + value: typing.Union[Expr, str] = Field( description="Value.", ) diff --git a/json-builder/python/pydivkit/div/url_variable.py b/json-builder/python/pydivkit/div/url_variable.py index 19cb6a45b..1bd5f0c32 100644 --- a/json-builder/python/pydivkit/div/url_variable.py +++ b/json-builder/python/pydivkit/div/url_variable.py @@ -6,7 +6,7 @@ from __future__ import annotations import enum import typing -from pydivkit.core import BaseDiv, Field +from pydivkit.core import BaseDiv, Expr, Field # Variable — URL as a string. @@ -14,22 +14,24 @@ class UrlVariable(BaseDiv): def __init__( self, *, - name: str, - value: str, type: str = "url", + name: typing.Optional[typing.Union[Expr, str]] = None, + value: typing.Optional[typing.Union[Expr, str]] = None, + **kwargs: typing.Any, ): super().__init__( type=type, name=name, value=value, + **kwargs, ) type: str = Field(default="url") - name: str = Field( + name: typing.Union[Expr, str] = Field( min_length=1, description="Variable name.", ) - value: str = Field( + value: typing.Union[Expr, str] = Field( format="uri", description="Value.", ) diff --git a/json-builder/python/pyproject.toml b/json-builder/python/pyproject.toml index b557971b4..d2b8ef900 100644 --- a/json-builder/python/pyproject.toml +++ b/json-builder/python/pyproject.toml @@ -7,7 +7,8 @@ repository = "https://github.com/divkit/divkit/tree/main/json-builder/python" keywords = ["divkit", "sdk"] authors = [ "Vladislav Bakaev ", - "Dmitry Orlov " + "Pavel Mosein ", + "Dmitry Orlov ", ] include = ["pydivkit/div/*", "pydivkit/py.typed"] classifiers = [ @@ -32,17 +33,13 @@ classifiers = [ [tool.poetry.dependencies] python = "^3.8" -[tool.poetry.dev-dependencies] -autoflake = "^1.7.7" +[tool.poetry.group.dev.dependencies] gray = "^0.10.2" mypy = "^0.931" -pre-commit = "^2.17.0" -pylama = "^8.3.0" + +[tool.poetry.group.test.dependencies] pytest = "^7.0.1" pytest-asyncio = "^0.18.1" -teamcity-messages = "^1.31" -yesqa = "^1.3.0" -isort = "^5.10.1" [tool.mypy] cache_dir = "/dev/null" diff --git a/json-builder/python/tests/test_examples.py b/json-builder/python/tests/test_examples.py index 3694da7a7..3650140c2 100644 --- a/json-builder/python/tests/test_examples.py +++ b/json-builder/python/tests/test_examples.py @@ -185,7 +185,7 @@ def test_gallery(): 'type': template_name, 'icon_url': f'{base_url}/food.png', 'text': 'Food' - }, { + }, { 'type': template_name, 'icon_url': f'{base_url}/alcohol.png', 'text': 'Alcohol' diff --git a/json-builder/python/tests/test_expr.py b/json-builder/python/tests/test_expr.py new file mode 100644 index 000000000..5026d6fc7 --- /dev/null +++ b/json-builder/python/tests/test_expr.py @@ -0,0 +1,22 @@ +import pytest +from pydivkit.core import Expr + + +@pytest.mark.parametrize("input,res", ( + ("@{string}", Expr("@{string}")), + +)) +def test_expr(input, res): + assert str(Expr(input)) == str(res) + + +@pytest.mark.parametrize("input", ( + "@{before", + "{before", + "after}", + "notcontains" + +)) +def test_expr_fail(input): + with pytest.raises(ValueError): + Expr(input) diff --git a/json-builder/python/tests/test_ref_types.py b/json-builder/python/tests/test_ref_types.py new file mode 100644 index 000000000..34f2f77a4 --- /dev/null +++ b/json-builder/python/tests/test_ref_types.py @@ -0,0 +1,121 @@ +import sys + +import pytest + +from pydivkit import ( + Div, + DivAction, + DivBorder, + DivContainer, + DivGifImage, + DivImage, + DivText, + Field, + Ref, + make_div, +) + + +@pytest.mark.skipif( + sys.version_info < (3, 9), + reason="subscripting requires python3.9 or higher" +) +def test_sequence_collections_type(): + from collections.abc import Sequence + + class ImageItems(DivContainer): + image_items: Sequence[DivImage] = Field() + items = [ + DivContainer( + items=Ref(image_items), + ), + ] + + images = ImageItems(image_items=[DivImage(image_url="https://image.url")]) + assert "card" in make_div(images) + + +@pytest.mark.xfail +def test_ref_collections_union_type(): + from collections.abc import Sequence + from typing import Union + + class ImageItems(DivContainer): + image_items: Union[Sequence[DivImage], Sequence[DivGifImage]] = Field() + items = [ + DivContainer( + items=Ref(image_items), + ), + ] + + images = ImageItems(image_items=None) + assert "card" in make_div(images) + + +@pytest.mark.skipif( + sys.version_info < (3, 9), + reason="subscripting requires python3.9 or higher" +) +def test_union_type(): + from collections.abc import Sequence + + class ImageItems(DivContainer): + image_items: Sequence[Div] = Field() + items = [ + DivContainer( + items=Ref(image_items), + ), + ] + + images = ImageItems(image_items=[DivImage(image_url="https://image.url")]) + assert "card" in make_div(images) + + +def test_ref_collections_error_simple_type(): + with pytest.raises(TypeError): + class ImageItems(DivContainer): + image_items: str = Field() + items = [ + DivContainer( + items=Ref(image_items), + ), + ] + + +def test_optional_expr(): + class CategoriesItem(DivContainer): + corner_radius: int = Field() + border = DivBorder(corner_radius=Ref(corner_radius)) + + assert "card" in make_div(CategoriesItem(items=[], corner_radius=1)) + + +def test_sequence_typing_type(): + from typing import Sequence + + class ImageItems(DivContainer): + image_items: Sequence[Div] = Field() + items = [ + DivContainer( + items=Ref(image_items), + ), + ] + + images = ImageItems(image_items=[DivImage(image_url="https://image.url")]) + assert "card" in make_div(images) + + +@pytest.mark.skipif( + sys.version_info < (3, 9), + reason="subscripting requires python3.9 or higher" +) +def test_optional_sequence(): + from collections.abc import Sequence + class ButtionItem(DivContainer): + button_actions: Sequence[DivAction] = Field(min_items=1) + items = [ + DivText( + text="test", + actions=Ref(button_actions) + ), + ]