reflex 0.7.12a1__py3-none-any.whl → 0.7.13a1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (50) hide show
  1. reflex/.templates/jinja/app/rxconfig.py.jinja2 +1 -0
  2. reflex/.templates/web/postcss.config.js +0 -1
  3. reflex/.templates/web/utils/state.js +1 -1
  4. reflex/__init__.py +1 -0
  5. reflex/__init__.pyi +1 -0
  6. reflex/app.py +87 -27
  7. reflex/compiler/compiler.py +11 -62
  8. reflex/compiler/templates.py +12 -3
  9. reflex/compiler/utils.py +20 -4
  10. reflex/components/component.py +366 -88
  11. reflex/components/datadisplay/code.py +1 -1
  12. reflex/components/datadisplay/shiki_code_block.py +97 -86
  13. reflex/components/datadisplay/shiki_code_block.pyi +4 -2
  14. reflex/components/el/elements/forms.py +1 -1
  15. reflex/components/lucide/icon.py +2 -1
  16. reflex/components/lucide/icon.pyi +1 -0
  17. reflex/components/plotly/plotly.py +2 -2
  18. reflex/components/plotly/plotly.pyi +2 -3
  19. reflex/components/radix/themes/base.py +4 -11
  20. reflex/components/radix/themes/components/icon_button.py +2 -2
  21. reflex/components/radix/themes/components/text_field.py +3 -0
  22. reflex/components/radix/themes/components/text_field.pyi +2 -0
  23. reflex/components/radix/themes/layout/list.py +1 -1
  24. reflex/components/tags/iter_tag.py +3 -5
  25. reflex/config.py +57 -7
  26. reflex/constants/__init__.py +0 -2
  27. reflex/event.py +154 -93
  28. reflex/plugins/__init__.py +7 -0
  29. reflex/plugins/base.py +101 -0
  30. reflex/plugins/tailwind_v3.py +255 -0
  31. reflex/plugins/tailwind_v4.py +257 -0
  32. reflex/state.py +24 -3
  33. reflex/utils/build.py +1 -1
  34. reflex/utils/console.py +1 -1
  35. reflex/utils/exec.py +23 -0
  36. reflex/utils/path_ops.py +26 -6
  37. reflex/utils/prerequisites.py +21 -90
  38. reflex/utils/pyi_generator.py +12 -2
  39. reflex/utils/types.py +15 -1
  40. reflex/vars/base.py +59 -4
  41. reflex/vars/object.py +8 -0
  42. {reflex-0.7.12a1.dist-info → reflex-0.7.13a1.dist-info}/METADATA +2 -2
  43. {reflex-0.7.12a1.dist-info → reflex-0.7.13a1.dist-info}/RECORD +47 -46
  44. scripts/hatch_build.py +17 -0
  45. reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -66
  46. reflex/.templates/web/styles/tailwind.css +0 -6
  47. reflex/constants/style.py +0 -16
  48. {reflex-0.7.12a1.dist-info → reflex-0.7.13a1.dist-info}/WHEEL +0 -0
  49. {reflex-0.7.12a1.dist-info → reflex-0.7.13a1.dist-info}/entry_points.txt +0 -0
  50. {reflex-0.7.12a1.dist-info → reflex-0.7.13a1.dist-info}/licenses/LICENSE +0 -0
reflex/vars/base.py CHANGED
@@ -88,6 +88,12 @@ SEQUENCE_TYPE = TypeVar("SEQUENCE_TYPE", bound=Sequence)
88
88
 
89
89
  warnings.filterwarnings("ignore", message="fields may not start with an underscore")
90
90
 
91
+ _PYDANTIC_VALIDATE_VALUES = "__pydantic_validate_values__"
92
+
93
+
94
+ def _pydantic_validator(*args, **kwargs):
95
+ return None
96
+
91
97
 
92
98
  @dataclasses.dataclass(
93
99
  eq=False,
@@ -233,11 +239,11 @@ class VarData:
233
239
  deps = [dep for var_data in all_var_datas for dep in var_data.deps]
234
240
 
235
241
  positions = list(
236
- {
242
+ dict.fromkeys(
237
243
  var_data.position
238
244
  for var_data in all_var_datas
239
245
  if var_data.position is not None
240
- }
246
+ )
241
247
  )
242
248
  if positions:
243
249
  if len(positions) > 1:
@@ -363,11 +369,26 @@ def can_use_in_object_var(cls: GenericType) -> bool:
363
369
  )
364
370
 
365
371
 
372
+ class MetaclassVar(type):
373
+ """Metaclass for the Var class."""
374
+
375
+ def __setattr__(cls, name: str, value: Any):
376
+ """Set an attribute on the class.
377
+
378
+ Args:
379
+ name: The name of the attribute.
380
+ value: The value of the attribute.
381
+ """
382
+ super().__setattr__(
383
+ name, value if name != _PYDANTIC_VALIDATE_VALUES else _pydantic_validator
384
+ )
385
+
386
+
366
387
  @dataclasses.dataclass(
367
388
  eq=False,
368
389
  frozen=True,
369
390
  )
370
- class Var(Generic[VAR_TYPE]):
391
+ class Var(Generic[VAR_TYPE], metaclass=MetaclassVar):
371
392
  """Base class for immutable vars."""
372
393
 
373
394
  # The name of the var.
@@ -2694,6 +2715,27 @@ if TYPE_CHECKING:
2694
2715
  BASE_STATE = TypeVar("BASE_STATE", bound=BaseState)
2695
2716
 
2696
2717
 
2718
+ class _ComputedVarDecorator(Protocol):
2719
+ """A protocol for the ComputedVar decorator."""
2720
+
2721
+ @overload
2722
+ def __call__(
2723
+ self,
2724
+ fget: Callable[[BASE_STATE], Coroutine[Any, Any, RETURN_TYPE]],
2725
+ ) -> AsyncComputedVar[RETURN_TYPE]: ...
2726
+
2727
+ @overload
2728
+ def __call__(
2729
+ self,
2730
+ fget: Callable[[BASE_STATE], RETURN_TYPE],
2731
+ ) -> ComputedVar[RETURN_TYPE]: ...
2732
+
2733
+ def __call__(
2734
+ self,
2735
+ fget: Callable[[BASE_STATE], Any],
2736
+ ) -> ComputedVar[Any]: ...
2737
+
2738
+
2697
2739
  @overload
