reflex 0.7.4a0__tar.gz → 0.7.4a1__tar.gz

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 (405) hide show
  1. {reflex-0.7.4a0 → reflex-0.7.4a1}/PKG-INFO +3 -3
  2. {reflex-0.7.4a0 → reflex-0.7.4a1}/README.md +1 -0
  3. {reflex-0.7.4a0 → reflex-0.7.4a1}/pyproject.toml +6 -5
  4. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/app.py +16 -0
  5. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/compiler/compiler.py +2 -4
  6. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/client_side_routing.py +3 -3
  7. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/cond.py +20 -12
  8. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/dynamic.py +2 -4
  9. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/lucide/icon.py +20 -27
  10. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/config.py +17 -17
  11. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/custom_components/custom_components.py +8 -3
  12. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/reflex.py +18 -4
  13. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/state.py +1 -0
  14. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/exec.py +136 -60
  15. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/prerequisites.py +20 -1
  16. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/processes.py +4 -4
  17. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/base.py +2 -3
  18. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/sequence.py +84 -0
  19. reflex-0.7.4a0/reflex/app_module_for_backend.py +0 -33
  20. {reflex-0.7.4a0 → reflex-0.7.4a1}/.gitignore +0 -0
  21. {reflex-0.7.4a0 → reflex-0.7.4a1}/LICENSE +0 -0
  22. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  23. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  24. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  25. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  26. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  27. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  28. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  29. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  30. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  31. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  32. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  33. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  34. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  35. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  36. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  37. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  38. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  39. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  40. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  41. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  42. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  43. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  44. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  45. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  46. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/.gitignore +0 -0
  47. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  48. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  49. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/jsconfig.json +0 -0
  50. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/next.config.js +0 -0
  51. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/postcss.config.js +0 -0
  52. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  53. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  54. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  55. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  56. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  57. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  58. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  59. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/.templates/web/utils/state.js +0 -0
  60. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/__init__.py +0 -0
  61. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/__init__.pyi +0 -0
  62. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/__main__.py +0 -0
  63. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/admin.py +0 -0
  64. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/app_mixins/__init__.py +0 -0
  65. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/app_mixins/lifespan.py +0 -0
  66. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/app_mixins/middleware.py +0 -0
  67. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/app_mixins/mixin.py +0 -0
  68. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/assets.py +0 -0
  69. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/base.py +0 -0
  70. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/compiler/__init__.py +0 -0
  71. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/compiler/templates.py +0 -0
  72. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/compiler/utils.py +0 -0
  73. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/__init__.py +0 -0
  74. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/__init__.pyi +0 -0
  75. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/__init__.py +0 -0
  76. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/__init__.pyi +0 -0
  77. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/app_wrap.py +0 -0
  78. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/app_wrap.pyi +0 -0
  79. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/bare.py +0 -0
  80. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/body.py +0 -0
  81. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/body.pyi +0 -0
  82. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/document.py +0 -0
  83. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/document.pyi +0 -0
  84. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/error_boundary.py +0 -0
  85. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/error_boundary.pyi +0 -0
  86. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/fragment.py +0 -0
  87. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/fragment.pyi +0 -0
  88. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/head.py +0 -0
  89. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/head.pyi +0 -0
  90. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/link.py +0 -0
  91. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/link.pyi +0 -0
  92. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/meta.py +0 -0
  93. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/meta.pyi +0 -0
  94. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/script.py +0 -0
  95. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/script.pyi +0 -0
  96. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/strict_mode.py +0 -0
  97. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/base/strict_mode.pyi +0 -0
  98. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/component.py +0 -0
  99. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/__init__.py +0 -0
  100. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/__init__.pyi +0 -0
  101. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/auto_scroll.py +0 -0
  102. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/auto_scroll.pyi +0 -0
  103. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/banner.py +0 -0
  104. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/banner.pyi +0 -0
  105. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/breakpoints.py +0 -0
  106. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/client_side_routing.pyi +0 -0
  107. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/clipboard.py +0 -0
  108. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/clipboard.pyi +0 -0
  109. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/colors.py +0 -0
  110. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/debounce.py +0 -0
  111. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/debounce.pyi +0 -0
  112. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/foreach.py +0 -0
  113. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/html.py +0 -0
  114. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/html.pyi +0 -0
  115. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/layout/__init__.py +0 -0
  116. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/match.py +0 -0
  117. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/responsive.py +0 -0
  118. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/sticky.py +0 -0
  119. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/sticky.pyi +0 -0
  120. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/upload.py +0 -0
  121. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/core/upload.pyi +0 -0
  122. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/__init__.py +0 -0
  123. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  124. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/code.py +0 -0
  125. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/code.pyi +0 -0
  126. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  127. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  128. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/logo.py +0 -0
  129. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  130. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  131. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/__init__.py +0 -0
  132. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/__init__.pyi +0 -0
  133. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/constants/__init__.py +0 -0
  134. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/constants/html.py +0 -0
  135. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/constants/react.py +0 -0
  136. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/constants/reflex.py +0 -0
  137. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/element.py +0 -0
  138. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/element.pyi +0 -0
  139. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/__init__.py +0 -0
  140. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/__init__.pyi +0 -0
  141. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/base.py +0 -0
  142. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/base.pyi +0 -0
  143. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/forms.py +0 -0
  144. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/forms.pyi +0 -0
  145. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/inline.py +0 -0
  146. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/inline.pyi +0 -0
  147. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/media.py +0 -0
  148. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/media.pyi +0 -0
  149. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/metadata.py +0 -0
  150. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/metadata.pyi +0 -0
  151. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/other.py +0 -0
  152. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/other.pyi +0 -0
  153. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/scripts.py +0 -0
  154. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/scripts.pyi +0 -0
  155. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/sectioning.py +0 -0
  156. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  157. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/tables.py +0 -0
  158. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/tables.pyi +0 -0
  159. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/typography.py +0 -0
  160. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/el/elements/typography.pyi +0 -0
  161. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/gridjs/__init__.py +0 -0
  162. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/gridjs/datatable.py +0 -0
  163. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/gridjs/datatable.pyi +0 -0
  164. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/literals.py +0 -0
  165. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/lucide/__init__.py +0 -0
  166. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/lucide/icon.pyi +0 -0
  167. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/markdown/__init__.py +0 -0
  168. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/markdown/markdown.py +0 -0
  169. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/markdown/markdown.pyi +0 -0
  170. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/moment/__init__.py +0 -0
  171. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/moment/moment.py +0 -0
  172. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/moment/moment.pyi +0 -0
  173. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/__init__.py +0 -0
  174. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/base.py +0 -0
  175. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/base.pyi +0 -0
  176. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/image.py +0 -0
  177. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/image.pyi +0 -0
  178. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/link.py +0 -0
  179. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/link.pyi +0 -0
  180. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/video.py +0 -0
  181. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/next/video.pyi +0 -0
  182. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/plotly/__init__.py +0 -0
  183. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/plotly/plotly.py +0 -0
  184. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/plotly/plotly.pyi +0 -0
  185. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/props.py +0 -0
  186. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/__init__.py +0 -0
  187. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/__init__.pyi +0 -0
  188. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/__init__.py +0 -0
  189. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  190. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/accordion.py +0 -0
  191. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  192. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/base.py +0 -0
  193. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/base.pyi +0 -0
  194. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/drawer.py +0 -0
  195. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  196. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/form.py +0 -0
  197. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/form.pyi +0 -0
  198. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/progress.py +0 -0
  199. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  200. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/slider.py +0 -0
  201. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  202. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/__init__.py +0 -0
  203. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  204. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/base.py +0 -0
  205. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/base.pyi +0 -0
  206. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/color_mode.py +0 -0
  207. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  208. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  209. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  210. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  211. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  212. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  213. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  214. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  215. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  216. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/badge.py +0 -0
  217. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  218. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/button.py +0 -0
  219. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  220. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/callout.py +0 -0
  221. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  222. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/card.py +0 -0
  223. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  224. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  225. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  226. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  227. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  228. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  229. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  230. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  231. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  232. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  233. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  234. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  235. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  236. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  237. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  238. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  239. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  240. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  241. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  242. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/inset.py +0 -0
  243. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  244. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/popover.py +0 -0
  245. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  246. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/progress.py +0 -0
  247. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  248. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio.py +0 -0
  249. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  250. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  251. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  252. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  253. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  254. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  255. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  256. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  257. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  258. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/select.py +0 -0
  259. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  260. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/separator.py +0 -0
  261. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  262. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  263. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  264. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/slider.py +0 -0
  265. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  266. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  267. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  268. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/switch.py +0 -0
  269. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  270. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/table.py +0 -0
  271. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  272. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  273. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  274. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  275. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  276. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  277. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  278. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  279. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  280. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  281. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  282. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/base.py +0 -0
  283. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  284. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/box.py +0 -0
  285. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  286. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/center.py +0 -0
  287. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  288. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/container.py +0 -0
  289. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  290. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  291. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  292. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  293. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  294. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/list.py +0 -0
  295. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  296. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/section.py +0 -0
  297. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  298. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  299. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  300. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  301. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  302. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  303. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  304. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/base.py +0 -0
  305. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  306. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  307. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/code.py +0 -0
  308. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  309. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  310. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  311. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/link.py +0 -0
  312. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  313. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/text.py +0 -0
  314. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  315. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/__init__.py +0 -0
  316. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/audio.py +0 -0
  317. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/audio.pyi +0 -0
  318. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/react_player.py +0 -0
  319. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/react_player.pyi +0 -0
  320. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/video.py +0 -0
  321. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/react_player/video.pyi +0 -0
  322. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/__init__.py +0 -0
  323. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/__init__.pyi +0 -0
  324. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/cartesian.py +0 -0
  325. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/cartesian.pyi +0 -0
  326. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/charts.py +0 -0
  327. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/charts.pyi +0 -0
  328. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/general.py +0 -0
  329. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/general.pyi +0 -0
  330. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/polar.py +0 -0
  331. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/polar.pyi +0 -0
  332. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/recharts.py +0 -0
  333. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/recharts/recharts.pyi +0 -0
  334. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/sonner/__init__.py +0 -0
  335. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/sonner/toast.py +0 -0
  336. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/sonner/toast.pyi +0 -0
  337. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/suneditor/__init__.py +0 -0
  338. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/suneditor/editor.py +0 -0
  339. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/suneditor/editor.pyi +0 -0
  340. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/__init__.py +0 -0
  341. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/cond_tag.py +0 -0
  342. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/iter_tag.py +0 -0
  343. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/match_tag.py +0 -0
  344. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/tag.py +0 -0
  345. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/components/tags/tagless.py +0 -0
  346. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/__init__.py +0 -0
  347. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/base.py +0 -0
  348. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/colors.py +0 -0
  349. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/compiler.py +0 -0
  350. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/config.py +0 -0
  351. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/custom_components.py +0 -0
  352. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/event.py +0 -0
  353. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/installer.py +0 -0
  354. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/route.py +0 -0
  355. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/state.py +0 -0
  356. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/style.py +0 -0
  357. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/constants/utils.py +0 -0
  358. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/custom_components/__init__.py +0 -0
  359. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/event.py +0 -0
  360. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/__init__.py +0 -0
  361. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/client_state.py +0 -0
  362. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/hooks.py +0 -0
  363. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/layout.py +0 -0
  364. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/layout.pyi +0 -0
  365. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/experimental/misc.py +0 -0
  366. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/__init__.py +0 -0
  367. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/data.py +0 -0
  368. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/dynamic.py +0 -0
  369. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/proxy.py +0 -0
  370. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/storage.py +0 -0
  371. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/istate/wrappers.py +0 -0
  372. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/middleware/__init__.py +0 -0
  373. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/middleware/hydrate_middleware.py +0 -0
  374. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/middleware/middleware.py +0 -0
  375. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/model.py +0 -0
  376. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/page.py +0 -0
  377. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/py.typed +0 -0
  378. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/route.py +0 -0
  379. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/style.py +0 -0
  380. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/testing.py +0 -0
  381. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/__init__.py +0 -0
  382. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/build.py +0 -0
  383. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/codespaces.py +0 -0
  384. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/compat.py +0 -0
  385. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/console.py +0 -0
  386. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/decorator.py +0 -0
  387. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/exceptions.py +0 -0
  388. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/export.py +0 -0
  389. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/format.py +0 -0
  390. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/imports.py +0 -0
  391. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/lazy_loader.py +0 -0
  392. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/net.py +0 -0
  393. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/path_ops.py +0 -0
  394. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/pyi_generator.py +0 -0
  395. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/redir.py +0 -0
  396. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/registry.py +0 -0
  397. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/serializers.py +0 -0
  398. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/telemetry.py +0 -0
  399. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/utils/types.py +0 -0
  400. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/__init__.py +0 -0
  401. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/datetime.py +0 -0
  402. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/dep_tracking.py +0 -0
  403. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/function.py +0 -0
  404. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/number.py +0 -0
  405. {reflex-0.7.4a0 → reflex-0.7.4a1}/reflex/vars/object.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.4a0
