reflex 0.3.2__py3-none-any.whl → 0.3.3a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (48) hide show
  1. reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +20 -3
  2. reflex/.templates/web/next.config.js +1 -0
  3. reflex/.templates/web/utils/helpers/range.js +43 -0
  4. reflex/.templates/web/utils/state.js +10 -6
  5. reflex/__init__.py +312 -40
  6. reflex/__init__.pyi +477 -0
  7. reflex/compiler/compiler.py +3 -0
  8. reflex/components/__init__.py +138 -138
  9. reflex/components/component.py +29 -22
  10. reflex/components/datadisplay/__init__.py +3 -1
  11. reflex/components/datadisplay/code.py +388 -14
  12. reflex/components/datadisplay/code.pyi +1146 -10
  13. reflex/components/forms/button.py +3 -0
  14. reflex/components/forms/checkbox.py +3 -0
  15. reflex/components/forms/form.py +90 -27
  16. reflex/components/forms/input.py +3 -0
  17. reflex/components/forms/numberinput.py +3 -0
  18. reflex/components/forms/pininput.py +77 -21
  19. reflex/components/forms/radio.py +3 -0
  20. reflex/components/forms/rangeslider.py +3 -0
  21. reflex/components/forms/select.py +3 -0
  22. reflex/components/forms/slider.py +3 -0
  23. reflex/components/forms/switch.py +3 -0
  24. reflex/components/forms/textarea.py +3 -0
  25. reflex/components/libs/chakra.py +2 -0
  26. reflex/components/libs/chakra.pyi +323 -24
  27. reflex/components/tags/tag.py +3 -2
  28. reflex/components/typography/markdown.py +10 -0
  29. reflex/constants/installer.py +4 -4
  30. reflex/event.py +4 -0
  31. reflex/page.py +3 -4
  32. reflex/page.pyi +17 -0
  33. reflex/reflex.py +3 -0
  34. reflex/state.py +31 -12
  35. reflex/testing.py +1 -1
  36. reflex/utils/build.py +24 -19
  37. reflex/utils/console.py +5 -1
  38. reflex/utils/format.py +26 -9
  39. reflex/utils/prerequisites.py +27 -28
  40. reflex/utils/processes.py +5 -4
  41. reflex/vars.py +80 -12
  42. reflex/vars.pyi +7 -0
  43. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/METADATA +3 -2
  44. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/RECORD +47 -45
  45. reflex/.templates/web/styles/code/prism.js +0 -1015
  46. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/LICENSE +0 -0
  47. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/WHEEL +0 -0
  48. {reflex-0.3.2.dist-info → reflex-0.3.3a1.dist-info}/entry_points.txt +0 -0
@@ -26,157 +26,176 @@ from .typography import *
26
26
 
27
27
  # Add the convenience methods for all the components manually.
28
28
  # This is necessary for static type checking to work.
29
- component = Component.create
30
- badge = Badge.create
31
- code = Code.create
32
- code_block = CodeBlock.create
33
- connection_banner = ConnectionBanner.create
34
- connection_modal = ConnectionModal.create
35
- data_editor = DataEditor.create
36
- data_editor_theme = DataEditorTheme
37
- data_table = DataTable.create
38
- divider = Divider.create
39
- list = List.create
40
- list_item = ListItem.create
41
- ordered_list = OrderedList.create
42
- unordered_list = UnorderedList.create
43
- stat = Stat.create
44
- stat_arrow = StatArrow.create
45
- stat_group = StatGroup.create
46
- stat_help_text = StatHelpText.create
47
- stat_label = StatLabel.create
48
- stat_number = StatNumber.create
49
- tag = Tag.create
50
- tag_label = TagLabel.create
51
- tag_left_icon = TagLeftIcon.create
52
- tag_right_icon = TagRightIcon.create
53
- tag_close_button = TagCloseButton.create
54
- table = Table.create
55
- table_caption = TableCaption.create
56
- table_container = TableContainer.create
57
- tbody = Tbody.create
58
- td = Td.create
59
- tfoot = Tfoot.create
60
- th = Th.create
61
- thead = Thead.create
62
- tr = Tr.create
63
29
  accordion = Accordion.create
64
30
  accordion_button = AccordionButton.create
65
31
  accordion_icon = AccordionIcon.create
66
32
  accordion_item = AccordionItem.create