2698
2740
  def computed_var(
2699
2741
  fget: None = None,
@@ -2704,7 +2746,20 @@ def computed_var(
2704
2746
  interval: datetime.timedelta | int | None = None,
2705
2747
  backend: bool | None = None,
2706
2748
  **kwargs,
2707
- ) -> Callable[[Callable[[BASE_STATE], RETURN_TYPE]], ComputedVar[RETURN_TYPE]]: ... # pyright: ignore [reportInvalidTypeVarUse]
2749
+ ) -> _ComputedVarDecorator: ...
2750
+
2751
+
2752
+ @overload
2753
+ def computed_var(
2754
+ fget: Callable[[BASE_STATE], Coroutine[Any, Any, RETURN_TYPE]],
2755
+ initial_value: RETURN_TYPE | types.Unset = types.Unset(),
2756
+ cache: bool = True,
2757
+ deps: list[str | Var] | None = None,
2758
+ auto_deps: bool = True,
2759
+ interval: datetime.timedelta | int | None = None,
2760
+ backend: bool | None = None,
2761
+ **kwargs,
2762
+ ) -> AsyncComputedVar[RETURN_TYPE]: ...
2708
2763
 
2709
2764
 
2710
2765
  @overload
reflex/vars/object.py CHANGED
@@ -144,6 +144,14 @@ class ObjectVar(Var[OBJECT_TYPE], python_types=Mapping):
144
144
 
145
145
  items = entries
146
146
 
147
+ def length(self) -> NumberVar[int]:
148
+ """Get the length of the object.
149
+
150
+ Returns:
151
+ The length of the object.
152
+ """
153
+ return self.keys().length()
154
+
147
155
  def merge(self, other: ObjectVar):
