Skip to content

Commit cf634d8

Browse files
authored
Remove everest auto-scaled control values warning
* Remove everest auto-scaled control values warning * Remove show_scaling_warning setting from settings file If the file contains other keys, it will be updated, otherwise the whole settings file will be removed. * Have ert clean settings file if present
1 parent b264d73 commit cf634d8

11 files changed

Lines changed: 96 additions & 231 deletions

File tree

.github/workflows/test_ert_with_flow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,5 @@ jobs:
8787
yq eval '.model.realizations = [0, 1]' -i config.yml
8888
yq eval '.simulator.queue_system.max_running = 4' -i config.yml
8989
uv run everest lint config.yml
90-
uv run everest run config.yml --skip-prompt --disable-monitoring
90+
uv run everest run config.yml --disable-monitoring
9191
popd

ci/testkomodo.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ run_everest_eightcells_test() {
7575
# shellcheck source=/dev/null
7676
source "${_KOMODO_ROOT}/${_FULL_RELEASE_NAME}/enable"
7777

78-
everest run "$CONFIG" --skip-prompt --debug --disable-monitoring
78+
everest run "$CONFIG" --debug --disable-monitoring
7979
STATUS=$?
8080
if [ $STATUS -ne 0 ]; then
8181
echo "EVEREST eightcells test failed. Running everest kill"

src/ert/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
RangeStringArgument,
5050
ValidationStatus,
5151
)
52+
from everest.bin.utils import remove_show_scaling_warning_setting
5253

5354
logger = logging.getLogger(__name__)
5455

@@ -630,6 +631,7 @@ def main() -> None:
630631
sys.exit(exit_msg)
631632

632633
logger = logging.getLogger(__name__)
634+
remove_show_scaling_warning_setting()
633635
if args.verbose:
634636
root_logger = logging.getLogger()
635637
handler = logging.StreamHandler(sys.stdout)

src/everest/bin/everest_script.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@
3636
ArgParseFormatter,
3737
get_experiment_status,
3838
handle_keyboard_interrupt,
39+
remove_show_scaling_warning_setting,
3940
run_detached_monitor,
4041
run_empty_detached_monitor,
4142
setup_logging,
42-
show_scaled_controls_warning,
4343
)
4444

4545
logger = logging.getLogger(__name__)
@@ -54,6 +54,7 @@ def everest_entry(args: list[str] | None = None) -> None:
5454
makedirs_if_needed(Path(options.config.output_dir), roll_if_exists=True)
5555
with setup_logging(options):
5656
logger.info(version_info())
57+
remove_show_scaling_warning_setting()
5758

5859
client_machine_hostname = socket.gethostname()
5960
server_queue_system = options.config.server.queue_system.name
@@ -150,11 +151,6 @@ def _build_args_parser() -> argparse.ArgumentParser:
150151
"and will be removed in a future version."
151152
),
152153
)
153-
arg_parser.add_argument(
154-
"--skip-prompt",
155-
action="store_true",
156-
help="Flag used to disable user prompts that will stop execution.",
157-
)
158154
arg_parser.add_argument(
159155
"--disable-monitoring",
160156
action="store_true",
@@ -210,8 +206,6 @@ async def directory_is_nonempty(path: Path) -> bool:
210206
options.config.simulation_dir
211207
).exists() and await directory_is_nonempty(options.config.simulation_dir):
212208
warn_user_that_runpath_is_nonempty()
213-
if not options.skip_prompt:
214-
show_scaled_controls_warning()
215209

216210
try:
217211
output_dir = Path(options.config.output_dir)

src/everest/bin/utils.py

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from contextlib import contextmanager
1111
from dataclasses import dataclass, field
1212
from pathlib import Path
13-
from textwrap import dedent
1413
from typing import Any, ClassVar
1514