67
33
  accordion_panel = AccordionPanel.create
68
- tab = Tab.create
69
- tab_list = TabList.create
70
- tab_panel = TabPanel.create
71
- tab_panels = TabPanels.create
72
- tabs = Tabs.create
73
- visually_hidden = VisuallyHidden.create
74
- fade = Fade.create
75
- scale_fade = ScaleFade.create
76
- slide = Slide.create
77
- slide_fade = SlideFade.create
78
- collapse = Collapse.create
79
34
  alert = Alert.create
80
35
  alert_description = AlertDescription.create
36
+ alert_dialog = AlertDialog.create
37
+ alert_dialog_body = AlertDialogBody.create
38
+ alert_dialog_content = AlertDialogContent.create
39
+ alert_dialog_footer = AlertDialogFooter.create
40
+ alert_dialog_header = AlertDialogHeader.create
41
+ alert_dialog_overlay = AlertDialogOverlay.create
81
42
  alert_icon = AlertIcon.create
82
43
  alert_title = AlertTitle.create
44
+ aspect_ratio = AspectRatio.create
45
+ audio = Audio.create
46
+ avatar = Avatar.create
47
+ avatar_badge = AvatarBadge.create
48
+ avatar_group = AvatarGroup.create
49
+ badge = Badge.create
50
+ box = Box.create
51
+ breadcrumb = Breadcrumb.create
52
+ breadcrumb_item = BreadcrumbItem.create
53
+ breadcrumb_link = BreadcrumbLink.create
54
+ breadcrumb_separator = BreadcrumbSeparator.create
55
+ button = Button.create
56
+ button_group = ButtonGroup.create
83
57
  card = Card.create
84
58
  card_body = CardBody.create
85
59
  card_footer = CardFooter.create
86
60
  card_header = CardHeader.create
87
- circular_progress = CircularProgress.create
88
- circular_progress_label = CircularProgressLabel.create
89
- progress = Progress.create
90
- skeleton = Skeleton.create
91
- skeleton_circle = SkeletonCircle.create
92
- skeleton_text = SkeletonText.create
93
- spinner = Spinner.create
94
- button = Button.create
95
- button_group = ButtonGroup.create
61
+ center = Center.create
96
62
  checkbox = Checkbox.create
97
63
  checkbox_group = CheckboxGroup.create
64
+ circle = Circle.create
65
+ circular_progress = CircularProgress.create
66
+ circular_progress_label = CircularProgressLabel.create
67
+ code = Code.create
68
+ code_block = CodeBlock.create
69
+ collapse = Collapse.create
70
+ color_mode_button = ColorModeButton.create
71
+ color_mode_icon = ColorModeIcon.create
72
+ color_mode_switch = ColorModeSwitch.create
73
+ component = Component.create
74
+ connection_banner = ConnectionBanner.create
75
+ connection_modal = ConnectionModal.create
76
+ container = Container.create
77
+ data_editor = DataEditor.create
78
+ data_editor_theme = DataEditorTheme
79
+ data_table = DataTable.create
98
80
  date_picker = DatePicker.create
99
81
  date_time_picker = DateTimePicker.create
100
82
  debounce_input = DebounceInput.create
83
+ divider = Divider.create
84
+ drawer = Drawer.create
85
+ drawer_body = DrawerBody.create
86
+ drawer_close_button = DrawerCloseButton.create
87
+ drawer_content = DrawerContent.create
88
+ drawer_footer = DrawerFooter.create
89
+ drawer_header = DrawerHeader.create
90
+ drawer_overlay = DrawerOverlay.create
101
91
  editable = Editable.create
102
92
  editable_input = EditableInput.create
103
93
  editable_preview = EditablePreview.create
104
94
  editable_textarea = EditableTextarea.create
105
95
  editor = Editor.create
96
+ email = Email.create
97
+ fade = Fade.create
98
+ flex = Flex.create
99
+ foreach = Foreach.create
106
100
  form = Form.create
107
101
  form_control = FormControl.create
108
102
  form_error_message = FormErrorMessage.create
109
103
  form_helper_text = FormHelperText.create
110
104
  form_label = FormLabel.create
105
+ fragment = Fragment.create
106
+ grid = Grid.create
107
+ grid_item = GridItem.create
108
+ heading = Heading.create
109
+ highlight = Highlight.create
110
+ hstack = Hstack.create
111
+ html = Html.create
112
+ icon = Icon.create
111
113
  icon_button = IconButton.create
