[REF-2587] Ignore top-level theme appearance (#3119)

* pyi_generator: ignore `app.py` and single files

When running pyi_generator in pre-commit, it passes individual changed files on
the command line as targets, and these were not being properly excluded
according to the EXCLUDED_FILES list.

Add app.py to the EXCLUDED_FILES list so it does not get regenerated
automatically.

* [REF-2587] Ignore top-level theme appearance

From the Radix docs, it is not recommended to actually set `appearance`, but
instead use next-themes to set and switch the appearance dynamically.

Because Reflex already compiles the top-level theme into the next-themes
ThemeProvider, we can blank out the appearance prop after compiling contexts.js
to avoid a mismatch between the selected app appearance and the appearance in
the rx.theme when displaying overlay components.

Fix #2992
This commit is contained in:
Masen Furer 2024-04-19 14:43:45 -07:00 committed by GitHub
parent 7b61e7e4bc
commit 6ca5f48ae7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View File

@ -839,6 +839,9 @@ class App(Base):
compile_results.append(
compiler.compile_contexts(self.state, self.theme),
)
# Fix #2992 by removing the top-level appearance prop
if self.theme is not None:
self.theme.appearance = None
app_root = self._app_root(app_wrappers=app_wrappers)

View File

@ -34,6 +34,7 @@ PWD = Path(".").resolve()
EXCLUDED_FILES = [
"__init__.py",
"app.py",
"component.py",
"bare.py",
"foreach.py",
@ -795,7 +796,11 @@ class PyiGenerator:
file_targets = []
for target in targets:
target_path = Path(target)
if target_path.is_file() and target_path.suffix == ".py":
if (
target_path.is_file()
and target_path.suffix == ".py"
and target_path.name not in EXCLUDED_FILES
):
file_targets.append(target_path)
continue
if not target_path.is_dir():