3
+ Version: 0.7.4a1
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -23,7 +23,7 @@ Requires-Dist: build<2.0,>=1.0.3
23
23
  Requires-Dist: charset-normalizer<4.0,>=3.3.2
24
24
  Requires-Dist: distro<2.0,>=1.8.0; platform_system == 'Linux'
25
25
  Requires-Dist: fastapi!=0.111.0,!=0.111.1,>=0.96.0
26
- Requires-Dist: gunicorn<24.0,>=20.1.0
26
+ Requires-Dist: granian[reload]>=2.0.0
27
27
  Requires-Dist: httpx<1.0,>=0.25.1
28
28
  Requires-Dist: jinja2<4.0,>=3.1.2
29
29
  Requires-Dist: lazy-loader>=0.4
@@ -44,7 +44,6 @@ Requires-Dist: tomlkit<1.0,>=0.12.4
44
44
  Requires-Dist: twine<7.0,>=4.0.0
45
45
  Requires-Dist: typer<1.0,>=0.15.1
46
46
  Requires-Dist: typing-extensions>=4.6.0
47
- Requires-Dist: uvicorn>=0.20.0
48
47
  Requires-Dist: wheel<1.0,>=0.42.0
49
48
  Requires-Dist: wrapt<2.0,>=1.17.0