114
+ image = Image.create
112
115
  input = Input.create
113
116
  input_group = InputGroup.create
114
117
  input_left_addon = InputLeftAddon.create
115
- input_right_addon = InputRightAddon.create
116
118
  input_left_element = InputLeftElement.create
119
+ input_right_addon = InputRightAddon.create
117
120
  input_right_element = InputRightElement.create
121
+ kbd = Kbd.create
122
+ link = Link.create
123
+ link_box = LinkBox.create
124
+ link_overlay = LinkOverlay.create
125
+ list = List.create
126
+ list_item = ListItem.create
127
+ markdown = Markdown.create
128
+ menu = Menu.create
129
+ menu_button = MenuButton.create
130
+ menu_divider = MenuDivider.create
131
+ menu_group = MenuGroup.create
132
+ menu_item = MenuItem.create
133
+ menu_item_option = MenuItemOption.create
134
+ menu_list = MenuList.create
135
+ menu_option_group = MenuOptionGroup.create
136
+ modal = Modal.create
137
+ modal_body = ModalBody.create
138
+ modal_close_button = ModalCloseButton.create
139
+ modal_content = ModalContent.create
140
+ modal_footer = ModalFooter.create
141
+ modal_header = ModalHeader.create
142
+ modal_overlay = ModalOverlay.create
118
143
  moment = Moment.create
119
144
  multi_select = MultiSelect.create
120
145
  multi_select_option = MultiSelectOption
146
+ next_link = NextLink.create
121
147
  number_decrement_stepper = NumberDecrementStepper.create
122
148
  number_increment_stepper = NumberIncrementStepper.create
123
149
  number_input = NumberInput.create
124
150
  number_input_field = NumberInputField.create
125
151
  number_input_stepper = NumberInputStepper.create
126
152
  option = Option.create
153
+ ordered_list = OrderedList.create
127
154
  password = Password.create
128
- email = Email.create
129
155
  pin_input = PinInput.create
130
156
  pin_input_field = PinInputField.create
157
+ plotly = Plotly.create
158
+ popover = Popover.create
159
+ popover_anchor = PopoverAnchor.create
160
+ popover_arrow = PopoverArrow.create
161
+ popover_body = PopoverBody.create
162
+ popover_close_button = PopoverCloseButton.create
163
+ popover_content = PopoverContent.create
164
+ popover_footer = PopoverFooter.create
165
+ popover_header = PopoverHeader.create
166
+ popover_trigger = PopoverTrigger.create
167
+ progress = Progress.create
131
168
  radio = Radio.create
132
169
  radio_group = RadioGroup.create
133
170
  range_slider = RangeSlider.create
134
171
  range_slider_filled_track = RangeSliderFilledTrack.create
135
172
  range_slider_thumb = RangeSliderThumb.create
136
173
  range_slider_track = RangeSliderTrack.create
174
+ responsive_grid = ResponsiveGrid.create
175
+ scale_fade = ScaleFade.create
176
+ script = Script.create
137
177
  select = Select.create
178
+ skeleton = Skeleton.create
179
+ skeleton_circle = SkeletonCircle.create
180
+ skeleton_text = SkeletonText.create
181
+ slide = Slide.create
182
+ slide_fade = SlideFade.create
138
183
  slider = Slider.create
139
184
  slider_filled_track = SliderFilledTrack.create
140
185
  slider_mark = SliderMark.create
141
186
  slider_thumb = SliderThumb.create
142
187
  slider_track = SliderTrack.create
143
- switch = Switch.create
144
- text_area = TextArea.create
145
- upload = Upload.create
146
- plotly = Plotly.create
147
- box = Box.create
148
- center = Center.create
149
- circle = Circle.create
150
- container = Container.create
151
- flex = Flex.create
152
- foreach = Foreach.create
153
- fragment = Fragment.create
154
- grid = Grid.create
155
- grid_item = GridItem.create
156
- hstack = Hstack.create
157
- html = Html.create
158
- responsive_grid = ResponsiveGrid.create
159
188
  spacer = Spacer.create
189
+ span = Span.create
190
+ spinner = Spinner.create
160
191
  square = Square.create
161
192
  stack = Stack.create
