reflex 0.8.0a6__tar.gz → 0.8.0.post1__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 (403) hide show
  1. {reflex-0.8.0a6 → reflex-0.8.0.post1}/PKG-INFO +2 -2
  2. {reflex-0.8.0a6 → reflex-0.8.0.post1}/pyproject.toml +2 -2
  3. reflex-0.8.0.post1/reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
  4. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/vite.config.js +2 -1
  5. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/config.py +7 -36
  6. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/installer.py +1 -0
  7. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/environment.py +70 -0
  8. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/exec.py +8 -3
  9. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/misc.py +1 -2
  10. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/processes.py +11 -2
  11. {reflex-0.8.0a6 → reflex-0.8.0.post1}/.gitignore +0 -0
  12. {reflex-0.8.0a6 → reflex-0.8.0.post1}/LICENSE +0 -0
  13. {reflex-0.8.0a6 → reflex-0.8.0.post1}/README.md +0 -0
  14. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  15. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  16. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  17. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  18. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  19. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  20. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  21. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  22. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  23. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  24. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  25. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  26. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  27. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  28. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  29. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  30. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  31. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  32. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  33. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  34. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  35. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  36. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  37. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/.gitignore +0 -0
  38. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/app/entry.client.js +0 -0
  39. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/app/routes.js +0 -0
  40. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  41. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/components/shiki/code.js +0 -0
  42. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/jsconfig.json +0 -0
  43. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/postcss.config.js +0 -0
  44. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/react-router.config.js +0 -0
  45. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  46. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  47. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  48. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  49. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  50. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  51. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  52. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/react-theme.js +0 -0
  53. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/.templates/web/utils/state.js +0 -0
  54. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/__init__.py +0 -0
  55. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/__init__.pyi +0 -0
  56. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/__main__.py +0 -0
  57. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/admin.py +0 -0
  58. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/app.py +0 -0
  59. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/app_mixins/__init__.py +0 -0
  60. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/app_mixins/lifespan.py +0 -0
  61. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/app_mixins/middleware.py +0 -0
  62. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/app_mixins/mixin.py +0 -0
  63. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/assets.py +0 -0
  64. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/base.py +0 -0
  65. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/compiler/__init__.py +0 -0
  66. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/compiler/compiler.py +0 -0
  67. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/compiler/templates.py +0 -0
  68. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/compiler/utils.py +0 -0
  69. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/__init__.py +0 -0
  70. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/__init__.pyi +0 -0
  71. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/__init__.py +0 -0
  72. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/__init__.pyi +0 -0
  73. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/app_wrap.py +0 -0
  74. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/app_wrap.pyi +0 -0
  75. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/bare.py +0 -0
  76. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/body.py +0 -0
  77. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/body.pyi +0 -0
  78. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/document.py +0 -0
  79. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/document.pyi +0 -0
  80. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/error_boundary.py +0 -0
  81. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/error_boundary.pyi +0 -0
  82. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/fragment.py +0 -0
  83. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/fragment.pyi +0 -0
  84. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/link.py +0 -0
  85. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/link.pyi +0 -0
  86. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/meta.py +0 -0
  87. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/meta.pyi +0 -0
  88. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/script.py +0 -0
  89. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/script.pyi +0 -0
  90. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/strict_mode.py +0 -0
  91. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/base/strict_mode.pyi +0 -0
  92. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/component.py +0 -0
  93. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/__init__.py +0 -0
  94. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/__init__.pyi +0 -0
  95. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/auto_scroll.py +0 -0
  96. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/auto_scroll.pyi +0 -0
  97. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/banner.py +0 -0
  98. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/banner.pyi +0 -0
  99. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/breakpoints.py +0 -0
  100. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/client_side_routing.py +0 -0
  101. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/client_side_routing.pyi +0 -0
  102. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/clipboard.py +0 -0
  103. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/clipboard.pyi +0 -0
  104. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/colors.py +0 -0
  105. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/cond.py +0 -0
  106. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/debounce.py +0 -0
  107. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/debounce.pyi +0 -0
  108. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/foreach.py +0 -0
  109. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/helmet.py +0 -0
  110. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/helmet.pyi +0 -0
  111. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/html.py +0 -0
  112. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/html.pyi +0 -0
  113. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/layout/__init__.py +0 -0
  114. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/match.py +0 -0
  115. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/responsive.py +0 -0
  116. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/sticky.py +0 -0
  117. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/sticky.pyi +0 -0
  118. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/upload.py +0 -0
  119. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/core/upload.pyi +0 -0
  120. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/__init__.py +0 -0
  121. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/__init__.pyi +0 -0
  122. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/code.py +0 -0
  123. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/code.pyi +0 -0
  124. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/dataeditor.py +0 -0
  125. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  126. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/logo.py +0 -0
  127. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  128. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  129. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/dynamic.py +0 -0
  130. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/__init__.py +0 -0
  131. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/__init__.pyi +0 -0
  132. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/constants/__init__.py +0 -0
  133. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/constants/html.py +0 -0
  134. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/constants/react.py +0 -0
  135. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/constants/reflex.py +0 -0
  136. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/element.py +0 -0
  137. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/element.pyi +0 -0
  138. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/__init__.py +0 -0
  139. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/__init__.pyi +0 -0
  140. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/base.py +0 -0
  141. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/base.pyi +0 -0
  142. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/forms.py +0 -0
  143. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/forms.pyi +0 -0
  144. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/inline.py +0 -0
  145. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/inline.pyi +0 -0
  146. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/media.py +0 -0
  147. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/media.pyi +0 -0
  148. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/metadata.py +0 -0
  149. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/metadata.pyi +0 -0
  150. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/other.py +0 -0
  151. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/other.pyi +0 -0
  152. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/scripts.py +0 -0
  153. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/scripts.pyi +0 -0
  154. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/sectioning.py +0 -0
  155. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/sectioning.pyi +0 -0
  156. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/tables.py +0 -0
  157. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/tables.pyi +0 -0
  158. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/typography.py +0 -0
  159. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/el/elements/typography.pyi +0 -0
  160. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/field.py +0 -0
  161. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/gridjs/__init__.py +0 -0
  162. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/gridjs/datatable.py +0 -0
  163. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/gridjs/datatable.pyi +0 -0
  164. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/literals.py +0 -0
  165. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/lucide/__init__.py +0 -0
  166. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/lucide/icon.py +0 -0
  167. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/lucide/icon.pyi +0 -0
  168. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/markdown/__init__.py +0 -0
  169. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/markdown/markdown.py +0 -0
  170. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/markdown/markdown.pyi +0 -0
  171. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/moment/__init__.py +0 -0
  172. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/moment/moment.py +0 -0
  173. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/moment/moment.pyi +0 -0
  174. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/plotly/__init__.py +0 -0
  175. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/plotly/plotly.py +0 -0
  176. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/plotly/plotly.pyi +0 -0
  177. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/props.py +0 -0
  178. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/__init__.py +0 -0
  179. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/__init__.pyi +0 -0
  180. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/__init__.py +0 -0
  181. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  182. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/accordion.py +0 -0
  183. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  184. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/base.py +0 -0
  185. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/base.pyi +0 -0
  186. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/drawer.py +0 -0
  187. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  188. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/form.py +0 -0
  189. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/form.pyi +0 -0
  190. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/progress.py +0 -0
  191. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/progress.pyi +0 -0
  192. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/slider.py +0 -0
  193. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/primitives/slider.pyi +0 -0
  194. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/__init__.py +0 -0
  195. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/__init__.pyi +0 -0
  196. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/base.py +0 -0
  197. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/base.pyi +0 -0
  198. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/color_mode.py +0 -0
  199. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  200. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/__init__.py +0 -0
  201. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  202. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  203. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  204. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  205. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  206. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/avatar.py +0 -0
  207. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  208. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/badge.py +0 -0
  209. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  210. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/button.py +0 -0
  211. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/button.pyi +0 -0
  212. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/callout.py +0 -0
  213. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  214. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/card.py +0 -0
  215. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/card.pyi +0 -0
  216. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  217. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  218. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  219. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  220. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  221. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  222. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  223. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  224. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/data_list.py +0 -0
  225. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  226. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/dialog.py +0 -0
  227. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  228. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  229. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  230. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  231. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  232. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  233. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  234. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/inset.py +0 -0
  235. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  236. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/popover.py +0 -0
  237. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  238. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/progress.py +0 -0
  239. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  240. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio.py +0 -0
  241. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  242. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  243. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  244. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  245. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  246. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  247. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  248. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  249. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  250. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/select.py +0 -0
  251. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/select.pyi +0 -0
  252. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/separator.py +0 -0
  253. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  254. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  255. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  256. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/slider.py +0 -0
  257. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  258. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/spinner.py +0 -0
  259. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  260. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/switch.py +0 -0
  261. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  262. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/table.py +0 -0
  263. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/table.pyi +0 -0
  264. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/tabs.py +0 -0
  265. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  266. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/text_area.py +0 -0
  267. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  268. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/text_field.py +0 -0
  269. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  270. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  271. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  272. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  273. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  274. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/base.py +0 -0
  275. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  276. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/box.py +0 -0
  277. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  278. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/center.py +0 -0
  279. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  280. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/container.py +0 -0
  281. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  282. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/flex.py +0 -0
  283. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  284. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/grid.py +0 -0
  285. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  286. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/list.py +0 -0
  287. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  288. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/section.py +0 -0
  289. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  290. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  291. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  292. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/stack.py +0 -0
  293. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  294. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  295. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  296. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/base.py +0 -0
  297. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  298. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  299. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/code.py +0 -0
  300. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  301. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/heading.py +0 -0
  302. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  303. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/link.py +0 -0
  304. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  305. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/text.py +0 -0
  306. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  307. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/__init__.py +0 -0
  308. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/audio.py +0 -0
  309. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/audio.pyi +0 -0
  310. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/react_player.py +0 -0
  311. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/react_player.pyi +0 -0
  312. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/video.py +0 -0
  313. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/react_player/video.pyi +0 -0
  314. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/__init__.py +0 -0
  315. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/__init__.pyi +0 -0
  316. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/cartesian.py +0 -0
  317. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/cartesian.pyi +0 -0
  318. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/charts.py +0 -0
  319. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/charts.pyi +0 -0
  320. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/general.py +0 -0
  321. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/general.pyi +0 -0
  322. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/polar.py +0 -0
  323. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/polar.pyi +0 -0
  324. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/recharts.py +0 -0
  325. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/recharts/recharts.pyi +0 -0
  326. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/sonner/__init__.py +0 -0
  327. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/sonner/toast.py +0 -0
  328. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/sonner/toast.pyi +0 -0
  329. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/__init__.py +0 -0
  330. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/cond_tag.py +0 -0
  331. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/iter_tag.py +0 -0
  332. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/match_tag.py +0 -0
  333. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/tag.py +0 -0
  334. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/components/tags/tagless.py +0 -0
  335. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/__init__.py +0 -0
  336. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/base.py +0 -0
  337. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/colors.py +0 -0
  338. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/compiler.py +0 -0
  339. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/config.py +0 -0
  340. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/custom_components.py +0 -0
  341. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/event.py +0 -0
  342. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/route.py +0 -0
  343. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/state.py +0 -0
  344. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/constants/utils.py +0 -0
  345. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/custom_components/__init__.py +0 -0
  346. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/custom_components/custom_components.py +0 -0
  347. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/event.py +0 -0
  348. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/experimental/__init__.py +0 -0
  349. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/experimental/client_state.py +0 -0
  350. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/experimental/hooks.py +0 -0
  351. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/__init__.py +0 -0
  352. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/data.py +0 -0
  353. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/dynamic.py +0 -0
  354. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/manager.py +0 -0
  355. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/proxy.py +0 -0
  356. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/storage.py +0 -0
  357. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/istate/wrappers.py +0 -0
  358. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/middleware/__init__.py +0 -0
  359. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/middleware/hydrate_middleware.py +0 -0
  360. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/middleware/middleware.py +0 -0
  361. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/model.py +0 -0
  362. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/page.py +0 -0
  363. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/__init__.py +0 -0
  364. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/base.py +0 -0
  365. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/shared_tailwind.py +0 -0
  366. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/sitemap.py +0 -0
  367. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/tailwind_v3.py +0 -0
  368. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/plugins/tailwind_v4.py +0 -0
  369. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/py.typed +0 -0
  370. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/reflex.py +0 -0
  371. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/route.py +0 -0
  372. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/state.py +0 -0
  373. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/style.py +0 -0
  374. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/testing.py +0 -0
  375. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/__init__.py +0 -0
  376. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/build.py +0 -0
  377. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/codespaces.py +0 -0
  378. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/compat.py +0 -0
  379. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/console.py +0 -0
  380. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/decorator.py +0 -0
  381. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/exceptions.py +0 -0
  382. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/export.py +0 -0
  383. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/format.py +0 -0
  384. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/imports.py +0 -0
  385. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/lazy_loader.py +0 -0
  386. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/net.py +0 -0
  387. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/path_ops.py +0 -0
  388. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/prerequisites.py +0 -0
  389. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/pyi_generator.py +0 -0
  390. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/redir.py +0 -0
  391. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/registry.py +0 -0
  392. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/serializers.py +0 -0
  393. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/telemetry.py +0 -0
  394. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/utils/types.py +0 -0
  395. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/__init__.py +0 -0
  396. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/base.py +0 -0
  397. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/datetime.py +0 -0
  398. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/dep_tracking.py +0 -0
  399. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/function.py +0 -0
  400. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/number.py +0 -0
  401. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/object.py +0 -0
  402. {reflex-0.8.0a6 → reflex-0.8.0.post1}/reflex/vars/sequence.py +0 -0
  403. {reflex-0.8.0a6 → reflex-0.8.0.post1}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.0a6
