Skip to content

Commit 8e0c230

Browse files
adhami3310masenf
andauthored
remove pyi files (#5074)
* remove pyi files * add these guys * or None * add check for initial build * potentially * only include in sdist * use safe issubclass * codespell oh codespell * add ruff * ignore pyi files in pyright * what is going on * change python version potentially * specify execution environment * Update hatch_build.py Co-authored-by: Masen Furer <[email protected]> * maybe * it's ruff out there * maybe use seomthing similar to performance * maybe * does cpr work * do not ignore pyi files * include pyi files for wheel * add hashes * fix inconsistency * only compile once * use arg to not make hashes for those who don't want them * dang it darglint --------- Co-authored-by: Masen Furer <[email protected]>
1 parent 377ef0a commit 8e0c230

File tree

136 files changed

+341
-77560
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+341
-77560
lines changed

.github/workflows/check_generated_pyi.yml

Lines changed: 0 additions & 39 deletions
This file was deleted.

.github/workflows/pre-commit.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,6 @@ jobs:
2121
- uses: actions/checkout@v4
2222
- uses: ./.github/actions/setup_build_env
2323
with:
24-
# running vs. one version of Python is OK
25-
# i.e. ruff, black, etc.
26-
python-version: 3.12.8
24+
python-version: 3.13.2
2725
run-uv-sync: true
28-
29-
# TODO pre-commit related stuff can be cached too (not a bottleneck yet)
3026
- run: uv run pre-commit run --all-files
31-
env:
32-
SKIP: update-pyi-files

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ reflex.db
1919
.env
2020
.env.*
2121
node_modules
22-
package-lock.json
22+
package-lock.json
23+
*.pyi

.pre-commit-config.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ repos:
1111
exclude: "^integration/benchmarks/"
1212

1313
- repo: https://github.com/codespell-project/codespell
14-
rev: v2.3.0
14+
rev: v2.4.1
1515
hooks:
1616
- id: codespell
1717
args: ["reflex"]
18+
additional_dependencies:
19+
- tomli
1820

1921
# Run pyi check before pyright because pyright can fail if pyi files are wrong.
2022
- repo: local

hatch_build.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"""Custom build hook for Hatch."""
2+
3+
import pathlib
4+
import subprocess
5+
import sys
6+
from typing import Any
7+
8+
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
9+
10+
11+
class CustomBuilder(BuildHookInterface):
12+
"""Custom build hook for Hatch."""
13+
14+
PLUGIN_NAME = "custom"
15+
16+
def marker(self) -> pathlib.Path:
17+
"""Get the marker file path.
18+
19+
Returns:
20+
The marker file path.
21+
"""
22+
return (
23+
pathlib.Path(self.directory)
24+
/ f".reflex-{self.metadata.version}.pyi_generated"
25+
)
26+
27+
def finalize(
28+
self, version: str, build_data: dict[str, Any], artifact_path: str
29+
) -> None:
30+
"""Finalize the build process.
31+
32+
Args:
33+
version: The version of the package.
34+
build_data: The build data.
35+
artifact_path: The path to the artifact.
36+
"""
37+
if self.marker().exists():
38+
return
39+
40+
if not (pathlib.Path(self.root) / "scripts").exists():
41+
return
42+
43+
for file in (pathlib.Path(self.root) / "reflex").rglob("**/*.pyi"):
44+
file.unlink(missing_ok=True)
45+
46+
subprocess.run(
47+
[sys.executable, "-m", "reflex.utils.pyi_generator"],
48+
check=True,
49+
)
50+
self.marker().touch()

pyi_hashes.json

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{
2+
"reflex/__init__.pyi": "8a6d2350e96659846436792a5c7b772b",
3+
"reflex/components/__init__.pyi": "76ba0a12cd3a7ba5ab6341a3ae81551f",
4+
"reflex/components/base/__init__.pyi": "e9aaf47be1e1977eacee97b880c8f7de",
5+
"reflex/components/base/app_wrap.pyi": "387fc7a0c2da8760d9449e2893e44eec",
6+
"reflex/components/base/body.pyi": "2cc870cec4b1c28081dd40467752c2b7",
7+
"reflex/components/base/document.pyi": "30377cdfb02b564f8de29b0473d2346c",
8+
"reflex/components/base/error_boundary.pyi": "c56b591d14a92b99a1e97e04afe167d7",
9+
"reflex/components/base/fragment.pyi": "603ee8e03af88d4a8ff6bc1fbce4e022",
10+
"reflex/components/base/head.pyi": "893047aa32da553711db8f1345adb6b0",
11+
"reflex/components/base/link.pyi": "396488afa3b7a5b0d0e6c5e89159f857",
12+
"reflex/components/base/meta.pyi": "bc4b4fda6f022a517de339ffdd667e3b",
13+
"reflex/components/base/script.pyi": "530cf8f47eb90082bf65942e8b5d745f",
14+
"reflex/components/base/strict_mode.pyi": "d972e0ff2a6f961e7df90fc27b8bb51b",
15+
"reflex/components/core/__init__.pyi": "44bcee7bc4e27e2f4f4707b843acf291",
16+
"reflex/components/core/auto_scroll.pyi": "d3012d2a4ccaab8dfebf9aa484020f59",
17+
"reflex/components/core/banner.pyi": "48d0eb86ae09e806ebe20d0edcc3cdb3",
18+
"reflex/components/core/client_side_routing.pyi": "9be638a2b0e00b8181697e5dd6b45e4e",
19+
"reflex/components/core/clipboard.pyi": "af76b623d593df3b16162033c597f920",
20+
"reflex/components/core/debounce.pyi": "76d857eb814bc64625860a5f43e8b230",
21+
"reflex/components/core/html.pyi": "b12117b42ef79ee90b6b4dec50baeb86",
22+
"reflex/components/core/sticky.pyi": "c65131cf7c2312c68e1fddaa0cc27150",
23+
"reflex/components/core/upload.pyi": "6fb89607ec8f8c1971f0dbd3453901eb",
24+
"reflex/components/datadisplay/__init__.pyi": "cf087efa8b3960decc6b231cc986cfa9",
25+
"reflex/components/datadisplay/code.pyi": "3d8f0ab4c2f123d7f80d15c7ebc553d9",
26+
"reflex/components/datadisplay/dataeditor.pyi": "1b762071001161e4fdd1285263c33bb3",
27+
"reflex/components/datadisplay/shiki_code_block.pyi": "87db7639bfa5cd53e1709e1363f93278",
28+
"reflex/components/el/__init__.pyi": "09042a2db5e0637e99b5173430600522",
29+
"reflex/components/el/element.pyi": "06ac2213b062119323291fa66a1ac19e",
30+
"reflex/components/el/elements/__init__.pyi": "280ed457675f3720e34b560a3f617739",
31+
"reflex/components/el/elements/base.pyi": "6e533348b5e1a88cf62fbb5a38dbd795",
32+
"reflex/components/el/elements/forms.pyi": "dca85624142e170709dbecdbffdff4ee",
33+
"reflex/components/el/elements/inline.pyi": "33d9d860e75dd8c4769825127ed363bb",
34+
"reflex/components/el/elements/media.pyi": "addd6872281d65d44a484358b895432f",
35+
"reflex/components/el/elements/metadata.pyi": "974a86d9f0662f6fc15a5bb4b3a87862",
36+
"reflex/components/el/elements/other.pyi": "995a4fbf10bfdb7f48808210dfe413bd",
37+
"reflex/components/el/elements/scripts.pyi": "cd5bd53c3a6b016fbb913aff36d63344",
38+
"reflex/components/el/elements/sectioning.pyi": "65aa53b1372598ec1785616cb7016032",
39+
"reflex/components/el/elements/tables.pyi": "e1282d8ddf4efa4c911ca104a907ee88",
40+
"reflex/components/el/elements/typography.pyi": "00088c9c1b68a14e5a41d837e8fdf542",
41+
"reflex/components/gridjs/datatable.pyi": "7fd1dd65ba143d60b7d42d1bb90a179d",
42+
"reflex/components/lucide/icon.pyi": "a5521a8baf8d2d7281e3fdfe6ce7073b",
43+
"reflex/components/markdown/markdown.pyi": "f2d0cbff02e0a26f201287fabe6fb738",
44+
"reflex/components/moment/moment.pyi": "6dd0c7cee5f0f29bc11d830c697d7f92",
45+
"reflex/components/next/base.pyi": "14aafd5b018a4bc9748a3c9980fcfe3e",
46+
"reflex/components/next/image.pyi": "3a0d1970e69144e9c6806e68ab99f181",
47+
"reflex/components/next/link.pyi": "cd913e10205314afe67101d9640e05cb",
48+
"reflex/components/next/video.pyi": "09698418db651917630a7fefeb573fc2",
49+
"reflex/components/plotly/plotly.pyi": "77afe88b405c3eae7058994d53a27946",
50+
"reflex/components/radix/__init__.pyi": "8d586cbff1d7130d09476ac72ee73400",
51+
"reflex/components/radix/primitives/__init__.pyi": "fe8715decf3e9ae471b56bba14e42cb3",
52+
"reflex/components/radix/primitives/accordion.pyi": "b1482766c3c99ab40c2f446598fdb6a7",
53+
"reflex/components/radix/primitives/base.pyi": "8b1dbf0b75cb29e873d611b83c9e4156",
54+
"reflex/components/radix/primitives/drawer.pyi": "b6f8b17e1d0064d5609915546c722a81",
55+
"reflex/components/radix/primitives/form.pyi": "79ddb679e0b3df814439ce993fcf355e",
56+
"reflex/components/radix/primitives/progress.pyi": "c62a0c44e0d440701174fcca93bf8fbe",
57+
"reflex/components/radix/primitives/slider.pyi": "c27e1a1180442e2e6e9d727560e8068c",
58+
"reflex/components/radix/themes/__init__.pyi": "a15f9464ad99f248249ffa8e6deea4cf",
59+
"reflex/components/radix/themes/base.pyi": "a3c3c3b72fd3d8f1e38990e5c461b682",
60+
"reflex/components/radix/themes/color_mode.pyi": "435a51382eab6111aae1b26e79e9a473",
61+
"reflex/components/radix/themes/components/__init__.pyi": "87bb9ffff641928562da1622d2ca5993",
62+
"reflex/components/radix/themes/components/alert_dialog.pyi": "8e1dde62450296310a116ed066bd51e3",
63+
"reflex/components/radix/themes/components/aspect_ratio.pyi": "1845813a034adfc1f5db8e0f6ffc1118",
64+
"reflex/components/radix/themes/components/avatar.pyi": "b591cb8b31d5a9aea5413120a6a744d9",
65+
"reflex/components/radix/themes/components/badge.pyi": "5e8f49fd9ff10c756d9afa54bfd3fd10",
66+
"reflex/components/radix/themes/components/button.pyi": "201448dcdf735f24d8bd21112039c1ca",
67+
"reflex/components/radix/themes/components/callout.pyi": "e2b5828f271a2d790e88bb965d0fcded",
68+
"reflex/components/radix/themes/components/card.pyi": "fe42e0cbdf9eb34341f4bbba8a586b34",
69+
"reflex/components/radix/themes/components/checkbox.pyi": "78bc26eabd6468a44f5139449a2c6208",
70+
"reflex/components/radix/themes/components/checkbox_cards.pyi": "cc43c568aa42ffa3e693e5cd1acba156",
71+
"reflex/components/radix/themes/components/checkbox_group.pyi": "e36603b9ea5f161070c5a0235c4411fa",
72+
"reflex/components/radix/themes/components/context_menu.pyi": "cdf546723a84c99412d91ca63d4bb2df",
73+
"reflex/components/radix/themes/components/data_list.pyi": "768e4c9222d37d90228309166a1c6ab3",
74+
"reflex/components/radix/themes/components/dialog.pyi": "b51cb34dc6c90ccd07a2f9fc97eaf1c1",
75+
"reflex/components/radix/themes/components/dropdown_menu.pyi": "34807c4ab4665932da664ab68dab0edf",
76+
"reflex/components/radix/themes/components/hover_card.pyi": "cfa947d1edec4b17dc6f227783ca1cbc",
77+
"reflex/components/radix/themes/components/icon_button.pyi": "560cc3a95a8f1a396c8c5fb916b0ee8b",
78+
"reflex/components/radix/themes/components/inset.pyi": "828f3d3a5b8f7fd07597069c01aaa0a0",
79+
"reflex/components/radix/themes/components/popover.pyi": "c953a42260a3b261eec772dba716d951",
80+
"reflex/components/radix/themes/components/progress.pyi": "c880c6bb9803d47048f656dfa66a7c15",
81+
"reflex/components/radix/themes/components/radio.pyi": "36fa5585440685a7d2dff40b50502840",
82+
"reflex/components/radix/themes/components/radio_cards.pyi": "e9a0f27119322e6148946ae178edb7a9",
83+
"reflex/components/radix/themes/components/radio_group.pyi": "ea3180940390e4b6eaf10670be5bc2fe",
84+
"reflex/components/radix/themes/components/scroll_area.pyi": "83892be0b2c902d2147cbdb5e19310ab",
85+
"reflex/components/radix/themes/components/segmented_control.pyi": "7be200991becc54cd885465656e2dfef",
86+
"reflex/components/radix/themes/components/select.pyi": "655a5c2182a16121440e5ddbba2079d8",
87+
"reflex/components/radix/themes/components/separator.pyi": "58a95aca75a556d349eb56f898bde680",
88+
"reflex/components/radix/themes/components/skeleton.pyi": "d91615706e5efb81d97755decbbf5ae3",
89+
"reflex/components/radix/themes/components/slider.pyi": "b87ee08b7edfe41eddf3d3c1cb71124e",
90+
"reflex/components/radix/themes/components/spinner.pyi": "80766a7324b582221edb66ec46da0acb",
91+
"reflex/components/radix/themes/components/switch.pyi": "f8256d2b50d15ab163649cfb05229750",
92+
"reflex/components/radix/themes/components/table.pyi": "560ce8d920e03b450fe6b938f5f0fea0",
93+
"reflex/components/radix/themes/components/tabs.pyi": "96ac1082651d2adc2a60a3af6e90c17f",
94+
"reflex/components/radix/themes/components/text_area.pyi": "418d3df53eeca0723d83a93d81f16b12",
95+
"reflex/components/radix/themes/components/text_field.pyi": "cdf0e08f5af0a5fce6b31787001f1dc3",
96+
"reflex/components/radix/themes/components/tooltip.pyi": "6cd225ba10140e925752c74404336f27",
97+
"reflex/components/radix/themes/layout/__init__.pyi": "9a52c5b283c864be70b51a8fd6120392",
98+
"reflex/components/radix/themes/layout/base.pyi": "e9a5c1f376e66653ebcf5d2315f990f8",
99+
"reflex/components/radix/themes/layout/box.pyi": "5a3c2339d74cc062358ec32b2c2c138c",
100+
"reflex/components/radix/themes/layout/center.pyi": "29bde2c21a190ba7d7a382a1157f5aa7",
101+
"reflex/components/radix/themes/layout/container.pyi": "4020c3dca660027b84d11cc4198393c4",
102+
"reflex/components/radix/themes/layout/flex.pyi": "f814281a5635ad43dd1df23f8e356c66",
103+
"reflex/components/radix/themes/layout/grid.pyi": "6062188367a2c253f014f916197c963d",
104+
"reflex/components/radix/themes/layout/list.pyi": "804f7a36c103cd7a3e362d40a58e8d39",
105+
"reflex/components/radix/themes/layout/section.pyi": "41895910072e023ed0fef6a8ad956046",
106+
"reflex/components/radix/themes/layout/spacer.pyi": "029eb0eaa731bcdff7c496e0437e22b1",
107+
"reflex/components/radix/themes/layout/stack.pyi": "3b0da99b00c826d087ed89fc67c595c1",
108+
"reflex/components/radix/themes/typography/__init__.pyi": "ef0ba71353dcac1f3546de45f8721bae",
109+
"reflex/components/radix/themes/typography/blockquote.pyi": "8ed6f1c5aa86743d1fb9488334af64fe",
110+
"reflex/components/radix/themes/typography/code.pyi": "85e869bb61e3e0da9c244aea78e14193",
111+
"reflex/components/radix/themes/typography/heading.pyi": "5a3b0b8e44bda0fce22c6b1a1f25e68e",
112+
"reflex/components/radix/themes/typography/link.pyi": "45965d95b9f9b76f8f4a3084a5430194",
113+
"reflex/components/radix/themes/typography/text.pyi": "e6aa0ca43ebbd42701a3c72c0312032e",
114+
"reflex/components/react_player/audio.pyi": "972975ed0ba3e1dc4a867da20b11ae8e",
115+
"reflex/components/react_player/react_player.pyi": "63ffffbc24907103f797dcfd85894107",
116+
"reflex/components/react_player/video.pyi": "35ce5ad62e8bff17d9c09d27c362f8dc",
117+
"reflex/components/recharts/__init__.pyi": "d4013ae04aaa4d81fccffb727d513ed6",
118+
"reflex/components/recharts/cartesian.pyi": "34b15e8f5125b5a8145e3e04ed6418e4",
119+
"reflex/components/recharts/charts.pyi": "b3d35de9cea86307ad2ab7d69ff2d06b",
120+
"reflex/components/recharts/general.pyi": "ccc5e13f46429b08cdd14fd507fe3163",
121+
"reflex/components/recharts/polar.pyi": "8fb87fd69c9edf55998f11ea8ada76fb",
122+
"reflex/components/recharts/recharts.pyi": "157acc830323075ffaf4f68d495d1787",
123+
"reflex/components/sonner/toast.pyi": "0b6dc33413f30fdd043b89ec3c8c3f39",
124+
"reflex/components/suneditor/editor.pyi": "284aa914b9bffe840db67ee68192eaf7",
125+
"reflex/experimental/layout.pyi": "6398e779743963ef3e03396696b8ddfb"
126+
}

pyproject.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ build-backend = "hatchling.build"
6868
[tool.hatch.build]
6969
include = ["reflex"]
7070

71+
[tool.hatch.build.targets.sdist]
72+
artifacts = ["*.pyi"]
73+
74+
[tool.hatch.build.targets.wheel]
75+
artifacts = ["*.pyi"]
76+
77+
[tool.hatch.build.hooks.custom]
78+
dependencies = ["plotly", "ruff"]
79+
require-runtime-dependencies = true
80+
7181
[tool.pyright]
7282
reportIncompatibleMethodOverride = false
7383

@@ -132,6 +142,7 @@ dev = [
132142
"asynctest >=0.13.0,<1.0",
133143
"darglint >=1.8.1,<2.0",
134144
"dill >=0.3.8",
145+
"hatchling >=1.27.0",
135146
"libsass >=0.23.0,<1.0",
136147
"numpy >=2.2.3,<3.0",
137148
"pandas >=2.1.1,<3.0",

0 commit comments

Comments
 (0)