162
- vstack = Vstack.create
163
- wrap = Wrap.create
164
- wrap_item = WrapItem.create
165
- avatar = Avatar.create
166
- avatar_badge = AvatarBadge.create
167
- avatar_group = AvatarGroup.create
168
- icon = Icon.create
169
- image = Image.create
170
- video = Video.create
171
- audio = Audio.create
172
- breadcrumb = Breadcrumb.create
173
- breadcrumb_item = BreadcrumbItem.create
174
- breadcrumb_link = BreadcrumbLink.create
175
- breadcrumb_separator = BreadcrumbSeparator.create
176
- link = Link.create
177
- link_box = LinkBox.create
178
- link_overlay = LinkOverlay.create
179
- next_link = NextLink.create
193
+ stat = Stat.create
194
+ stat_arrow = StatArrow.create
195
+ stat_group = StatGroup.create
196
+ stat_help_text = StatHelpText.create
197
+ stat_label = StatLabel.create
198
+ stat_number = StatNumber.create
180
199
  step = Step.create
181
200
  step_description = StepDescription.create
182
201
  step_icon = StepIcon.create
@@ -186,52 +205,33 @@ step_separator = StepSeparator.create
186
205
  step_status = StepStatus.create
187
206
  step_title = StepTitle.create
188
207
  stepper = Stepper.create
189
- alert_dialog = AlertDialog.create
190
- alert_dialog_body = AlertDialogBody.create
191
- alert_dialog_content = AlertDialogContent.create
192
- alert_dialog_footer = AlertDialogFooter.create
193
- alert_dialog_header = AlertDialogHeader.create
194
- alert_dialog_overlay = AlertDialogOverlay.create
195
- drawer = Drawer.create
196
- drawer_body = DrawerBody.create
197
- drawer_close_button = DrawerCloseButton.create
198
- drawer_content = DrawerContent.create
199
- drawer_footer = DrawerFooter.create
200
- drawer_header = DrawerHeader.create
201
- drawer_overlay = DrawerOverlay.create
202
- menu = Menu.create
203
- menu_button = MenuButton.create
204
- menu_divider = MenuDivider.create
205
- menu_group = MenuGroup.create
206
- menu_item = MenuItem.create
207
- menu_item_option = MenuItemOption.create
208
- menu_list = MenuList.create
209
- menu_option_group = MenuOptionGroup.create
210
- modal = Modal.create
211
- modal_body = ModalBody.create
212
- modal_close_button = ModalCloseButton.create
213
- modal_content = ModalContent.create
214
- modal_footer = ModalFooter.create
215
- modal_header = ModalHeader.create
216
- modal_overlay = ModalOverlay.create
217
- popover = Popover.create
218
- popover_anchor = PopoverAnchor.create
219
- popover_arrow = PopoverArrow.create
220
- popover_body = PopoverBody.create
221
- popover_close_button = PopoverCloseButton.create
222
- popover_content = PopoverContent.create
223
- popover_footer = PopoverFooter.create
224
- popover_header = PopoverHeader.create
225
- popover_trigger = PopoverTrigger.create
226
- tooltip = Tooltip.create
227
- heading = Heading.create
228
- highlight = Highlight.create
229
- markdown = Markdown.create
230
- span = Span.create
208
+ switch = Switch.create
209
+ tab = Tab.create
210
+ tab_list = TabList.create
211
+ tab_panel = TabPanel.create
212
+ tab_panels = TabPanels.create
213
+ table = Table.create
214
+ table_caption = TableCaption.create
215
+ table_container = TableContainer.create
216
+ tabs = Tabs.create
217
+ tag = Tag.create
218
+ tag_close_button = TagCloseButton.create
219
+ tag_label = TagLabel.create
220
+ tag_left_icon = TagLeftIcon.create
221
+ tag_right_icon = TagRightIcon.create
222
+ tbody = Tbody.create
223
+ td = Td.create
231
224
  text = Text.create