1615
import yaml
@@ -411,51 +410,55 @@ def run_empty_detached_monitor(
411410
start_monitor(server_context, callback=lambda _: None, experiment_id=experiment_id)
412411

413412

414-
def _read_user_preferences(user_info_path: Path) -> dict[str, dict[str, Any]]:
415-
try:
416-
if user_info_path.exists():
417-
return json.loads(user_info_path.read_text(encoding="utf-8"))
418-
419-
user_info = {EVEREST: {"show_scaling_warning": True}}
420-
user_info_path.write_text(
421-
json.dumps(user_info, ensure_ascii=False, indent=4), encoding="utf-8"
422-
)
423-
except json.decoder.JSONDecodeError:
424-
return {EVEREST: {}}
425-
else:
426-
return user_info
413+
def remove_show_scaling_warning_setting() -> None:
414+
"""Remove the now unused "show_scaling_warning" everest preference from
415+
the legacy ~/.ert preferences file, if present. The whole file is
416+
deleted if removing it leaves the file empty; otherwise the file is
417+
rewritten without that key, preserving any other content.
418+
"""
419+
user_info_path = Path(os.getenv("HOME", "")) / ".ert"
420+
if not user_info_path.exists():
421+
return
427422

423+
logger = logging.getLogger(EVEREST)
424+
content = user_info_path.read_text(encoding="utf-8")
428425

429-
def show_scaled_controls_warning() -> None:
430-
user_info_path = Path(os.getenv("HOME", "")) / ".ert"
431-
user_info = _read_user_preferences(user_info_path)
432-
everest_pref = user_info.get(EVEREST, {})
426+
try:
427+
user_info = json.loads(content)
428+
except json.decoder.JSONDecodeError as e:
429+
logger.info(
430+
"Preserving preferences file %s, could not be parsed: %s",
431+
user_info_path,
432+
e,
433+
)
434+
return
433435

434-
if not everest_pref.get("show_scaling_warning", True):
436+
everest_pref = user_info.get(EVEREST)
437+
if not isinstance(everest_pref, dict) or "show_scaling_warning" not in everest_pref:
435438
return
436439

437-
user_input = input(
438-
dedent("""
439-
From EVEREST version: 14.0.3, EVEREST will output auto-scaled control values.
440-
Control values should now be specified in real-world units instead of the
441-
optimizer's internal scale. The 'scaled_range' property can still be used
442-
to configure the optimizer's range for each control.
443-
444-
[Enter] to continue.
445-
[ Y ] to stop showing this message again.
446-
[ N ] to abort.
447-
""")
448-
).lower()
449-
match user_input:
450-
case "y":
451-
everest_pref["show_scaling_warning"] = False
452-
try:
453-
with Path(user_info_path).open(mode="w", encoding="utf-8") as f:
454-
json.dump(user_info, f, ensure_ascii=False, indent=4)
455-
except Exception as e:
456-
logging.getLogger(EVEREST).error(str(e))
457-
case "n":
458-
raise SystemExit(0)
440+
everest_pref.pop("show_scaling_warning")
441+
if not everest_pref:
442+
user_info.pop(EVEREST)
443+
444+
if not user_info:
445+
user_info_path.unlink()
446+
logger.info(
447+
"Deleted preferences file %s, previously containing: %s",
448+
user_info_path,
449+
content,
450+
)
451+
else:
452+
user_info_path.write_text(
453+
json.dumps(user_info, ensure_ascii=False, indent=4), encoding="utf-8"
454+
)
455+
logger.info(
456+
"Removed legacy show_scaling_warning preference from %s, "
457+
"previous content: %s, remaining content: %s",
458+
user_info_path,
459+
content,
460+
user_info,
461+
)
459462

460463

461464
def get_experiment_status(storage_dir: str) -> ExperimentStatus | None:

tests/everest/entry_points/test_everest_entry.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def test_everest_entry_debug(
5454
patch("everest.bin.utils.LOGGING_CONFIG", logger_conf),
5555
caplog.at_level(logging.DEBUG),
5656
):
57-
everest_entry(["config.yml", "--debug", "--skip"])
57+
everest_entry(["config.yml", "--debug"])
5858
logstream = "\n".join(caplog.messages)
5959
start_server_mock.assert_called_once()
6060
wait_for_server_mock.assert_called_once()
@@ -93,7 +93,7 @@ def test_everest_entry(
9393
Path("config.yml").touch()
9494
config = everest_config_with_defaults(config_path="./config.yml")
9595
config.write_to_file("config.yml")
96-
everest_entry(["config.yml", "--skip"])
96+
everest_entry(["config.yml"])
9797
start_server_mock.assert_called_once()
9898
wait_for_server_mock.assert_called_once()
9999
start_monitor_mock.assert_called_once()
@@ -136,7 +136,7 @@ def test_everest_entry_detached_already_run(
136136
config.write_to_file("config.yml")
137137

138138
# start a new run
139-
everest_entry(["config.yml", "--skip-prompt"])
139+
everest_entry(["config.yml"])
140140
start_server_mock.assert_called_once()
141141
start_monitor_mock.assert_called_once()
142142
start_experiment_mock.assert_called_once()
@@ -152,7 +152,7 @@ def test_everest_entry_detached_already_run(
152152
assert kill_script_client_mock.call_count == 1
153153

154154
# run again, should start a new run like above
155-
everest_entry(["config.yml", "--skip-prompt"])
155+
everest_entry(["config.yml"])
156156
start_server_mock.assert_called_once()
157157
start_monitor_mock.assert_called_once()
158158
start_experiment_mock.assert_called_once()
@@ -214,7 +214,7 @@ def test_everest_entry_detached_running(
214214

215215
# can't start a new run if one is already running
216216
with capture_streams() as (out, _):
217-
everest_entry(["config.yml", "--skip-prompt"])
217+
everest_entry(["config.yml"])
218218
assert "everest kill" in out.getvalue()
219219
assert "everest monitor" in out.getvalue()
220220
start_server_mock.assert_not_called()
@@ -236,7 +236,7 @@ def test_everest_entry_detached_running(
236236
# if already running, nothing happens
237237
assert "everest kill" in out.getvalue()
238238
assert "everest monitor" in out.getvalue()
239-
everest_entry(["config.yml", "--skip-prompt"])
239+
everest_entry(["config.yml"])
240240
kill_script_client_mock.assert_called_once()
241241
start_server_mock.assert_not_called()
242242

@@ -327,7 +327,7 @@ def test_exception_raised_when_server_run_fails(
327327
config.write_to_file("config.yml")
328328

329329
with pytest.raises(SystemError, match="Reality was ripped to shreds!"):
330-
everest_entry(["config.yml", "--skip-prompt"])
330+
everest_entry(["config.yml"])
331331

332332

333333
@patch(
@@ -420,7 +420,7 @@ def test_that_run_everest_prints_where_it_runs(
420420
patch("everest.bin.everest_script.wait_for_server"),
421421
patch("everest.bin.everest_script.start_experiment"),
422422
):
423-
everest_entry(["config.yml", "--skip-prompt"])
423+
everest_entry(["config.yml"])
424424

425425
captured = capsys.readouterr().out
426426

tests/everest/functional/test_main_everest_entry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def test_everest_entry_run(cached_example):
6767

6868
# Setup command line arguments
6969
with capture_streams() as (out, _):
70-
start_everest(["everest", "run", config_file, "--skip-prompt"])
70+
start_everest(["everest", "run", config_file])
7171

7272
assert (
7373
"EVEREST run finished with: Maximum number of batches reached" in out.getvalue()
@@ -166,7 +166,7 @@ def wait_and_kill():
166166
thread.start()
167167

168168
with pytest.raises(SystemExit):
169-
start_everest(["everest", "run", "config.yml", "--skip-prompt"])
169+
start_everest(["everest", "run", "config.yml"])
170170

171171
out = capsys.readouterr().out
172172

tests/everest/test_everest_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def test_that_multiple_everest_clients_can_connect_to_server(
187187

188188
# Run the case through everserver
189189
everest_main_thread = threading.Thread(
190-
target=everest_entry, args=[[str(config_path), "--skip-prompt"]]
190+
target=everest_entry, args=[[str(config_path)]]
191191
)
192192

193193
everest_main_thread.start()

tests/everest/test_everest_output.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_save_running_config(
5252
)
5353
config.write_to_file("config.yml")
5454

55-
everest_entry(["config.yml", "--skip-prompt"])
55+
everest_entry(["config.yml"])
5656
saved_config_path = Path(config.output_dir) / "config.yml"
5757

5858
assert saved_config_path.exists()

tests/everest/test_logging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_logging_setup(copy_math_func_test_data_to_tmp):
4343
# start_server() loads config based on config_path, so we need to actually
4444
# overwrite it
4545
everest_config.write_to_file("config_minimal.yml")
46-
start_everest(["everest", "run", "config_minimal.yml", "--skip-prompt"])
46+
start_everest(["everest", "run", "config_minimal.yml"])
4747

4848
everest_output_path = Path.cwd() / "everest_output"
4949
everest_logs_dir_path = Path(everest_config.log_dir)

0 commit comments

Comments
 (0)