From 6ca5f48ae759831b071491d390f8917412b1b617 Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Fri, 19 Apr 2024 14:43:45 -0700 Subject: [PATCH] [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 --- reflex/app.py | 3 +++ reflex/utils/pyi_generator.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/reflex/app.py b/reflex/app.py index c52f0ef8a..4af183367 100644 --- a/reflex/app.py +++ b/reflex/app.py @@ -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) diff --git a/reflex/utils/pyi_generator.py b/reflex/utils/pyi_generator.py index 82eb7cb80..208696979 100644 --- a/reflex/utils/pyi_generator.py +++ b/reflex/utils/pyi_generator.py @@ -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():