148
156
  """Merge two objects.
149
157
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.12a1
3
+ Version: 0.7.13a1
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
@@ -30,7 +30,7 @@ Requires-Dist: psutil<8.0,>=7.0.0
30
30
  Requires-Dist: pydantic<3.0,>=1.10.21
31
31
  Requires-Dist: python-multipart<1.0,>=0.0.20
32
32
  Requires-Dist: python-socketio<6.0,>=5.12.0
33
- Requires-Dist: redis<6.0,>=5.2.1
33
+ Requires-Dist: redis<7.0,>=5.2.1
34
34
  Requires-Dist: reflex-hosting-cli>=0.1.47
35
35
  Requires-Dist: rich<15,>=13
36
36
  Requires-Dist: sqlmodel<0.1,>=0.0.24
@@ -1,31 +1,30 @@
1
- reflex/__init__.py,sha256=viEt38jc1skwOUBwwlwPL02hcGrm9xNQzKExVftZEx4,10365
2
- reflex/__init__.pyi,sha256=h9ltlhaz1dySsNYpUkN_VCjEzHGfb1h18ThYh15QjyU,11358
1
+ reflex/__init__.py,sha256=wMrUAcxHI0Th4EwHIVm9G5zT-zNgO1JX6yWejx0IvvQ,10380
2
+ reflex/__init__.pyi,sha256=SDnppfexuPej7E5zD2fHKq1gppvvZHBUqqS0tX2Wj-g,11391
3
3
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
4
4
  reflex/admin.py,sha256=Nbc38y-M8iaRBvh1W6DQu_D3kEhO8JFvxrog4q2cB_E,434
5
- reflex/app.py,sha256=HBIynH7dEvNVoW6ETQmWg-EeI0OibAtBcu1fOhmLj7U,73964
5
+ reflex/app.py,sha256=de4vRDZuPx8mMUP6Iaz2-ZMPYF-9iNDDYER9vf1VID8,76426
6
6
  reflex/assets.py,sha256=PLTKAMYPKMZq8eWXKX8uco6NZ9IiPGWal0bOPLUmU7k,3364
7
7
  reflex/base.py,sha256=U7i_ijkbSLUDm1TlTYYZEm5P6ZiVO1aIT1MJKXO6V1o,3881
8
- reflex/config.py,sha256=AT8IfbScDY7hrZHwpJDMDlGKxpiYkGPjxCVjIaCSa98,35594
9
- reflex/event.py,sha256=Xk7AI976Mjjqd7h8mky2-WdF-HDJM1PEtYmUfNi46oQ,65045
8
+ reflex/config.py,sha256=JCO8MAHbv7YkTFVPMTLb6qwAkQUssJfUMIm-ih3z3ds,37760
9
+ reflex/event.py,sha256=iNLfsA1JdppsX9vqh0u0YT0c1JPh_46soSYpg4k3S2U,66897
10
10
  reflex/model.py,sha256=eOWc157txBIUmYMZqQeKKdn2dm4Tsf8h8CbqeLXvjeg,17577
11
11
  reflex/page.py,sha256=mqioadLDsABvfNqdLbxvUKqi1gulSKddMihZe3pjtdc,2678
12
12
  reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  reflex/reflex.py,sha256=LtcCxgPkGkE6CrJjyBAr77h1IpQTfuxrrIyPvVUE1I8,21652
14
14
  reflex/route.py,sha256=nn_hJwtQdjiqH_dHXfqMGWKllnyPQZTSR-KWdHDhoOs,4210
15
- reflex/state.py,sha256=OKbhcFVNNtNsL6e7Z3IUC5D4zHqQKbuaE31fjcmHSUA,90195
15
+ reflex/state.py,sha256=QQDoC91fKHn6eOdzC-2iaNV3W-v0b9I81eip2V2vmR4,90727
16
16
  reflex/style.py,sha256=8ciwcReoKSrPSwoteXJwv7YTK514tf7jrJ5RfqztmvA,13186
17
17
  reflex/testing.py,sha256=XdPGNECAQxJG5txIwlT6UXQoSIgHssGL4jtZgWJKWLY,36301
18
18
  reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
19
19
  reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  reflex/.templates/apps/blank/code/blank.py,sha256=oKnsBBZM1-_RFAuwGKgfiCzgsrHlN_m_XP0-Fpnld7k,926
21
- reflex/.templates/jinja/app/rxconfig.py.jinja2,sha256=Scfnv_vZXIPQcz8zNIa4FmjEym1U5VMMWX4lryUMi10,74
21
+ reflex/.templates/jinja/app/rxconfig.py.jinja2,sha256=WjP8Yqcz7UAAB3PPbOZRG7YW3Os2n46pgNWEMi1Nox4,119
22
22
  reflex/.templates/jinja/custom_components/README.md.jinja2,sha256=qA4XZDxOTc2gRIG7CO1VvVawOgThwZqU2RZvRTPhXwE,127
23
23
  reflex/.templates/jinja/custom_components/__init__.py.jinja2,sha256=z5n2tvoS7iNDaM6mUGKETdpGlC0oA1_rrYURu7O_xpk,32
24
24
  reflex/.templates/jinja/custom_components/demo_app.py.jinja2,sha256=ipbKtObNqQLcwbFowod_bSWW4bttW_8bNyTXl7JL1zg,826
25
25
  reflex/.templates/jinja/custom_components/pyproject.toml.jinja2,sha256=HG-k3pruUlMy7xYz339hgFkNMTLqB-C_FTLKkOgfBPM,630
26
26
  reflex/.templates/jinja/custom_components/src.py.jinja2,sha256=e80PwMI6NoeQtGJ0NXWhYrkqUe7jvvJTFuztYQe-R5w,2403
27
27
  reflex/.templates/jinja/web/package.json.jinja2,sha256=Dyg7DbKaEgxUoaV_DUsv_bHcT0h1mXKgO4R_pVzlHQw,707
28
- reflex/.templates/jinja/web/tailwind.config.js.jinja2,sha256=oHjAp0P-lzl5GLuXlk87JQw6NoDZr3yIn1Bm8O1Vf5Q,2293
29
28
  reflex/.templates/jinja/web/pages/_app.js.jinja2,sha256=8vfyoxj0ulu7ADt4aM0ik_u5YUZum1Uxdt4j0fFj9BI,1332
30
29
  reflex/.templates/jinja/web/pages/_document.js.jinja2,sha256=LMzcXhQMR8RemQ_BDNADUPayIYBScHB8W8n06-jeqjQ,166
31
30
  reflex/.templates/jinja/web/pages/base_page.js.jinja2,sha256=-Jykv29ZqzsQyyRe_iR2gUD5ac-X5RhDrGs0-diOMOA,400
@@ -42,12 +41,11 @@ reflex/.templates/jinja/web/utils/theme.js.jinja2,sha256=OSpBMh0Z9tTeqb10js4ZtnE
42
41
  reflex/.templates/web/.gitignore,sha256=3tT0CtVkCL09D_Y3Hd4myUgGcBuESeavCa0WHU5ifJ4,417
43
42
  reflex/.templates/web/jsconfig.json,sha256=rhQZZRBYxBWclFYTeU6UakzbGveM4qyRQZUpEAVhyqY,118
44
43
  reflex/.templates/web/next.config.js,sha256=ZpGOqo9wHEbt0S08G70VfUNUjFe79UXo7Cde8X8V10E,118
45
- reflex/.templates/web/postcss.config.js,sha256=pWczoUW-Y0gYUuHAW4ZK0hQNWTcMC2UGu2i-sQ-YqUs,109
44
+ reflex/.templates/web/postcss.config.js,sha256=Ci60FwzThCR5bpVPLxj_-caGhJXEJcQ_CHD1ljnR4R4,88
46
45
  reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js,sha256=G-g5gwpbGegMSWo64LIT76OSHaxLMv-V68nP0cockks,1844
47
46
  reflex/.templates/web/components/shiki/code.js,sha256=4Es1pxsr-lX4hTQ5mglrwwC6O_SI-z-O60k03z8VFzQ,1144
48
- reflex/.templates/web/styles/tailwind.css,sha256=wGOoICTy1G0e5bWZ4LYOVgRa3ZT7M44tC4g6CKh6ZPo,112
49
47
  reflex/.templates/web/utils/client_side_routing.js,sha256=cOu4wUHDQtGl1yo5goxljZ94SLZLyr9R3S9Rehcvjio,1475
50
- reflex/.templates/web/utils/state.js,sha256=IOA9QGupgpViVCn1gVmLiNPEi_oXdQIT73qm_0y3xgo,31493
48
+ reflex/.templates/web/utils/state.js,sha256=4Fw-hIYojYRs1W_Welud_1bwAjur0lUoYZ9gHKme68c,31508
51
49
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=pG6MgsHuStDR7-qPipzfiK32j9bKDBa-4hZ0JSUo4JM,1623
52
50
  reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseLgQVk-DW-eFiHJYO9As,528
53
51
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
@@ -58,12 +56,12 @@ reflex/app_mixins/lifespan.py,sha256=b8jTlg7WyaUw4QIujcmJBXAnVBW8Uoi6l7qgWNLjUD0
58
56
  reflex/app_mixins/middleware.py,sha256=3OTCEF0rjhd2yTSMCS7wi7J50BxZ8ztCg5K7zfdehhs,2828
59
57
  reflex/app_mixins/mixin.py,sha256=si0Pa0U1EtJc-a6iZntqU9B7_NrPILwrGFxk9mKHBCE,317
60
58
  reflex/compiler/__init__.py,sha256=r8jqmDSFf09iV2lHlNhfc9XrTLjNxfDNwPYlxS4cmHE,27
61
- reflex/compiler/compiler.py,sha256=Ae3C2CnDl4EJRQZtMmXy2z9uGSsiQtsjGa95TEegKeU,28690
62
- reflex/compiler/templates.py,sha256=NX3YUMVGGyDsy2JuDv-AmklMM0pKJHLPsIpdqamgqRQ,5854
63
- reflex/compiler/utils.py,sha256=nFkAyJK0anKVdknQMSsmB9z0FnsZIr4myl5s0qXvPHI,16067
59
+ reflex/compiler/compiler.py,sha256=6vU02LfL9flLiViMNR6lfYuPzNNXk4hJFg6wgLCASEg,27593
60
+ reflex/compiler/templates.py,sha256=SKFIJtL_ozEvEHhiMj34tBwBN1CWSYy_-VzlojZMG44,6015
61
+ reflex/compiler/utils.py,sha256=l5ASvyd_bBvzvwwAZf3wvm0jeR8k_Qp8kprIEy5BPt8,16483
64
62
  reflex/components/__init__.py,sha256=zbIXThv1WPI0FdIGf9G9RAmGoCRoGy7nHcSZ8K5D5bA,624
65
63
  reflex/components/__init__.pyi,sha256=qoj1zIWaitcZOGcJ6k7wuGJk_GAJCE9Xtx8CeRVrvoE,861
66
- reflex/components/component.py,sha256=mJFo-j4onl8Dvl-_8IG3Ic5q3mr-eXzAqWkEyzpAAnU,89779
64
+ reflex/components/component.py,sha256=mtKzyhu9bnMVotki6-VHjrjIS5Un_QAayc9rPBKQPgs,98490
67
65
  reflex/components/dynamic.py,sha256=HKeesVZtz8_d-4I9VU0NQaXZrnSstQzGItu8XgWHkCI,7408
68
66
  reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
69
67
  reflex/components/props.py,sha256=8F2ZNeF16BDiTh-E4F-U_vks41BMJgmkTM7xbjGvfOA,2593
@@ -117,13 +115,13 @@ reflex/components/core/upload.pyi,sha256=9TSnbrV-mazcZvSrNylOmLlF1aO6XkYqeUrhMpe
117
115
  reflex/components/core/layout/__init__.py,sha256=znldZaj_NGt8qCZDG70GMwjMTskcvCf_2N_EjCAHwdc,30
118
116
  reflex/components/datadisplay/__init__.py,sha256=L8pWWKNHWdUD2fbZRoEKjd_8c_hpDdGYO463hwkoIi4,438
119
117
  reflex/components/datadisplay/__init__.pyi,sha256=rYMwO_X4NvUex6IL2MMTnhdFRp8Lz5zweMwXaW_l7nc,588
120
- reflex/components/datadisplay/code.py,sha256=5tO--QgPJj3-hBNjQ3SGNgLYpjBwTwtOUnWM5oLU4Kg,14674
118
+ reflex/components/datadisplay/code.py,sha256=3oyFRSiDWerzofpNTkBQLpGHNvYvQkGGw0UcCcXgVU4,14684
121
119
  reflex/components/datadisplay/code.pyi,sha256=G-0bUnhe5WLDGm-q4a7bKPVFhGh5B7tTKxwGt2wcUxs,41417
122
120
  reflex/components/datadisplay/dataeditor.py,sha256=Y1zWMVF-nZARx5jk8ayuOU6bdDAvwjVn3N62JtGDeQA,13550
123
121
  reflex/components/datadisplay/dataeditor.pyi,sha256=QmMm1Leg_6V5L1GwCCHb_1Ry9UH7nTisTt3c2GI9ZbE,12227
124
122
  reflex/components/datadisplay/logo.py,sha256=5YeXXIg19jJdY-KMP1_WJNmrh0oVSy4axy8Pbp275es,1981
125
- reflex/components/datadisplay/shiki_code_block.py,sha256=hC-12e_0Lmm5Mrt2GeUyevSNwvieDRsUSbV330fp6Zg,23752
126
- reflex/components/datadisplay/shiki_code_block.pyi,sha256=x8mLCfsjzGM9fgz9yh688ESzICKl4I99Y6UsjC3IyLE,56936
123
+ reflex/components/datadisplay/shiki_code_block.py,sha256=uAe7ry1Jfd0dfa1xC-b9BR16yYN1xhkOcLz4q6jzXto,24414
124
+ reflex/components/datadisplay/shiki_code_block.pyi,sha256=L85grVoLgnU1gKUoC-GXzd1mdnybNK5fR_PzOtAUL4U,56985
127
125
  reflex/components/el/__init__.py,sha256=nfIjf_cyieEmxptKjA6wRjoongswXv4X3n6vDmsdarI,416
128
126
  reflex/components/el/__init__.pyi,sha256=cnMxw2_gNMZoDCEuglf04M-jRjupFzTnoKf0s7szIqU,10898
129
127
  reflex/components/el/element.py,sha256=stGVO6A2waCHq2CGQqR_g798hDKkuSZerwB0tYfZpRE,582
@@ -136,7 +134,7 @@ reflex/components/el/elements/__init__.py,sha256=Ocexkpl7YRpdpL6YPsG_QgxYWO0dx1g
136
134
  reflex/components/el/elements/__init__.pyi,sha256=uuwnUtPo4hPTByt8qzbdZT-_cOSPiTTaw5BXN2H2kpM,11129
137
135
  reflex/components/el/elements/base.py,sha256=4jnwyCQUHvWcIfwiIWVCiIC_jbwZlkAiOgx73t7tdw8,3075
138
136
  reflex/components/el/elements/base.pyi,sha256=W_hG99LyFcnlRHtSxRZur3o6x33zvMwpp498mleamWw,10096
139
- reflex/components/el/elements/forms.py,sha256=cgK6pEhQl0SycMF-eW5X8IXBhsYocBvI-a0-bikp0-o,21549
137
+ reflex/components/el/elements/forms.py,sha256=6hOTGPPfJOH605YjIWZZ0FAPMi4eeKsk9c0DxKj6ZTs,21596
140
138
  reflex/components/el/elements/forms.pyi,sha256=L18Sko0gx_lvtl4DMfBbXNd9WbAn7BFUN-tRBSCr7SM,168738
141
139
  reflex/components/el/elements/inline.py,sha256=q3Ku_x8L9NaXrYQovCfkWwZ5AfXG0VyhGN_OT73kA0Y,4126
142
140
  reflex/components/el/elements/inline.pyi,sha256=OhRYq7qzJm_KZPkzPs8DEm2zE9HtXOonhEbDwJgnFTQ,232592
@@ -158,8 +156,8 @@ reflex/components/gridjs/__init__.py,sha256=xJwDm1AZ70L5-t9LLqZwGUtDpijbf1KuMYDT
158
156
  reflex/components/gridjs/datatable.py,sha256=ZmpvWnR4PSAF62V0qUPVZyheHl_wPEkUaZRIB0Vuv4c,4220
159
157
  reflex/components/gridjs/datatable.pyi,sha256=YAfCTuxtKgRtvXOr6OuWWoMQshkt5588FabWK8JbOLY,5227
160
158
  reflex/components/lucide/__init__.py,sha256=EggTK2MuQKQeOBLKW-mF0VaDK9zdWBImu1HO2dvHZbE,73
161
- reflex/components/lucide/icon.py,sha256=QIto2XB-z3lSRhls_Cu8n0JiZ2dKcDxPRxCG_7D4-vs,34573
162
- reflex/components/lucide/icon.pyi,sha256=OnKrrMYBZb9HeAf6_nN7_3_9Nuw-weMVJHtwt60eBvU,37488
159
+ reflex/components/lucide/icon.py,sha256=rhR69gPP2RK4EGt8B_JPTpb4YnuGvYT223dn28hlHvo,34604
160
+ reflex/components/lucide/icon.pyi,sha256=eWrL9Zfp8yT6mbiKnx2t2tupmaHOivrkCO3NpnUd5RI,37519
163
161
  reflex/components/markdown/__init__.py,sha256=Dfl1At5uYoY7H4ufZU_RY2KOGQDLtj75dsZ2BTqqAns,87
164
162
  reflex/components/markdown/markdown.py,sha256=iB43ERClrdBNRiXlv0ju7KXSsVWsMQsG-uHB_5vuV5c,15416
165
163
  reflex/components/markdown/markdown.pyi,sha256=opz6B5rpuJtgSZBuFphdl2irZnzPkXsbRGvKqpmDhZs,4344
@@ -176,8 +174,8 @@ reflex/components/next/link.pyi,sha256=H-95F0pJtu_f8dmRwuFZjtl9QnG96JVI2mb6sUMY3
176
174
  reflex/components/next/video.py,sha256=zHT-wdzLauLxZizCjI8aoajj75wR1lBFIo841R2gD0k,963
177
175
  reflex/components/next/video.pyi,sha256=4Qu7k3n-BimL__-X43IjGQB6FIH7IHnZPiTSECXgPJA,2539
178
176
  reflex/components/plotly/__init__.py,sha256=6B_woBJhkrVA9O_AbOTbsA_SxWsqjicYHmLA9FLjGfU,650
179
- reflex/components/plotly/plotly.py,sha256=mhTNW5VkflHbZ8aYFrQ41m2mTRo356rPGKtr90PlfVQ,14840
180
- reflex/components/plotly/plotly.pyi,sha256=xiv43RpHARluOM_h76MyiwXvMcLbksib6NQ_UV0L4Qw,47855
177
+ reflex/components/plotly/plotly.py,sha256=vip6efXCFYt1A5frZqdYtk18LfHANltstKM8AGT0cyM,14848
178
+ reflex/components/plotly/plotly.pyi,sha256=l4zEdUFf_b0RrLOY5nXrn_gPnYhUb46sqbbH-Dh_8rI,47862
181
179
  reflex/components/radix/__init__.py,sha256=fRsLvIO3MrTtPOXtmnxYDB9phvzlcbyB_utgpafYMho,474
182
180
  reflex/components/radix/__init__.pyi,sha256=YpWw_k35yv_Yq_0RZNCb52fJZ3dANWAnQllhVoVCWEE,3988
183
181
  reflex/components/radix/primitives/__init__.py,sha256=R2sdZJqQCYaLScGkXnXDKAjVgV5MidceemooEUtvBt4,443
@@ -196,7 +194,7 @@ reflex/components/radix/primitives/slider.py,sha256=Ovkve45-lNUKKyY_f-GUa92NEccx
196
194
  reflex/components/radix/primitives/slider.pyi,sha256=O2QHE2XMjAMGYJgDljNIJDVw07qkDJ9dvF-6P5ySPKI,12588
197
195
  reflex/components/radix/themes/__init__.py,sha256=3ASzR_OrjkLXZ6CksGKIQPOcyYZ984NzXrn2UCIdxUc,492
198
196
  reflex/components/radix/themes/__init__.pyi,sha256=RVeS7TipR51MgmsWJStZwh4QxKBtOMtCguBtVbUJqX8,476
199
- reflex/components/radix/themes/base.py,sha256=Nv0pWJH5bAkInT8VYq-2hlgeNdoKsFqIZorTyfDuJJg,8689
197
+ reflex/components/radix/themes/base.py,sha256=SI8Z4xfBmwdoDbRoEaf8FViJuzZvFXYTnVrnU_8RAJY,8325
200
198
  reflex/components/radix/themes/base.pyi,sha256=09xp3m_X7u4ai2i-ot4U-6wIS212N1HJgpSOugOAqDE,24696
201
199
  reflex/components/radix/themes/color_mode.py,sha256=ZdRuFK7SrvB6Lq7dBTHSIku4y15BcCi53tmJl0lVlJA,6490
202
200
  reflex/components/radix/themes/color_mode.pyi,sha256=95Csgz57W-CwzYBZUKqoBvFhNQv_B_M03_15CLFl7GU,20960
@@ -232,7 +230,7 @@ reflex/components/radix/themes/components/dropdown_menu.py,sha256=QrDvo-HfQNCS5J
232
230
  reflex/components/radix/themes/components/dropdown_menu.pyi,sha256=jW4VxPvCGNFkQSsCZskMEovl3hEOoHNh5tnenmjNTJw,28736
233
231
  reflex/components/radix/themes/components/hover_card.py,sha256=TTasAH6aTkvZhQDxajSTADnqPm8Ep7j_WZqeiLDS9w8,3211
234
232
  reflex/components/radix/themes/components/hover_card.pyi,sha256=P249hkjutUJy2LtoXIhoVhqJcN6nPN8qUJBVyRGn_Lo,18729
235
- reflex/components/radix/themes/components/icon_button.py,sha256=_4cj_NIqtIIzEOdv8QbrHaSEjEQW6ThwHX0lpuHe40k,3007
233
+ reflex/components/radix/themes/components/icon_button.py,sha256=HQdkNBtE7QJnfQJN_3g3Hv2HPA1FWvqMXcFLnK2iJyg,3101
236
234
  reflex/components/radix/themes/components/icon_button.pyi,sha256=xhyNGxconrmjL2UPYzRoX5-sDaKNynXEUHaI-VwW7jA,13277
237
235
  reflex/components/radix/themes/components/inset.py,sha256=Pdj3dF1hW0RiZ_qEohXfJFa_ebbRKl7UaAqd05wUUpg,1155
238
236
  reflex/components/radix/themes/components/inset.pyi,sha256=HBGBl0Z6Gbc8ukiw51Ep6i4pdKbASlFMxvBDrxr3yl4,10982
@@ -268,8 +266,8 @@ reflex/components/radix/themes/components/tabs.py,sha256=9aSLPZe7zQDIxMIowqUN0pk
268
266
  reflex/components/radix/themes/components/tabs.pyi,sha256=fVp6CcTjsx0tvhX32Q6MpmQiTEpMeSi_QclUWElbegI,15624
269
267
  reflex/components/radix/themes/components/text_area.py,sha256=5jVvuH4wduAPFd6c2Th08AFolTE_QIgVmExSy5ttrTI,3423
270
268
  reflex/components/radix/themes/components/text_area.pyi,sha256=8YTw016D14lR-F6RW9Jhd2_-UHshPKKsIHdX7oIbbG4,14304
271
- reflex/components/radix/themes/components/text_field.py,sha256=RCMNIjDviZK3oSXaK_vJGebYV1h_njM3JObXW6Ghmiw,4168
272
- reflex/components/radix/themes/components/text_field.pyi,sha256=hAnWDcMec7IxGreO71W1UIoZH_j3tF52ksTbmqShfqI,33716
269
+ reflex/components/radix/themes/components/text_field.py,sha256=F8vDdpoY9n_whx_kZPCeHPyPZ86MJUnhQ1jjXccVDlQ,4268
270
+ reflex/components/radix/themes/components/text_field.pyi,sha256=ydNEkqRIrc9yka9PUKD6vebhGYe0FP5DYorY-3gK0O8,33873
273
271
  reflex/components/radix/themes/components/tooltip.py,sha256=3WPKrqh8cabXNT52kXPzuW9eryZKDRmR6nVHvPKlaI4,4384
274
272
  reflex/components/radix/themes/components/tooltip.pyi,sha256=mqO0ESK3nYhBT3_u9gjSWw2MC8-uLBgoMh0TjuLAF-8,6687
275
273
  reflex/components/radix/themes/layout/__init__.py,sha256=dbRNzJ9pag7luTO3saNvgKzozrGNJ02_Vn9r3SwJHN4,406
@@ -286,7 +284,7 @@ reflex/components/radix/themes/layout/flex.py,sha256=7p98u_YkIeBnbDsm4nFJpJUDJze
286
284
  reflex/components/radix/themes/layout/flex.pyi,sha256=HeQqsoT8ZEtGaUkMYy-zF0QvtapkOVZ2syWQhz-vZek,11530
287
285
  reflex/components/radix/themes/layout/grid.py,sha256=qHKR11Y-cT64dhzXoynKJr3Wr-R4hUNXRwPz8CthB2Y,1696
288
286
  reflex/components/radix/themes/layout/grid.pyi,sha256=n6PnZyZj8Gm5KS5RCHh7zpaPRk9vdY3Wt7RuXG1G5UA,12314
289
- reflex/components/radix/themes/layout/list.py,sha256=WKVPVOT5_46CQMhHf_mkNixui5WpQaFTE0pyC3jUl8I,5310
287
+ reflex/components/radix/themes/layout/list.py,sha256=PmDB_4fijO8O4P0F3C9uReRS0JuI7tImKt4LEHGxKQ4,5357
290
288
  reflex/components/radix/themes/layout/list.pyi,sha256=kgxi_DUcJtxiva8SkaWGvOblfGWyqXBvnAmBiYFgasQ,47743
291
289
  reflex/components/radix/themes/layout/section.py,sha256=ZSVYvC4Pq0z3oQMUBdhC4Hn8qZ__N86vifag3ZO99bs,624
292
290
  reflex/components/radix/themes/layout/section.pyi,sha256=9oQQTT4_RKg0vWffwj1d-gXxL6_Vql648v1aakiFwcU,9248
@@ -334,11 +332,11 @@ reflex/components/suneditor/editor.py,sha256=XzUZX4nRTv1Z9H5QIKGBWmeZpmZPdYGFhNh
334
332
  reflex/components/suneditor/editor.pyi,sha256=HArgt1IXTKD9qZmVmZFKadfUdEc_6HaN2lzGDRhRJno,8714
335
333
  reflex/components/tags/__init__.py,sha256=Pc0JU-Tv_W7KCsydXgbKmu7w2VtHNkI6Cx2hTkNhW_Q,152
336
334
  reflex/components/tags/cond_tag.py,sha256=YHxqq34PD-1D88YivO7kn7FsbW8SfPS2McNg7j_nncI,588
337
- reflex/components/tags/iter_tag.py,sha256=VfYy95D_rBk-0F58vUDgaWuqXWrdO2udDr06mcfdA6I,4487
335
+ reflex/components/tags/iter_tag.py,sha256=reHnUd3xXWTxwkHQ22fnpsWI5-IsdK-_8i7FRh3DjVg,4362
338
336
  reflex/components/tags/match_tag.py,sha256=3lba1H5pCcKkqxEHzM6DZb5s9s0yJLN4Se3vdhzar24,580
339
337
  reflex/components/tags/tag.py,sha256=BRPODHi1R5g4VwkYLztIUJBMyDgrGPZRqB-QP_u67jk,3665
340
338
  reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
341
- reflex/constants/__init__.py,sha256=I3NZFrnOpDaljU2VwkPIvp6V0odUZF6mia2tBxnPWbM,2220
339
+ reflex/constants/__init__.py,sha256=QAtyTYtH10D7680kp5EsKkTz1FeL9u6pvvXn-6hPFU8,2176
342
340
  reflex/constants/base.py,sha256=NtWZEJ1uEDpcwn1yNZ1ka6gDhbaJKWxlzvK55jIiAbE,8611
343
341
  reflex/constants/colors.py,sha256=n-FN7stNrvk5rCN0TAvE28dqwUeQZHue-b5q1CO0EyQ,2048
344
342
  reflex/constants/compiler.py,sha256=Var6JTLoVsbsG45VDgUeXlj5pnukeIeLw4v18h3U3Jw,5815
@@ -348,7 +346,6 @@ reflex/constants/event.py,sha256=8PWobGXnUIbkRS73dRiroj5BJw4C3sbo5AHAhJTZFyM,284
348
346
  reflex/constants/installer.py,sha256=qB-aXLuCFDxVGL7ToUtrIffTsiNJCZrMl4LLAI1PKSk,3540
349
347
  reflex/constants/route.py,sha256=YnLgsp0iYc1lFjQ-cEqTlSE5SEeaNkaWORBoUM0-taI,2079
350
348
  reflex/constants/state.py,sha256=6Mfr7xVcAZOj5aSy7kp0W6r8oTs7K30URgGDAAFLfPQ,294
351
- reflex/constants/style.py,sha256=EPgRYHhAlcrPUBc2HkDTdTj-Q0uDAXHlq8Sp6D35Zf4,475
352
349
  reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
353
350
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
354
351
  reflex/custom_components/custom_components.py,sha256=_YIsOv3-ygomBFyj4Ku8QgjFZowVqQK51ipTwWhDkwo,20838
@@ -367,40 +364,44 @@ reflex/istate/wrappers.py,sha256=p8uuioXRbR5hperwbOJHUcWdu7hukLikQdoR7qrnKsI,909
367
364
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
368
365
  reflex/middleware/hydrate_middleware.py,sha256=1ch7bx2ZhojOR15b-LHD2JztrWCnpPJjTe8MWHJe-5Y,1510
369
366
  reflex/middleware/middleware.py,sha256=p5VVoIgQ_NwOg_GOY6g0S4fmrV76_VE1zt-HiwbMw-s,1158
367
+ reflex/plugins/__init__.py,sha256=JXrIp8EoZ3e4pTjDrg6yj2C6Kd6dj9TJsmsxdHRUtsI,274
368
+ reflex/plugins/base.py,sha256=pHrNVxi5KE9cAxJnx3ORYR8URXJK7ZMkOfuQDguBGb4,2720
369
+ reflex/plugins/tailwind_v3.py,sha256=pPFtBLPB6Bxg5bt0b-gJFcLckjhQFUxfhIG9OCqmFRA,7432
370
+ reflex/plugins/tailwind_v4.py,sha256=3pWkxwhW8D_n-cl-wNUaUsyDi6vyoPxmvXD3iL1EiKo,7805
370
371
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
371
- reflex/utils/build.py,sha256=NxjFcGsRJygVzklNq4T3Crd-_zfUZXMQi3MSLGSMEjM,9135
372
+ reflex/utils/build.py,sha256=8n42GCwOrnCxlBk40lXqh1DEbZ8D24KRwwygYmNG7_Y,9142
372
373
  reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
373
374
  reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
374
- reflex/utils/console.py,sha256=XTIL7uK1Iz1pOb_CJWx7ikHG8hTNjn2lsirEqe0gEo0,9463
375
+ reflex/utils/console.py,sha256=7sSsidSWwobPIcxuCbn_jILvVxo63yedelO0ga8RQ70,9470
375
376
  reflex/utils/decorator.py,sha256=DVrlVGljV5OchMs-5_y1CbbqnCWlH6lv-dFko8yHxVY,1738
376
377
  reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
377
- reflex/utils/exec.py,sha256=in9Oig2k0tQrxUJhe-8GuMPUG4JGpcyEvUsvp-aPTqg,20368
378
+ reflex/utils/exec.py,sha256=5CgAvss3jt_sCaU_tEHcXMQTo4C7-xDEBsuSuZ8-lVA,20852
378
379
  reflex/utils/export.py,sha256=eRAVmXyOfCjaL0g4YwWy9f48YT21tfKtd8Evt37_sRY,2567
379
380
  reflex/utils/format.py,sha256=kd9B5Y_0-Rs0Zyq0ndpfXqSRBf3k-b_6jRfKb9-lkpo,21398
380
381
  reflex/utils/imports.py,sha256=NIWeNZPTBJM87OseXjff9XHnAaq4sz1fDbt3b0pTdJw,4090
381
382
  reflex/utils/lazy_loader.py,sha256=pdirbNnGfB-r21zgjzHk0c6vODXqKLn9vbJiP5Yr5nQ,4138
382
383
  reflex/utils/misc.py,sha256=pROvogdVRLrZx_5vD18PkMwRAkZnw09Nhb7_YdewUbw,731
383
384
  reflex/utils/net.py,sha256=T9QSPki13qQcwuZ771HEwdyL2UvA_mMbrM5bgHJnEOY,4073
384
- reflex/utils/path_ops.py,sha256=idGxUSJRKwYLLi7ppXkq3eV6rvAytJoO-n-FuLkwl3o,7604
385
- reflex/utils/prerequisites.py,sha256=ijmUA82b9csmoWCBqlIxng5W09NtdHtEi3_Hb8k2myg,67006
385
+ reflex/utils/path_ops.py,sha256=uv6b1Rh5xAZl-Q4sV1qvaWab-MIBnfSC2_GbaKq51Nk,8106
386
+ reflex/utils/prerequisites.py,sha256=Pz6rWwAX0nG_MKj7cllPx-kELmHy0Ou0n_Rg0mrVSmE,64581
386
387
  reflex/utils/processes.py,sha256=Xo9_lpYvS20XXZxjfRlhcVQSnYmMfePvTZ8gKA7XY04,16692
387
- reflex/utils/pyi_generator.py,sha256=grsbXehg4u7r5QDanMf24eufIWfcxvs4m9Sbz_QNBxk,45350
388
+ reflex/utils/pyi_generator.py,sha256=0e4SC2cBrrFl_lz5bWMRh8bEpq2-t3Vdh9lBe5EeDro,45688
388
389
  reflex/utils/redir.py,sha256=T1UfnJGeDVn1fwGpx8SqpEd4D6mlyMGXqdgOxXutfhc,1747
389
390
  reflex/utils/registry.py,sha256=ymBScatt5YiQz9tPYHCzSPs-X7z29hGuu2tlZG28YDQ,1877
390
391
  reflex/utils/serializers.py,sha256=AJ6txcEeui8fKOpG6jegv-ZH1AcPV72L3vmzNghW-YQ,13625
391
392
  reflex/utils/telemetry.py,sha256=kZeI_RjY32MTpx12Y5hMXyd6bkli9xAQsmbbIKuf0fg,6779
392
- reflex/utils/types.py,sha256=f8JAmVTf3qkuGW2M_VtqTVbQlTrrTWTdSWLvG8x7Bww,34164
393
+ reflex/utils/types.py,sha256=fVcvYc5DT-hvAsvYzgoItvH_YsurnJ-tnBlARgOqwNU,34507
393
394
  reflex/vars/__init__.py,sha256=2Kv6Oh9g3ISZFESjL1al8KiO7QBZUXmLKGMCBsP-DoY,1243
394
- reflex/vars/base.py,sha256=3poHqxogscO0jjJHAQwTHXBFCV1li0XAk2EVBjyrsvo,103181
395
+ reflex/vars/base.py,sha256=GnQG3eMxjCSf9IBzKXrQZzipxt7rw-TDE9R7FgbXFKg,104538
395
396
  reflex/vars/datetime.py,sha256=fEc68T0A6XYlAJ3AGteCIb_vDqgoO1O8tpjMzqlp9sc,5104
396
397
  reflex/vars/dep_tracking.py,sha256=fW9xDWOk-VM2kwBVlSe46KLfP3Gqj5Ni_SJx_IdR6-k,13840
397
398
  reflex/vars/function.py,sha256=0i-VkxHkDJmZtfQUwUfaF0rlS6WM8azjwQ8k7rEOkyk,13944
398
399
  reflex/vars/number.py,sha256=DlN9qx-kuGVq6Iiy3wxaKUxQ-HJ-CgdWpgoCpsKPefc,28174
399
- reflex/vars/object.py,sha256=ZK5_icrjzm38cFYP0NkEmxbKhnTlCmTydbN5XG4bkpA,17138
400
+ reflex/vars/object.py,sha256=eQuToqKV2XkcTZVxgpkFrPmLcHP8r1eqaMgYrWWCLdo,17324
400
401
  reflex/vars/sequence.py,sha256=cuvW7aKrM43WV4S8rJvZUL-PlMvlC4G0ZLK4j7xhkTI,55225
401
- scripts/hatch_build.py,sha256=xWcl8heJcCoujflpPnQqMXigE8gYPShERDsQ-HSJ9Pw,1285
402
- reflex-0.7.12a1.dist-info/METADATA,sha256=SrkMzUocigR19HXY2tovHbHlxtCdgvKIDXRJSJwZegc,11837
403
- reflex-0.7.12a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
404
- reflex-0.7.12a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
405
- reflex-0.7.12a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
406
- reflex-0.7.12a1.dist-info/RECORD,,
402
+ scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
403
+ reflex-0.7.13a1.dist-info/METADATA,sha256=Am4COM_qiwvBedUXQwcFBPhsY-cHybX2fIegUWkS5mc,11837
404
+ reflex-0.7.13a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
405
+ reflex-0.7.13a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
406
+ reflex-0.7.13a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
407
+ reflex-0.7.13a1.dist-info/RECORD,,
scripts/hatch_build.py CHANGED
@@ -1,5 +1,6 @@
1
1
  """Custom build hook for Hatch."""
2
2
 
3
+ import importlib.util
3
4
  import pathlib
4
5
  import subprocess
5
6
  import sys
@@ -37,6 +38,22 @@ class CustomBuilder(BuildHookInterface):
37
38
  if self.marker().exists():
38
39
  return
39
40
 
41
+ if importlib.util.find_spec("pre_commit") and importlib.util.find_spec("toml"):
42
+ import json
43
+
44
+ import toml
45
+ import yaml
46
+
47
+ reflex_dir = pathlib.Path(__file__).parent.parent
48
+ pre_commit_config = json.loads(
49
+ json.dumps(
50
+ toml.load(reflex_dir / "pyproject.toml")["tool"]["pre-commit"]
51
+ )
52
+ )
53
+ (reflex_dir / ".pre-commit-config.yaml").write_text(
54
+ yaml.dump(pre_commit_config), encoding="utf-8"
55
+ )
56
+
40
57
  if not (pathlib.Path(self.root) / "scripts").exists():
41
58
  return
42
59
 
@@ -1,66 +0,0 @@
1
- {# Helper macro to render JS objects and arrays #}
2
- {% macro render_js(val, indent=2, level=0) -%}
3
- {%- set space = ' ' * (indent * level) -%}
4
- {%- set next_space = ' ' * (indent * (level + 1)) -%}
5
-
6
- {%- if val is mapping -%}
7
- {
8
- {%- for k, v in val.items() %}
9
- {{ next_space }}{{ k if k is string and k.isidentifier() else k|tojson }}: {{ render_js(v, indent, level + 1) }}{{ "," if not loop.last }}
10
- {%- endfor %}
11
- {{ space }}}
12
- {%- elif val is iterable and val is not string -%}
13
- [
14
- {%- for item in val %}
15
- {{ next_space }}{{ render_js(item, indent, level + 1) }}{{ "," if not loop.last }}
16
- {%- endfor %}
17
- {{ space }}]
18
- {%- else -%}
19
- {{ val | tojson }}
20
- {%- endif -%}
21
- {%- endmacro %}
22
-
23
- {# Extract destructured imports from plugin dicts only #}
24
- {%- set imports = [] %}
25
- {%- for plugin in plugins if plugin is mapping and plugin.import is defined %}
26
- {%- set _ = imports.append(plugin.import) %}
27
- {%- endfor %}
28
-
29
- /** @type {import('tailwindcss').Config} */
30
- {%- for imp in imports %}
31
- const { {{ imp.name }} } = require({{ imp.from | tojson }});
32
- {%- endfor %}
33
-
34
- module.exports = {
35
- content: {{ render_js(content) }},
36
- theme: {{ render_js(theme) }},
37
- {% if darkMode is defined %}darkMode: {{ darkMode | tojson }},{% endif %}
38
- {% if corePlugins is defined %}corePlugins: {{ render_js(corePlugins) }},{% endif %}
39
- {% if important is defined %}important: {{ important | tojson }},{% endif %}
40
- {% if prefix is defined %}prefix: {{ prefix | tojson }},{% endif %}
41
- {% if separator is defined %}separator: {{ separator | tojson }},{% endif %}
42
- {% if presets is defined %}
43
- presets: [
44
- {% for preset in presets %}
45
- require({{ preset | tojson }}){{ "," if not loop.last }}
46
- {% endfor %}
47
- ],
48
- {% endif %}
49
- plugins: [
50
- {% for plugin in plugins %}
51
- {% if plugin is mapping %}
52
- {% if plugin.call is defined %}
53
- {{ plugin.call }}(
54
- {%- if plugin.args is defined -%}
55
- {{ render_js(plugin.args) }}
56
- {%- endif -%}
57
- ){{ "," if not loop.last }}
58
- {% else %}
59
- require({{ plugin.name | tojson }}){{ "," if not loop.last }}
60
- {% endif %}
61
- {% else %}
62
- require({{ plugin | tojson }}){{ "," if not loop.last }}
63
- {% endif %}
64
- {% endfor %}
65
- ]
66
- };
@@ -1,6 +0,0 @@
1
- @import "tailwindcss/base";
2
-
3
- @import "@radix-ui/themes/styles.css";
4
-
5
- @tailwind components;
6
- @tailwind utilities;
reflex/constants/style.py DELETED
@@ -1,16 +0,0 @@
1
- """Style constants."""
2
-
3
- from types import SimpleNamespace
4
-
5
-
6
- class Tailwind(SimpleNamespace):
7
- """Tailwind constants."""
8
-
9
- # The Tailwindcss version
10
- VERSION = "tailwindcss@3.4.17"
11
- # The Tailwind config.
12
- CONFIG = "tailwind.config.js"
13
- # Default Tailwind content paths
14
- CONTENT = ["./pages/**/*.{js,ts,jsx,tsx}", "./utils/**/*.{js,ts,jsx,tsx}"]
15
- # Relative tailwind style path to root stylesheet in Dirs.STYLES.
16
- ROOT_STYLE_PATH = "./tailwind.css"