Skip to content

Commit 6004180

Browse files
committed
rename prompt_utils.py to interactive_utils.py
The reason this is clearer is that prompt_utils.py is not related to prompt_toolkit, nor the REPL prompt format string.
1 parent a5308b2 commit 6004180

File tree

8 files changed

+32
-31
lines changed

8 files changed

+32
-31
lines changed

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ A command line client for MySQL with auto-completion and syntax highlighting.
3131
├── mycli/packages/completion_engine.py # implementation of completion suggestions
3232
├── mycli/packages/filepaths.py # utilities for files, including completion suggestions
3333
├── mycli/packages/hybrid_redirection.py # implementation of shell-style redirects
34+
├── mycli/packages/interactive_utils.py # utilities for confirming on destructive statements
3435
├── mycli/packages/paramiko_stub/ # stub in case the Paramiko library is not installed
3536
├── mycli/packages/sql_utils.py # utilities for parsing SQL statements
36-
├── mycli/packages/prompt_utils.py # utilities for confirming on destructive statements
3737
├── mycli/packages/ptoolkit/ # extends prompt_toolkit
3838
├── mycli/packages/shortcuts.py # utilities for keyboard shortcuts
3939
├── mycli/packages/special/ # implementation of mycli special commands

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Internal
4646
* Move SQL utilities to a new `sql_utils.py`.
4747
* Move CLI utilities to a new `cli_utils.py`.
4848
* Move keybinding utilities to a new `key_binding_utils.py`.
49+
* Move interactive utilities to `interactive_utils.py`.
4950

5051

5152
1.67.1 (2026/03/28)

mycli/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
from mycli.packages import special
7676
from mycli.packages.cli_utils import filtered_sys_argv, is_valid_connection_scheme
7777
from mycli.packages.filepaths import dir_path_exists, guess_socket_location
78-
from mycli.packages.prompt_utils import confirm_destructive_query
78+
from mycli.packages.interactive_utils import confirm_destructive_query
7979
from mycli.packages.special.favoritequeries import FavoriteQueries
8080
from mycli.packages.special.main import ArgType
8181
from mycli.packages.sqlresult import SQLResult

mycli/main_modes/batch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import pymysql
1313

1414
from mycli.packages.batch_utils import statements_from_filehandle
15-
from mycli.packages.prompt_utils import confirm_destructive_query
15+
from mycli.packages.interactive_utils import confirm_destructive_query
1616
from mycli.packages.sql_utils import is_destructive
1717

1818
if TYPE_CHECKING:

mycli/main_modes/repl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@
4747
from mycli.packages import special
4848
from mycli.packages.filepaths import dir_path_exists
4949
from mycli.packages.hybrid_redirection import get_redirect_components, is_redirect_command
50+
from mycli.packages.interactive_utils import confirm, confirm_destructive_query
5051
from mycli.packages.key_binding_utils import (
5152
handle_clip_command,
5253
handle_editor_command,
5354
)
54-
from mycli.packages.prompt_utils import confirm, confirm_destructive_query
5555
from mycli.packages.ptoolkit.history import FileHistoryWithTimestamp
5656
from mycli.packages.special.utils import format_uptime, get_ssl_version, get_uptime, get_warning_count
5757
from mycli.packages.sql_utils import (

mycli/packages/special/iocommands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import sqlparse
1818

1919
from mycli.compat import WIN
20-
from mycli.packages.prompt_utils import confirm_destructive_query
20+
from mycli.packages.interactive_utils import confirm_destructive_query
2121
from mycli.packages.special.delimitercommand import DelimiterCommand
2222
from mycli.packages.special.favoritequeries import FavoriteQueries
2323
from mycli.packages.special.main import COMMANDS as SPECIAL_COMMANDS
Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import click
44
import pytest
55

6-
from mycli.packages import prompt_utils
6+
from mycli.packages import interactive_utils
77

88

99
def test_confirm_bool_param_type_converts_bool_and_strings() -> None:
10-
boolean_type = prompt_utils.ConfirmBoolParamType()
10+
boolean_type = interactive_utils.ConfirmBoolParamType()
1111

1212
assert boolean_type.convert(True, None, None) is True
1313
assert boolean_type.convert(False, None, None) is False
@@ -19,7 +19,7 @@ def test_confirm_bool_param_type_converts_bool_and_strings() -> None:
1919

2020

2121
def test_confirm_bool_param_type_rejects_invalid_string() -> None:
22-
boolean_type = prompt_utils.ConfirmBoolParamType()
22+
boolean_type = interactive_utils.ConfirmBoolParamType()
2323

2424
with pytest.raises(click.BadParameter, match='maybe is not a valid boolean'):
2525
boolean_type.convert('maybe', None, None)
@@ -38,13 +38,13 @@ def fake_is_destructive(keywords: list[str], query: str) -> bool:
3838
destructive_calls.append((keywords, query))
3939
return False
4040

41-
monkeypatch.setattr(prompt_utils, 'is_destructive', fake_is_destructive)
42-
monkeypatch.setattr(prompt_utils, 'prompt', fake_prompt)
43-
monkeypatch.setattr(prompt_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
41+
monkeypatch.setattr(interactive_utils, 'is_destructive', fake_is_destructive)
42+
monkeypatch.setattr(interactive_utils, 'prompt', fake_prompt)
43+
monkeypatch.setattr(interactive_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
4444

4545
keywords = ['drop']
4646
query = 'select 1;'
47-
assert prompt_utils.confirm_destructive_query(keywords, query) is None
47+
assert interactive_utils.confirm_destructive_query(keywords, query) is None
4848
assert destructive_calls == [(keywords, query)]
4949
assert prompt_called is False
5050

@@ -57,13 +57,13 @@ def fake_prompt(*args: object, **kwargs: object) -> bool:
5757
prompt_called = True
5858
return True
5959

60-
monkeypatch.setattr(prompt_utils, 'is_destructive', lambda keywords, query: True)
61-
monkeypatch.setattr(prompt_utils, 'prompt', fake_prompt)
62-
monkeypatch.setattr(prompt_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: False))
60+
monkeypatch.setattr(interactive_utils, 'is_destructive', lambda keywords, query: True)
61+
monkeypatch.setattr(interactive_utils, 'prompt', fake_prompt)
62+
monkeypatch.setattr(interactive_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: False))
6363

6464
keywords = ['drop']
6565
sql = 'drop database foo;'
66-
assert prompt_utils.confirm_destructive_query(keywords, sql) is None
66+
assert interactive_utils.confirm_destructive_query(keywords, sql) is None
6767
assert prompt_called is False
6868

6969

@@ -79,20 +79,20 @@ def fake_is_destructive(keywords: list[str], query: str) -> bool:
7979
destructive_calls.append((keywords, query))
8080
return True
8181

82-
monkeypatch.setattr(prompt_utils, 'is_destructive', fake_is_destructive)
83-
monkeypatch.setattr(prompt_utils, 'prompt', fake_prompt)
84-
monkeypatch.setattr(prompt_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
82+
monkeypatch.setattr(interactive_utils, 'is_destructive', fake_is_destructive)
83+
monkeypatch.setattr(interactive_utils, 'prompt', fake_prompt)
84+
monkeypatch.setattr(interactive_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
8585

8686
keywords = ['drop']
8787
query = 'drop database foo;'
88-
result = prompt_utils.confirm_destructive_query(keywords, query)
88+
result = interactive_utils.confirm_destructive_query(keywords, query)
8989

9090
assert result is True
9191
assert destructive_calls == [(keywords, query)]
9292
assert prompt_calls == [
9393
(
9494
("You're about to run a destructive command.\nDo you want to proceed? (y/n)",),
95-
{'type': prompt_utils.BOOLEAN_TYPE},
95+
{'type': interactive_utils.BOOLEAN_TYPE},
9696
)
9797
]
9898

@@ -109,18 +109,18 @@ def fake_is_destructive(keywords: list[str], query: str) -> bool:
109109
destructive_calls.append((keywords, query))
110110
return True
111111

112-
monkeypatch.setattr(prompt_utils, 'is_destructive', fake_is_destructive)
113-
monkeypatch.setattr(prompt_utils, 'prompt', fake_prompt)
114-
monkeypatch.setattr(prompt_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
112+
monkeypatch.setattr(interactive_utils, 'is_destructive', fake_is_destructive)
113+
monkeypatch.setattr(interactive_utils, 'prompt', fake_prompt)
114+
monkeypatch.setattr(interactive_utils.sys, 'stdin', SimpleNamespace(isatty=lambda: True))
115115

116116
keywords = ['drop']
117117
query = 'drop database foo;'
118-
assert prompt_utils.confirm_destructive_query(keywords, query) is False
118+
assert interactive_utils.confirm_destructive_query(keywords, query) is False
119119
assert destructive_calls == [(keywords, query)]
120120
assert prompt_calls == [
121121
(
122122
("You're about to run a destructive command.\nDo you want to proceed? (y/n)",),
123-
{'type': prompt_utils.BOOLEAN_TYPE},
123+
{'type': interactive_utils.BOOLEAN_TYPE},
124124
)
125125
]
126126

@@ -131,7 +131,7 @@ def fake_confirm(*args: object, **kwargs: object) -> bool:
131131

132132
monkeypatch.setattr(click, 'confirm', fake_confirm)
133133

134-
assert prompt_utils.confirm('continue?') is False
134+
assert interactive_utils.confirm('continue?') is False
135135

136136

137137
def test_confirm_delegates_to_click_confirm(monkeypatch: pytest.MonkeyPatch) -> None:
@@ -143,7 +143,7 @@ def fake_confirm(*args: object, **kwargs: object) -> bool:
143143

144144
monkeypatch.setattr(click, 'confirm', fake_confirm)
145145

146-
assert prompt_utils.confirm('continue?', default=True) is True
146+
assert interactive_utils.confirm('continue?', default=True) is True
147147
assert calls == [(('continue?',), {'default': True})]
148148

149149

@@ -153,7 +153,7 @@ def fake_prompt(*args: object, **kwargs: object) -> bool:
153153

154154
monkeypatch.setattr(click, 'prompt', fake_prompt)
155155

156-
assert prompt_utils.prompt('continue?') is False
156+
assert interactive_utils.prompt('continue?') is False
157157

158158

159159
def test_prompt_delegates_to_click_prompt(monkeypatch: pytest.MonkeyPatch) -> None:
@@ -165,5 +165,5 @@ def fake_prompt(*args: object, **kwargs: object) -> bool:
165165

166166
monkeypatch.setattr(click, 'prompt', fake_prompt)
167167

168-
assert prompt_utils.prompt('continue?', type=prompt_utils.BOOLEAN_TYPE) is True
169-
assert calls == [(('continue?',), {'type': prompt_utils.BOOLEAN_TYPE})]
168+
assert interactive_utils.prompt('continue?', type=interactive_utils.BOOLEAN_TYPE) is True
169+
assert calls == [(('continue?',), {'type': interactive_utils.BOOLEAN_TYPE})]

0 commit comments

Comments
 (0)