232
- script = Script.create
233
- aspect_ratio = AspectRatio.create
234
- kbd = KeyboardKey.create
235
- color_mode_button = ColorModeButton.create
236
- color_mode_icon = ColorModeIcon.create
237
- color_mode_switch = ColorModeSwitch.create
225
+ text_area = TextArea.create
226
+ tfoot = Tfoot.create
227
+ th = Th.create
228
+ thead = Thead.create
229
+ tooltip = Tooltip.create
230
+ tr = Tr.create
231
+ unordered_list = UnorderedList.create
232
+ upload = Upload.create
233
+ video = Video.create
234
+ visually_hidden = VisuallyHidden.create
235
+ vstack = Vstack.create
236
+ wrap = Wrap.create
237
+ wrap_item = WrapItem.create
@@ -358,9 +358,12 @@ class Component(Base, ABC):
358
358
 
359
359
  return _compile_component(self)
360
360
 
361
- def _render(self) -> Tag:
361
+ def _render(self, props: dict[str, Any] | None = None) -> Tag:
362
362
  """Define how to render the component in React.
363
363
 
364
+ Args:
365
+ props: The props to render (if None, then use get_props).
366
+
364
367
  Returns:
365
368
  The tag to render.
366
369
  """
@@ -370,16 +373,26 @@ class Component(Base, ABC):
370
373
  special_props=self.special_props,
371
374
  )
372
375
 
373
- # Add component props to the tag.
374
- props = {
375
- attr[:-1] if attr.endswith("_") else attr: getattr(self, attr)
376
- for attr in self.get_props()
377
- }
376
+ if props is None:
377
+ # Add component props to the tag.
378
+ props = {
379
+ attr[:-1] if attr.endswith("_") else attr: getattr(self, attr)
380
+ for attr in self.get_props()
381
+ }
378
382
 
379
- # Add ref to element if `id` is not None.
380
- ref = self.get_ref()
381
- if ref is not None:
382
- props["ref"] = Var.create(ref, _var_is_local=False)
383
+ # Add ref to element if `id` is not None.
384
+ ref = self.get_ref()
385
+ if ref is not None:
386
+ props["ref"] = Var.create(ref, _var_is_local=False)
387
+
388
+ props.update(
389
+ self.event_triggers,
390
+ key=self.key,
391
+ id=self.id,
392
+ class_name=self.class_name,
393
+ )
394
+ props.update(self._get_style())
395
+ props.update(self.custom_attrs)
383
396
 
384
397
  return tag.add_props(**props)
385
398
 
@@ -501,14 +514,7 @@ class Component(Base, ABC):
501
514
  """
502
515
  tag = self._render()
503
516
  rendered_dict = dict(
504
- tag.add_props(
505
- **self.event_triggers,
506
- key=self.key,
507
- id=self.id,
508
- class_name=self.class_name,
509
- **self._get_style(),
510
- **self.custom_attrs,
511
- ).set(
517
+ tag.set(
512
518
  children=[child.render() for child in self.children],
513
519
  contents=str(tag.contents),
514
520
  props=tag.format_props(),
@@ -949,10 +955,7 @@ class CustomComponent(Component):
949
955
  Returns:
950
956
  The tag to render.
951
957
  """
952
- return Tag(
953
- name=self.tag if not self.alias else self.alias,
954
- special_props=self.special_props,
955
- ).add_props(**self.props)
958
+ return super()._render(props=self.props)
956
959
 
957
960
  def get_prop_vars(self) -> List[BaseVar]:
958
961
  """Get the prop vars.
@@ -1000,6 +1003,10 @@ def custom_component(
1000
1003
  return wrapper
1001
1004
 
1002
1005
 
1006
+ # Alias memo to custom_component.
1007
+ memo = custom_component
1008
+
1009
+
1003
1010
  class NoSSRComponent(Component):
1004
1011
  """A dynamic component that is not rendered on the server."""
1005
1012
 
@@ -2,10 +2,12 @@
2
2
 
3
3
  from .badge import Badge
4
4
  from .code import Code, CodeBlock
5
+ from .code import LiteralCodeBlockTheme as LiteralCodeBlockTheme
6
+ from .code import LiteralCodeLanguage as LiteralCodeLanguage
5
7
  from .dataeditor import DataEditor, DataEditorTheme
6
8
  from .datatable import DataTable
7
9
  from .divider import Divider
8
- from .keyboard_key import KeyboardKey
10
+ from .keyboard_key import KeyboardKey as Kbd
9
11
  from .list import List, ListItem, OrderedList, UnorderedList
10
12
  from .moment import Moment
11
13
  from .stat import Stat, StatArrow, StatGroup, StatHelpText, StatLabel, StatNumber