Skip to content

Commit 242d992

Browse files
authored
Merge pull request #2702 from KachanovYev/bug/#2663-negating-run-properties-with-cli-arguments-not-working
[🐛 BUG] Negating run properties with CLI arguments not working
2 parents aff59ca + bbbb77c commit 242d992

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

taipy/common/_cli/_run_cli.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,17 @@ def handle_command(cls):
5454
external_args.extend(all_args[external_args_index + 1 :])
5555
all_args = all_args[:external_args_index]
5656

57-
taipy_args = [f"--taipy-{arg[2:]}" if arg.startswith("--") else arg for arg in all_args]
57+
def add_taipy_prefix(key: str):
58+
"""
59+
Adds the '--taipy-' prefix to command-line arguments starting with '--'.
60+
If the argument starts with '--no-', inserts 'taipy-' after '--no-'.
61+
Otherwise, inserts 'taipy-' after '--'.
62+
"""
63+
if key.startswith("--no-"):
64+
return key[:5] + "taipy-" + key[5:]
65+
return key[:2] + "taipy-" + key[2:]
66+
67+
taipy_args = [add_taipy_prefix(arg) if arg.startswith("--") else arg for arg in all_args]
5868

5969
try:
6070
subprocess.run(

tests/gui/config/test_cli.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,84 @@ def test_gui_service_arguments_hierarchy():
156156
gui.stop()
157157

158158

159+
def test_cli_arguments_no_run_browser_and_no_reloader():
160+
# Test --no-run-browser argument
161+
with patch("sys.argv", ["prog", "--no-run-browser"]):
162+
gui = Gui()
163+
gui.run(run_server=False, run_browser=True)
164+
service_config = gui._config.config
165+
assert not service_config["run_browser"]
166+
gui.stop()
167+
168+
# Test --no-reloader argument
169+
with patch("sys.argv", ["prog", "--no-reloader"]):
170+
gui = Gui()
171+
gui.run(run_server=False, use_reloader=True)
172+
service_config = gui._config.config
173+
assert not service_config["use_reloader"]
174+
gui.stop()
175+
176+
# Test both arguments together
177+
with patch("sys.argv", ["prog", "--no-run-browser", "--no-reloader"]):
178+
gui = Gui()
179+
gui.run(run_server=False, run_browser=True, use_reloader=True)
180+
service_config = gui._config.config
181+
assert not service_config["run_browser"]
182+
assert not service_config["use_reloader"]
183+
gui.stop()
184+
185+
# Test CLI arguments override TOML configuration
186+
toml_config = NamedTemporaryFile(
187+
content="""
188+
[TAIPY]
189+
190+
[gui]
191+
run_browser = "true:bool"
192+
use_reloader = "true:bool"
193+
"""
194+
)
195+
Config.load(toml_config.filename)
196+
197+
with patch("sys.argv", ["prog", "--no-run-browser", "--no-reloader"]):
198+
gui = Gui()
199+
gui.run(run_server=False)
200+
service_config = gui._config.config
201+
assert not service_config["run_browser"]
202+
assert not service_config["use_reloader"]
203+
gui.stop()
204+
205+
# Test CLI arguments override Config.configure_gui()
206+
Config.configure_gui(run_browser=True, use_reloader=True)
207+
208+
with patch("sys.argv", ["prog", "--no-run-browser", "--no-reloader"]):
209+
gui = Gui()
210+
gui.run(run_server=False)
211+
service_config = gui._config.config
212+
assert not service_config["run_browser"]
213+
assert not service_config["use_reloader"]
214+
gui.stop()
215+
216+
# Test precedence: CLI > TOML > Config.configure_gui() > Gui.run()
217+
toml_config_2 = NamedTemporaryFile(
218+
content="""
219+
[TAIPY]
220+
221+
[gui]
222+
run_browser = "true:bool"
223+
use_reloader = "false:bool"
224+
"""
225+
)
226+
Config.load(toml_config_2.filename)
227+
Config.configure_gui(run_browser=False, use_reloader=True)
228+
229+
with patch("sys.argv", ["prog", "--no-run-browser"]):
230+
gui = Gui()
231+
gui.run(run_server=False, run_browser=True, use_reloader=False)
232+
service_config = gui._config.config
233+
assert not service_config["run_browser"]
234+
assert service_config["use_reloader"]
235+
gui.stop()
236+
159237
def test_clean_config():
160238
gui_config = Config.configure_gui(dark_mode=False)
161239

0 commit comments

Comments
 (0)