3
+ Version: 0.8.0.post1
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
@@ -21,7 +21,7 @@ Requires-Python: <4.0,>=3.10
21
21
  Requires-Dist: alembic<2.0,>=1.15.2
22
22
  Requires-Dist: click>=8.2
23
23
  Requires-Dist: fastapi>=0.115.0
24
- Requires-Dist: granian[reload]>=2.2.5
24
+ Requires-Dist: granian[reload]>=2.4.0
25
25
  Requires-Dist: httpx<1.0,>=0.28.0
26
26
  Requires-Dist: jinja2<4.0,>=3.1.2
27
27
  Requires-Dist: packaging<26,>=24.2
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.0a6"
3
+ version = "0.8.0post1"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -22,7 +22,7 @@ requires-python = ">=3.10,<4.0"
22
22
  dependencies = [
23
23
  "alembic >=1.15.2,<2.0",
24
24
  "fastapi >=0.115.0",
25
- "granian[reload] >=2.2.5",
25
+ "granian[reload] >=2.4.0",
26
26
  "httpx >=0.28.0,<1.0",
27
27
  "jinja2 >=3.1.2,<4.0",
28
28
  "packaging >=24.2,<26",
@@ -0,0 +1,160 @@
1
+ /* vite-plugin-safari-cachebust.js
2
+ *
3
+ * Rewrite modulepreload <link> tags and ESM imports to include a cache-busting
4
+ * query parameter for Safari browser.
5
+ *
6
+ * https://github.com/remix-run/react-router/issues/12761
7
+ *
8
+ * The issue seems to be Safari over-aggressive caching of ESM imports (and modulepreload)
9
+ * which does not respect the cache-control headers sent by the server. This approach
10
+ * allows hot reload to work in Safari when adding routes or changing dependencies.
11
+ *
12
+ * No equivalent transformation is needed for production builds, as the
13
+ * output already contains the file hash in the name.
14
+ */
15
+
16
+ /**
17
+ * @typedef {import('vite').Plugin} Plugin
18
+ * @typedef {import('vite').ViteDevServer} ViteDevServer
19
+ * @typedef {import('http').IncomingMessage} IncomingMessage
20
+ * @typedef {import('http').ServerResponse} ServerResponse
21
+ * @typedef {import('connect').NextHandleFunction} NextHandleFunction
22
+ */
23
+
24
+ const pluginName = "vite-plugin-safari-cachebust";
25
+
26
+ /**
27
+ * Creates a Vite plugin that adds cache-busting for Safari browsers
28
+ * @returns {Plugin} The Vite plugin
29
+ */
30
+ export default function safariCacheBustPlugin() {
31
+ return {
32
+ name: pluginName,
33
+ /**
34
+ * Configure the dev server with the Safari middleware
35
+ * @param {ViteDevServer} server - The Vite dev server instance
36
+ */
37
+ configureServer(server) {
38
+ server.middlewares.use(createSafariMiddleware());
39
+ },
40
+ };
41
+ }
42
+
43
+ /**
44
+ * Determines if the user agent is Safari
45
+ * @param {string} ua - The user agent string
46
+ * @returns {boolean} True if the browser is Safari
47
+ */
48
+ function isSafari(ua) {
49
+ return /Safari/.test(ua) && !/Chrome/.test(ua);
50
+ }
51
+
52
+ /**
53
+ * Creates a middleware that adds cache-busting for Safari browsers
54
+ * @returns {NextHandleFunction} The middleware function
55
+ */
56
+ function createSafariMiddleware() {
57
+ // Set when a log message for rewriting n links has been emitted.
58
+ let _have_logged_n = -1;
59
+
60
+ /**
61
+ * Rewrites module import links in HTML content with cache-busting parameters
62
+ * @param {string} html - The HTML content to process
63
+ * @returns {string} The processed HTML content
64
+ */
65
+ function rewriteModuleImports(html) {
66
+ const currentTimestamp = new Date().getTime();
67
+ const parts = html.split(/(<link\s+rel="modulepreload"[^>]*>)/g);
68
+ /** @type {[string, string][]} */
69
+ const replacements = parts
70
+ .map((chunk) => {
71
+ const match = chunk.match(
72
+ /<link\s+rel="modulepreload"\s+href="([^"]+)"(.*?)\/?>/,
73
+ );
74
+ if (!match) return;
75
+
76
+ const [fullMatch, href, rest] = match;
77
+ if (/^(https?:)?\/\//.test(href)) return;
78
+
79
+ try {
80
+ const newHref = href.includes("?")
81
+ ? `${href}&__reflex_ts=${currentTimestamp}`
82
+ : `${href}?__reflex_ts=${currentTimestamp}`;
83
+ return [href, newHref];
84
+ } catch {
85
+ // no worries;
86
+ }
87
+ })
88
+ .filter(Boolean);
89
+ if (replacements.length && _have_logged_n !== replacements.length) {
90
+ _have_logged_n = replacements.length;
91
+ console.debug(
92
+ `[${pluginName}] Rewrote ${replacements.length} modulepreload links with __reflex_ts param.`,
93
+ );
94
+ }
95
+ return replacements.reduce((accumulator, [target, replacement]) => {
96
+ return accumulator.split(target).join(replacement);
97
+ }, html);
98
+ }
99
+
100
+ /**
101
+ * Middleware function to handle Safari cache busting
102
+ * @param {IncomingMessage} req - The incoming request
103
+ * @param {ServerResponse} res - The server response
104
+ * @param {(err?: any) => void} next - The next middleware function
105
+ * @returns {void}
106
+ */
107
+ return function safariCacheBustMiddleware(req, res, next) {
108
+ const ua = req.headers["user-agent"] || "";
109
+ // Remove our special cache bust query param to avoid affecting lower middleware layers.
110
+ if (
111
+ req.url &&
112
+ (req.url.includes("?__reflex_ts=") || req.url.includes("&__reflex_ts="))
113
+ ) {
114
+ req.url = req.url.replace(/(\?|&)__reflex_ts=\d+/, "");
115
+ return next();
116
+ }
117
+
118
+ // Only apply this middleware for Safari browsers.
119
+ if (!isSafari(ua)) return next();
120
+
121
+ // Only transform requests that want HTML.
122
+ const header_accept = req.headers["accept"] || "";
123
+ if (
124
+ typeof header_accept !== "string" ||
125
+ !header_accept.includes("text/html")
126
+ ) {
127
+ return next();
128
+ }
129
+
130
+ let buffer = "";
131
+ const _end = res.end.bind(res);
132
+
133
+ res.setHeader("x-modified-by", "vite-plugin-safari-cachebust");
134
+ /**
135
+ * Overridden write method to collect chunks
136
+ * @param {any} chunk - The chunk to write
137
+ * @param {...any} args - Additional arguments
138
+ * @returns {boolean} Result of the write operation
139
+ */
140
+ res.write = function (chunk, ...args) {
141
+ buffer += chunk instanceof Buffer ? chunk.toString("utf-8") : chunk;
142
+ return true;
143
+ };
144
+
145
+ /**
146
+ * Overridden end method to process and send the final response
147
+ * @param {any} chunk - The final chunk to write
148
+ * @param {...any} args - Additional arguments
149
+ * @returns {ServerResponse<IncomingMessage>} The server response
150
+ */
151
+ res.end = function (chunk, ...args) {
152
+ if (chunk) {
153
+ buffer += chunk instanceof Buffer ? chunk.toString("utf-8") : chunk;
154
+ }
155
+ buffer = rewriteModuleImports(buffer);
156
+ return _end(buffer, ...args);
157
+ };
158
+ return next();
159
+ };
160
+ }
@@ -1,9 +1,10 @@
1
1
  import { fileURLToPath, URL } from "url";