50
49
  Description-Content-Type: text/markdown
@@ -60,6 +59,7 @@ Description-Content-Type: text/markdown
60
59
  [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
61
60
  ![versions](https://img.shields.io/pypi/pyversions/reflex.svg)
62
61
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
62
+ [![PyPI Downloads](https://static.pepy.tech/badge/reflex)](https://pepy.tech/projects/reflex)
63
63
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
64
64
 
65
65
  </div>
@@ -9,6 +9,7 @@
9
9
  [![PyPI version](https://badge.fury.io/py/reflex.svg)](https://badge.fury.io/py/reflex)
10
10
  ![versions](https://img.shields.io/pypi/pyversions/reflex.svg)
11
11
  [![Documentation](https://img.shields.io/badge/Documentation%20-Introduction%20-%20%23007ec6)](https://reflex.dev/docs/getting-started/introduction)
12
+ [![PyPI Downloads](https://static.pepy.tech/badge/reflex)](https://pepy.tech/projects/reflex)
12
13
  [![Discord](https://img.shields.io/discord/1029853095527727165?color=%237289da&label=Discord)](https://discord.gg/T5WSbC2YtQ)
13
14
 
14
15
  </div>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.7.4a0"
3
+ version = "0.7.4a1"
4
4
  description = "Web apps in pure Python."
5
5
  license = { text = "Apache-2.0" }
6
6
  authors = [
@@ -25,7 +25,7 @@ dependencies = [
25
25
  "charset-normalizer >=3.3.2,<4.0",
26
26
  "distro >=1.8.0,<2.0; platform_system == 'Linux'",
27
27
  "fastapi >=0.96.0,!=0.111.0,!=0.111.1",
28
- "gunicorn >=20.1.0,<24.0",
28
+ "granian[reload] >=2.0.0",
29
29
  "httpx >=0.25.1,<1.0",
30
30
  "jinja2 >=3.1.2,<4.0",
31
31
  "lazy_loader >=0.4",
@@ -46,7 +46,6 @@ dependencies = [
46
46
  "twine >=4.0.0,<7.0",
47
47
  "typer >=0.15.1,<1.0",
48
48
  "typing_extensions >=4.6.0",
49
- "uvicorn >=0.20.0",
50
49
  "wheel >=0.42.0,<1.0",
51
50
  "wrapt >=1.17.0,<2.0",
52
51
  ]
@@ -140,7 +139,7 @@ dev = [
140
139
  "asynctest >=0.13.0,<1.0",
141
140
  "darglint >=1.8.1,<2.0",
142
141
  "dill >=0.3.8",
143
- "granian[reload] >= 2.0.0",
142
+ "libsass >=0.23.0,<1.0",
144
143
  "numpy >=2.2.3,<3.0",
145
144
  "pandas >=2.1.1,<3.0",
146
145
  "pillow >=10.0.0,<12.0",
@@ -158,7 +157,9 @@ dev = [
158
157
  "pytest-playwright >=0.5.1",
159
158
  "pytest-retry >=1.7.0,<2.0",
160
159
  "pytest-split >=0.10.0,<1.0",
161
- "ruff ==0.9.10",
160
+ "python-dotenv >=1,<2",
161
+ "ruff ==0.11.0",
162
162
  "selenium >=4.11.0,<5.0",
163
163
  "toml >=0.10.2,<1.0",
164
+ "uvicorn >=0.20.0",
164
165
  ]
@@ -576,6 +576,22 @@ class App(MiddlewareMixin, LifespanMixin):
576
576
  """
577
577
  if not self.api:
578
578
  raise ValueError("The app has not been initialized.")
579
+
580
+ # For py3.9 compatibility when redis is used, we MUST add any decorator pages
581
+ # before compiling the app in a thread to avoid event loop error (REF-2172).
582
+ self._apply_decorated_pages()
583
+
584
+ compile_future = concurrent.futures.ThreadPoolExecutor(max_workers=1).submit(
585
+ self._compile
586
+ )
587
+ compile_future.add_done_callback(
588
+ # Force background compile errors to print eagerly
589
+ lambda f: f.result()
590
+ )
591
+ # Wait for the compile to finish in prod mode to ensure all optional endpoints are mounted.
592
+ if is_prod_mode():
593
+ compile_future.result()
594
+
579
595
  return self.api
580
596
 
581
597
  def _add_default_endpoints(self):
@@ -368,13 +368,11 @@ def _compile_stateful_components(
368
368
 
369
369
  # Include dynamic imports in the shared component.
370
370
  if dynamic_imports := component._get_all_dynamic_imports():
371
- rendered_components.update(
372
- {dynamic_import: None for dynamic_import in dynamic_imports}
373
- )
371
+ rendered_components.update(dict.fromkeys(dynamic_imports))
374
372
 
375
373
  # Include custom code in the shared component.
376
374
  rendered_components.update(
377
- {code: None for code in component._get_all_custom_code()},
375
+ dict.fromkeys(component._get_all_custom_code()),
378
376
  )
379
377
 
380
378
  # Include all imports in the shared component.
@@ -53,9 +53,9 @@ def wait_for_client_redirect(component: Component) -> Component:
53
53
  The conditionally rendered component.
54
54
  """
55
55
  return cond(
56
- condition=route_not_found,
57
- c1=component,
58
- c2=ClientSideRouting.create(),
56
+ route_not_found,
57
+ component,
58
+ ClientSideRouting.create(),
59
59
  )
60
60
 
61
61
 
@@ -31,7 +31,7 @@ class Cond(MemoizationLeaf):
31
31
  cls,
32
32
  cond: Var,
33
33
  comp1: BaseComponent,
34
- comp2: BaseComponent | None = None,
34
+ comp2: BaseComponent | types.Unset = types.Unset(),
35
35
  ) -> Component:
36
36
  """Create a conditional component.
37
37
 
@@ -44,10 +44,14 @@ class Cond(MemoizationLeaf):
44
44
  The conditional component.
45
45
  """
46
46
  # Wrap everything in fragments.
47
- if type(comp1).__name__ != "Fragment":
47
+ if type(comp1) is not Fragment:
48
48
  comp1 = Fragment.create(comp1)
49
- if comp2 is None or type(comp2).__name__ != "Fragment":
50
- comp2 = Fragment.create(comp2) if comp2 else Fragment.create()
49
+ if isinstance(comp2, types.Unset) or type(comp2) is not Fragment:
50
+ comp2 = (
51
+ Fragment.create(comp2)
52
+ if not isinstance(comp2, types.Unset)
53
+ else Fragment.create()
54
+ )
51
55
  return Fragment.create(
52
56
  cls._create(
53
57
  children=[comp1, comp2],
@@ -96,18 +100,22 @@ class Cond(MemoizationLeaf):
96
100
 
97
101
 
98
102
  @overload
99
- def cond(condition: Any, c1: Component, c2: Any) -> Component: ... # pyright: ignore [reportOverlappingOverload]
103
+ def cond(condition: Any, c1: Component, c2: Any, /) -> Component: ... # pyright: ignore [reportOverlappingOverload]
104
+
105
+
106
+ @overload
107
+ def cond(condition: Any, c1: Component, /) -> Component: ...
100
108
 
101
109
 
102
110
  @overload
103
- def cond(condition: Any, c1: Component) -> Component: ...
111
+ def cond(condition: Any, c1: Any, c2: Component, /) -> Component: ... # pyright: ignore [reportOverlappingOverload]
104
112
 
105
113
 
106
114
  @overload
107
- def cond(condition: Any, c1: Any, c2: Any) -> Var: ...
115
+ def cond(condition: Any, c1: Any, c2: Any, /) -> Var: ...
108
116
 
109
117
 
110
- def cond(condition: Any, c1: Any, c2: Any = None) -> Component | Var:
118
+ def cond(condition: Any, c1: Any, c2: Any = types.Unset(), /) -> Component | Var:
111
119
  """Create a conditional component or Prop.
112
120
 
113
121
  Args:
@@ -128,15 +136,15 @@ def cond(condition: Any, c1: Any, c2: Any = None) -> Component | Var:
128
136
 
129
137
  # If the first component is a component, create a Cond component.
130
138
  if isinstance(c1, BaseComponent):
131
- if c2 is not None and not isinstance(c2, BaseComponent):
132
- raise ValueError("Both arguments must be components.")
139
+ if not isinstance(c2, types.Unset) and not isinstance(c2, BaseComponent):
140
+ return Cond.create(cond_var.bool(), c1, Fragment.create(c2))
133
141
  return Cond.create(cond_var.bool(), c1, c2)
134
142
 
135
143
  # Otherwise, create a conditional Var.
136
144
  # Check that the second argument is valid.
137
145
  if isinstance(c2, BaseComponent):
138
- raise ValueError("Both arguments must be props.")
139
- if c2 is None:
146
+ return Cond.create(cond_var.bool(), Fragment.create(c1), c2)
147
+ if isinstance(c2, types.Unset):
140
148
  raise ValueError("For conditional vars, the second argument must be set.")
141
149
 
142
150
  # convert the truth and false cond parts into vars so the _var_data can be obtained.
@@ -72,13 +72,11 @@ def load_dynamic_serializer():
72
72
  rendered_components = {}
73
73
  # Include dynamic imports in the shared component.
74
74
  if dynamic_imports := component._get_all_dynamic_imports():
75
- rendered_components.update(
76
- {dynamic_import: None for dynamic_import in dynamic_imports}
77
- )
75
+ rendered_components.update(dict.fromkeys(dynamic_imports))
78
76
 
79
77
  # Include custom code in the shared component.
80
78
  rendered_components.update(
81
- {code: None for code in component._get_all_custom_code()},
79
+ dict.fromkeys(component._get_all_custom_code()),
82
80
  )
83
81
 
84
82
  rendered_components[
@@ -53,42 +53,35 @@ class Icon(LucideIconComponent):
53
53
  if "tag" not in props:
54
54
  raise AttributeError("Missing 'tag' keyword-argument for Icon")
55
55
 
56
- tag: str | Var | LiteralVar = Var.create(props.pop("tag"))
57
- if isinstance(tag, LiteralVar):
58
- if isinstance(tag, LiteralStringVar):
59
- tag = tag._var_value
56
+ tag_var: Var | LiteralVar = Var.create(props.pop("tag"))
57
+ if isinstance(tag_var, LiteralVar):
58
+ if isinstance(tag_var, LiteralStringVar):
59
+ tag = format.to_snake_case(tag_var._var_value.lower())
60
60
  else:
61
- raise TypeError(f"Icon name must be a string, got {type(tag)}")
62
- elif isinstance(tag, Var):
63
- tag_stringified = tag.guess_type()
61
+ raise TypeError(f"Icon name must be a string, got {type(tag_var)}")
62
+ elif isinstance(tag_var, Var):
63
+ tag_stringified = tag_var.guess_type()
64
64
  if not isinstance(tag_stringified, StringVar):
65
- raise TypeError(f"Icon name must be a string, got {tag._var_type}")
65
+ raise TypeError(f"Icon name must be a string, got {tag_var._var_type}")
66
66
  return DynamicIcon.create(name=tag_stringified.replace("_", "-"), **props)
67
67
 
68
- if (
69
- not isinstance(tag, str)
70
- or format.to_snake_case(tag) not in LUCIDE_ICON_LIST
71
- ):
72
- if isinstance(tag, str):
73
- icons_sorted = sorted(
74
- LUCIDE_ICON_LIST,
75
- key=lambda s, tag=tag: format.length_of_largest_common_substring(
76
- tag, s
77
- ),
78
- reverse=True,
79
- )
80
- else:
81
- icons_sorted = LUCIDE_ICON_LIST
68
+ if tag not in LUCIDE_ICON_LIST:
69
+ icons_sorted = sorted(
70
+ LUCIDE_ICON_LIST,
71
+ key=lambda s, tag=tag: format.length_of_largest_common_substring(
72
+ tag, s
73
+ ),
74
+ reverse=True,
75
+ )
82
76
  console.warn(
83
77
  f"Invalid icon tag: {tag}. Please use one of the following: {', '.join(icons_sorted[0:10])}, ..."
84
78
  "\nSee full list at https://reflex.dev/docs/library/data-display/icon/#icons-list. Using 'circle-help' icon instead."
85
79
  )
86
- tag = "circle-help"
80
+ tag = "circle_help"
87
81
 
88
- if tag in LUCIDE_ICON_MAPPING_OVERRIDE:
89
- props["tag"] = LUCIDE_ICON_MAPPING_OVERRIDE[tag]
90
- else:
91
- props["tag"] = format.to_title_case(format.to_snake_case(tag)) + "Icon"
82
+ props["tag"] = LUCIDE_ICON_MAPPING_OVERRIDE.get(
83
+ tag, format.to_title_case(tag) + "Icon"
84
+ )
92
85
  props["alias"] = f"Lucide{props['tag']}"
93
86
  props.setdefault("color", "var(--current-color)")
94
87
  return super().create(**props)
@@ -30,7 +30,6 @@ from typing import (
30
30
  )
31
31
 
32
32
  import pydantic.v1 as pydantic
33
- from reflex_cli.constants.hosting import Hosting
34
33
 
35
34
  from reflex import constants
36
35
  from reflex.base import Base
@@ -602,7 +601,7 @@ class EnvironmentVariables:
602
601
  # The npm registry to use.
603
602
  NPM_CONFIG_REGISTRY: EnvVar[str | None] = env_var(None)
604
603
 
605
- # Whether to use Granian for the backend. Otherwise, use Uvicorn.
604
+ # Whether to use Granian for the backend. By default, the backend uses Uvicorn if available.
606
605
  REFLEX_USE_GRANIAN: EnvVar[bool] = env_var(False)
607
606
 
608
607
  # The username to use for authentication on python package repository. Username and password must both be provided.
@@ -807,8 +806,8 @@ class Config(Base):
807
806
  # Tailwind config.
808
807
  tailwind: dict[str, Any] | None = {"plugins": ["@tailwindcss/typography"]}
809
808
 
810
- # Timeout when launching the gunicorn server. TODO(rename this to backend_timeout?)
811
- timeout: int = 120
809
+ # DEPRECATED. Timeout when launching the gunicorn server.
810
+ timeout: int | None = None
812
811
 
813
812
  # Whether to enable or disable nextJS gzip compression.
814
813
  next_compression: bool = True
@@ -819,22 +818,17 @@ class Config(Base):
819
818
  # Additional frontend packages to install.
820
819
  frontend_packages: list[str] = []
821
820
 
822
- # The hosting service backend URL.
823
- cp_backend_url: str = Hosting.HOSTING_SERVICE
824
- # The hosting service frontend URL.
825
- cp_web_url: str = Hosting.HOSTING_SERVICE_UI
826
-
827
- # The worker class used in production mode
821
+ # DEPRECATED. The worker class used in production mode
828
822
  gunicorn_worker_class: str = "uvicorn.workers.UvicornH11Worker"
829
823
 
830
- # Number of gunicorn workers from user
824
+ # DEPRECATED. Number of gunicorn workers from user
831
825
  gunicorn_workers: int | None = None
832
826
 
833
- # Number of requests before a worker is restarted; set to 0 to disable
834
- gunicorn_max_requests: int = 100
827
+ # DEPRECATED. Number of requests before a worker is restarted; set to 0 to disable
828
+ gunicorn_max_requests: int | None = None
835
829
 
836
- # Variance limit for max requests; gunicorn only
837
- gunicorn_max_requests_jitter: int = 25
830
+ # DEPRECATED. Variance limit for max requests; gunicorn only
831
+ gunicorn_max_requests_jitter: int | None = None
838
832
 
839
833
  # Indicate which type of state manager to use
840
834
  state_manager_mode: constants.StateManagerMode = constants.StateManagerMode.DISK
@@ -938,8 +932,14 @@ class Config(Base):
938
932
  """The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.0.1"`."""
939
933
  )
940
934
  else:
941
- # load env file if exists
942
- load_dotenv(env_file, override=True)
935
+ # load env files in reverse order if they exist
936
+ for env_file_path in [
937
+ Path(p)
938
+ for s in reversed(env_file.split(os.pathsep))
939
+ if (p := s.strip())
940
+ ]:
941
+ if env_file_path.exists():
942
+ load_dotenv(env_file_path, override=True)
943
943
 
944
944
  updated_values = {}
945
945
  # Iterate over the fields.
@@ -826,12 +826,19 @@ def _collect_details_for_gallery():
826
826
  Raises:
827
827
  Exit: If pyproject.toml file is ill-formed or the request to the backend services fails.
828
828
  """
829
+ import reflex_cli.constants
829
830
  from reflex_cli.utils import hosting
830
831
 
831
832
  console.rule("[bold]Authentication with Reflex Services")
832
833
  console.print("First let's log in to Reflex backend services.")
833
834
  access_token, _ = hosting.authenticated_token()
834
835
 
836
+ if not access_token:
837
+ console.error(
838
+ "Unable to authenticate with Reflex backend services. Make sure you are logged in."
839
+ )
840
+ raise typer.Exit(code=1)
841
+
835
842
  console.rule("[bold]Custom Component Information")
836
843
  params = {}
837
844
  package_name = None
@@ -845,10 +852,8 @@ def _collect_details_for_gallery():
845
852
  console.print(f"[ Custom component package name ] : {package_name}")
846
853
  params["package_name"] = package_name
847
854
 
848
- config = get_config()
849
-
850
855
  post_custom_components_gallery_endpoint = (
851
- f"{config.cp_backend_url}/custom-components/gallery"
856
+ f"{reflex_cli.constants.Hosting.HOSTING_SERVICE}/custom-components/gallery"
852
857
  )
853
858
 
854
859
  # Check the backend services if the user is allowed to update information of this package is already shared.
@@ -7,13 +7,14 @@ from pathlib import Path
7
7
 
8
8
  import typer
9
9
  import typer.core
10
- from reflex_cli.v2.deployments import check_version, hosting_cli
10
+ from reflex_cli.v2.deployments import hosting_cli
11
11
 
12
12
  from reflex import constants
13
13
  from reflex.config import environment, get_config
14
14
  from reflex.custom_components.custom_components import custom_components_cli
15
15
  from reflex.state import reset_disk_state_manager
16
16
  from reflex.utils import console, redir, telemetry
17
+ from reflex.utils.exec import should_use_granian
17
18
 
18
19
  # Disable typer+rich integration for help panels
19
20
  typer.core.rich = None # pyright: ignore [reportPrivateImportUsage]
@@ -203,9 +204,19 @@ def _run(
203
204
 
204
205
  prerequisites.check_latest_package_version(constants.Reflex.MODULE_NAME)
205
206
 
206
- if frontend:
207
- # Get the app module.
208
- prerequisites.get_compiled_app()
207
+ # Get the app module.
208
+ app_task = prerequisites.compile_app if frontend else prerequisites.validate_app
209
+
210
+ # Granian fails if the app is already imported.
211
+ if should_use_granian():
212
+ import concurrent.futures
213
+
214
+ compile_future = concurrent.futures.ProcessPoolExecutor(max_workers=1).submit(
215
+ app_task
216
+ )
217
+ compile_future.result()
218
+ else:
219
+ app_task()
209
220
 
210
221
  # Warn if schema is not up to date.
211
222
  prerequisites.check_schema_up_to_date()
@@ -386,6 +397,7 @@ def export(
386
397
  def login(loglevel: constants.LogLevel | None = typer.Option(None)):
387
398
  """Authenticate with experimental Reflex hosting service."""
388
399
  from reflex_cli.v2 import cli as hosting_cli
400
+ from reflex_cli.v2.deployments import check_version
389
401
 
390
402
  loglevel = loglevel or get_config().loglevel
391
403
 
@@ -407,6 +419,7 @@ def logout(
407
419
  ):
408
420
  """Log out of access to Reflex hosting service."""
409
421
  from reflex_cli.v2.cli import logout
422
+ from reflex_cli.v2.deployments import check_version
410
423
 
411
424
  check_version()
412
425
 
@@ -567,6 +580,7 @@ def deploy(
567
580
  from reflex_cli.constants.base import LogLevel as HostingLogLevel
568
581
  from reflex_cli.utils import dependency
569
582
  from reflex_cli.v2 import cli as hosting_cli
583
+ from reflex_cli.v2.deployments import check_version
570
584
 
571
585
  from reflex.utils import export as export_utils
572
586
  from reflex.utils import prerequisites
@@ -1671,6 +1671,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
1671
1671
 
1672
1672
  raise TypeError(
1673
1673
  f"Your handler {handler.fn.__qualname__} must only return/yield: None, Events or other EventHandlers referenced by their class (i.e. using `type(self)` or other class references)."
1674
+ f" Returned events of types {', '.join(map(str, map(type, events)))!s}."
1674
1675
  )
1675
1676
 
1676
1677
  async def _as_state_update(