2
2
  import { reactRouter } from "@react-router/dev/vite";
3
3
  import { defineConfig } from "vite";
4
+ import safariCacheBustPlugin from "./vite-plugin-safari-cachebust";
4
5
 
5
6
  export default defineConfig((config) => ({
6
- plugins: [reactRouter()],
7
+ plugins: [reactRouter(), safariCacheBustPlugin()],
7
8
  build: {
8
9
  rollupOptions: {
9
10
  jsx: {},
@@ -19,7 +19,12 @@ from reflex.base import Base
19
19
  from reflex.constants.base import LogLevel
20
20
  from reflex.environment import EnvironmentVariables as EnvironmentVariables
21
21
  from reflex.environment import EnvVar as EnvVar
22
- from reflex.environment import ExistingPath, interpret_env_var_value
22
+ from reflex.environment import (
23
+ ExistingPath,
24
+ _load_dotenv_from_files,
25
+ _paths_from_env_files,
26
+ interpret_env_var_value,
27
+ )
23
28
  from reflex.environment import env_var as env_var
24
29
  from reflex.environment import environment as environment
25
30
  from reflex.plugins import Plugin
@@ -27,40 +32,6 @@ from reflex.utils import console
27
32
  from reflex.utils.exceptions import ConfigError
28
33
  from reflex.utils.types import true_type_for_pydantic_field
29
34
 
30
- try:
31
- from dotenv import load_dotenv
32
- except ImportError:
33
- load_dotenv = None
34
-
35
-
36
- def _load_dotenv_from_str(env_files: str) -> None:
37
- if not env_files:
38
- return
39
-
40
- if load_dotenv is None:
41
- console.error(
42
- """The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.1.0"`."""
43
- )
44
- return
45
-
46
- # load env files in reverse order if they exist
47
- for env_file_path in [
48
- Path(p) for s in reversed(env_files.split(os.pathsep)) if (p := s.strip())
49
- ]:
50
- if env_file_path.exists():
51
- load_dotenv(env_file_path, override=True)
52
-
53
-
54
- def _load_dotenv_from_env():
55
- """Load environment variables from paths specified in REFLEX_ENV_FILE."""
56
- env_env_file = os.environ.get("REFLEX_ENV_FILE")
57
- if env_env_file:
58
- _load_dotenv_from_str(env_env_file)
59
-
60
-
61
- # Load the env files at import time if they are set in the ENV_FILE environment variable.
62
- _load_dotenv_from_env()
63
-
64
35
 
65
36
  class DBConfig(Base):
66
37
  """Database config."""
@@ -358,7 +329,7 @@ class Config(Base):
358
329
  The updated config values.
359
330
  """
360
331
  if self.env_file:
361
- _load_dotenv_from_str(self.env_file)
332
+ _load_dotenv_from_files(_paths_from_env_files(self.env_file))
362
333
 
363
334
  updated_values = {}
364
335
  # Iterate over the fields.
@@ -149,4 +149,5 @@ class PackageJson(SimpleNamespace):
149
149
  # This should always match the `react` version in DEPENDENCIES for recharts compatibility.
150
150
  "react-is": _react_version,
151
151
  "cookie": "1.0.2",
152
+ "rollup": "4.44.2",
152
153
  }
@@ -606,3 +606,73 @@ class EnvironmentVariables:
606
606
 
607
607
 
608
608
  environment = EnvironmentVariables()
609
+
610
+ try:
611
+ from dotenv import load_dotenv
612
+ except ImportError:
613
+ load_dotenv = None
614
+
615
+
616
+ def _paths_from_env_files(env_files: str) -> list[Path]:
617
+ """Convert a string of paths separated by os.pathsep into a list of Path objects.
618
+
619
+ Args:
620
+ env_files: The string of paths.
621
+
622
+ Returns:
623
+ A list of Path objects.
624
+ """
625
+ # load env files in reverse order
626
+ return list(
627
+ reversed(
628
+ [
629
+ Path(path)
630
+ for path_element in env_files.split(os.pathsep)
631
+ if (path := path_element.strip())
632
+ ]
633
+ )
634
+ )
635
+
636
+
637
+ def _load_dotenv_from_files(files: list[Path]):
638
+ """Load environment variables from a list of files.
639
+
640
+ Args:
641
+ files: A list of Path objects representing the environment variable files.
642
+ """
643
+ from reflex.utils import console
644
+
645
+ if not files:
646
+ return
647
+
648
+ if load_dotenv is None:
649
+ console.error(
650
+ """The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.1.0"`."""
651
+ )
652
+ return
653
+
654
+ for env_file in files:
655
+ if env_file.exists():
656
+ load_dotenv(env_file, override=True)
657
+
658
+
659
+ def _paths_from_environment() -> list[Path]:
660
+ """Get the paths from the REFLEX_ENV_FILE environment variable.
661
+
662
+ Returns:
663
+ A list of Path objects.
664
+ """
665
+ env_files = os.environ.get("REFLEX_ENV_FILE")
666
+ if not env_files:
667
+ return []
668
+
669
+ return _paths_from_env_files(env_files)
670
+
671
+
672
+ def _load_dotenv_from_env():
673
+ """Load environment variables from paths specified in REFLEX_ENV_FILE."""
674
+ _load_dotenv_from_files(_paths_from_environment())
675
+
676
+
677
+ # Load the env files at import time if they are set in the ENV_FILE environment variable.
678
+ _load_dotenv_from_env()
@@ -519,9 +519,11 @@ def run_granian_backend(host: str, port: int, loglevel: LogLevel):
519
519
 
520
520
  from granian.constants import Interfaces
521
521
  from granian.log import LogLevels
522
- from granian.server import MPServer as Granian
522
+ from granian.server import Server as Granian
523
523
 
524
- Granian(
524
+ from reflex.environment import _paths_from_environment
525
+
526
+ granian_app = Granian(
525
527
  target=get_app_instance_from_file(),
526
528
  factory=True,
527
529
  address=host,
@@ -533,8 +535,11 @@ def run_granian_backend(host: str, port: int, loglevel: LogLevel):
533
535
  reload_ignore_worker_failure=True,
534
536
  reload_ignore_patterns=HOTRELOAD_IGNORE_PATTERNS,
535
537
  reload_tick=100,
538
+ env_files=_paths_from_environment() or None,
536
539
  workers_kill_timeout=2,
537
- ).serve()
540
+ )
541
+
542
+ granian_app.serve()
538
543
 
539
544
 
540
545
  def run_backend_prod(
@@ -31,14 +31,13 @@ def get_module_path(module_name: str) -> Path | None:
31
31
  for i, part in enumerate(parts):
32
32
  potential_file = current_path / (part + ".py")
33
33
  potential_dir = current_path / part
34
- potential_init = current_path / part / "__init__.py"
35
34
 
36
35
  if potential_file.is_file():
37
36
  # We encountered a file, but we can't continue deeper
38
37
  if i == len(parts) - 1:
39
38
  return potential_file
40
39
  return None # Can't continue deeper
41
- if potential_dir.is_dir() and potential_init.is_file():
40
+ if potential_dir.is_dir():
42
41
  # It's a package, so we can continue deeper
43
42
  current_path = potential_dir
44
43
  else:
@@ -15,6 +15,7 @@ from pathlib import Path
15
15
  from typing import Any, Literal, overload
16
16
 
17
17
  import click
18
+ import rich.markup
18
19
  from redis.exceptions import RedisError
19
20
  from rich.progress import Progress
20
21
 
@@ -61,8 +62,16 @@ def is_process_on_port(port: int) -> bool:
61
62
  Returns:
62
63
  Whether a process is running on the given port.
63
64
  """
65
+ # Test IPv4 localhost (127.0.0.1)
64
66
  with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
65
- return sock.connect_ex(("127.0.0.1", port)) == 0
67
+ ipv4_result = sock.connect_ex(("127.0.0.1", port)) == 0
68
+
69
+ # Test IPv6 localhost (::1)
70
+ with closing(socket.socket(socket.AF_INET6, socket.SOCK_STREAM)) as sock:
71
+ ipv6_result = sock.connect_ex(("::1", port)) == 0
72
+
73
+ # Port is in use if either IPv4 or IPv6 is listening
74
+ return ipv4_result or ipv6_result
66
75
 
67
76
 
68
77
  def change_port(port: int, _type: str) -> int:
@@ -273,7 +282,7 @@ def stream_logs(
273
282
  return
274
283
  try:
275
284
  for line in process.stdout:
276
- console.debug(line, end="", progress=progress)
285
+ console.debug(rich.markup.escape(line), end="", progress=progress)
277
286
  logs.append(line)
278
287
  yield line
279
288
  except ValueError:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes