Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: Improve UI/UX of the Run plugin configuration widgets #22141

Merged
merged 57 commits into from
Jun 18, 2024
Merged
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
e73518d
Run: Hide file combobox in RunDialog
ccordoba12 Oct 29, 2023
5e0182f
Run: Remove checkbox to always show RunDialog
ccordoba12 Oct 29, 2023
2c33b79
Run: Simplify layout of executor and parameters comboboxes in RunDialog
ccordoba12 Oct 29, 2023
91f2ddb
Run: Automatically save config if customized by users in RunDialog
ccordoba12 Oct 30, 2023
e52c13f
Run: Initial UX improvements for ExecutionParametersDialog and conf page
ccordoba12 Oct 31, 2023
bdbef37
Run: Fix deleting parameters from its config page
ccordoba12 Nov 3, 2023
1dcf7d5
Widgets: Make HoverRowsTableView highlight a hovered row on its own
ccordoba12 Nov 3, 2023
448cc85
Run: Make RunParametersTableView highlight its rows on hover
ccordoba12 Nov 3, 2023
db398f7
Run: Fix saving config parameters when the user has saved some before
ccordoba12 Nov 5, 2023
f57ba7b
Widgets: Add a new CollapsibleWidget to hide and show child widgets
ccordoba12 Nov 8, 2023
51063c8
Run: Group widgets to customize config into a collapsible one in RunD…
ccordoba12 Nov 8, 2023
530bc9a
Minor fixes to the run config group of several plugins
ccordoba12 Nov 8, 2023
3a48a87
Run: Center dialog after custom_config widget is expanded/collapsed
ccordoba12 Nov 8, 2023
8be23b4
Merge branch 'master' into improve-run-config-ux
ccordoba12 May 16, 2024
f5cc47c
Widgets: Change cursor shape when hovering toggle button of Collapsib…
ccordoba12 May 16, 2024
ebf949f
Run: Several fixes to its widgets
ccordoba12 May 17, 2024
543ad31
IPython console: Rename file that contains run conf options to run_conf
ccordoba12 May 17, 2024
5c00548
Set min width for command line options of run conf widgets
ccordoba12 May 17, 2024
34366eb
Run: Additional UI improvements for ExecutionParametersDialog
ccordoba12 May 18, 2024
03adbaf
Run: Correctly set bottom margins for QGroupBoxes shown in its dialogs
ccordoba12 May 18, 2024
f0a0aba
Run: Allow to delete and save globally config parameters in RunDialog
ccordoba12 May 18, 2024
2706ea3
Editor: Remove unnecessary run extensions
ccordoba12 May 20, 2024
4e07ae5
Simplify code related to Run options in plugins to make it easier to …
ccordoba12 May 20, 2024
a070cf6
Run: Save default executor configurations to our config system
ccordoba12 May 20, 2024
e22e6c9
Run: Don't allow to remove default executor parameters in its confpage
ccordoba12 May 21, 2024
736721b
Run: More UI improvements to its confpage
ccordoba12 May 21, 2024
fac3f3b
Run: Improve UI of ExecutorRunParametersTableModel
ccordoba12 May 21, 2024
3b5b773
Run: Add "Edit selected" button to its confpage
ccordoba12 May 22, 2024
ddb8541
Run: Improve ExecutionParametersDialog UI when displaying default params
ccordoba12 May 22, 2024
74d45fb
Run: Improve code and UX related to reset changes in its confpage
ccordoba12 May 22, 2024
02c753b
Stylesheet: Move style declaration to SidebarDialog
ccordoba12 May 23, 2024
daed316
Run: Fix saving and executing custom configs in RunDialog
ccordoba12 May 24, 2024
3375eb4
Run: Improve RunDialog layout and style
ccordoba12 May 24, 2024
5e1862d
Run: Prevent saving global configs for different conditions in RunDialog
ccordoba12 May 29, 2024
a1a7d7b
Run: Add tip widgets in several places of RunDialog
ccordoba12 May 29, 2024
df272ec
Run: Fix content's right margin of custom_config widget in RunDialog
ccordoba12 May 29, 2024
16b070c
App: Filter warnings shown when uncollapsing CollapsibleWidget
ccordoba12 May 29, 2024
2d14675
Run: Fix a couple of errors with its dialogs
ccordoba12 May 31, 2024
ebab9c6
External terminal: Improve UI of ExternalTerminalShConfiguration widget
ccordoba12 Jun 1, 2024
e5fa369
Merge branch 'master' into improve-run-config-ux
ccordoba12 Jun 2, 2024
9910e1b
Testing: Fix failing main windows tests
ccordoba12 Jun 2, 2024
ce66902
Run: UI fixes for Mac and Windows
ccordoba12 Jun 3, 2024
36dea53
API: Add kwarg to force rendering a SpyderMenu
ccordoba12 Jun 4, 2024
4c660c2
Run: Fix style of buttons used to select a directory
ccordoba12 Jun 4, 2024
ffc08a5
Run: Remove "Save globally" button and move "Delete" one to button box
ccordoba12 Jun 8, 2024
9e87ea5
Run: Don't allow to save file parameters with a repeated name
ccordoba12 Jun 8, 2024
a6eb582
Run: Improve validation of global configuration names
ccordoba12 Jun 8, 2024
06e35bd
Run: Fix disabling edit/delete/clone buttons after some operations
ccordoba12 Jun 8, 2024
dcc838a
Run: Simplify layout of buttons in its confpage
ccordoba12 Jun 8, 2024
5598cf1
Run: Fix Reset button in ExecutionParametersDialog
ccordoba12 Jun 9, 2024
3d85d44
Run: Remove "Runner settings" groupbox to simplify its dialogs
ccordoba12 Jun 9, 2024
b741f4e
Run: Add menu entry to go to its Preferences page
ccordoba12 Jun 10, 2024
554ed05
Run: Use table_model current executor params when deleting confs
ccordoba12 Jun 11, 2024
353e4bd
Run: Make customizing global configs for files easier in RunDialog
ccordoba12 Jun 11, 2024
ef830c7
Apply suggestions from code review
ccordoba12 Jun 17, 2024
b1e6280
Utils: Add accessors to SpyderApplication for main window properties
ccordoba12 Jun 18, 2024
5e801e3
Testing: Fix failing tests due to the Numpy 2.0 release
ccordoba12 Jun 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion binder/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ dependencies:
- setuptools >=49.6.0
- sphinx >=0.6.6
- spyder-kernels >=3.0.0b6,<3.0.0b7
- superqt >=0.6.1,<1.0.0
- superqt >=0.6.2,<1.0.0
- textdistance >=4.2.0
- three-merge >=0.1.1
- watchdog >=0.10.3
Expand Down
2 changes: 1 addition & 1 deletion requirements/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dependencies:
- setuptools >=49.6.0
- sphinx >=0.6.6
- spyder-kernels >=3.0.0b6,<3.0.0b7
- superqt >=0.6.1,<1.0.0
- superqt >=0.6.2,<1.0.0
- textdistance >=4.2.0
- three-merge >=0.1.1
- watchdog >=0.10.3
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ def run(self):
'setuptools>=49.6.0',
'sphinx>=0.6.6',
'spyder-kernels>=3.0.0b6,<3.0.0b7',
'superqt>=0.6.1,<1.0.0',
'superqt>=0.6.2,<1.0.0',
'textdistance>=4.2.0',
'three-merge>=0.1.1',
'watchdog>=0.10.3',
Expand Down
9 changes: 7 additions & 2 deletions spyder/api/widgets/menus.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,17 @@ def _add_missing_actions(self):

self._unintroduced_actions = {}

def render(self):
def render(self, force=False):
"""
Create the menu prior to showing it. This takes into account sections
and location of menus.

Parameters
----------
force: bool, optional
Whether to force rendering the menu.
"""
if self._dirty:
if self._dirty or force:
self.clear()
self._add_missing_actions()

Expand Down
1 change: 0 additions & 1 deletion spyder/app/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,6 @@ def generate_run_parameters(mainwindow, filename, selected=None,
file_run_params = StoredRunConfigurationExecutor(
executor=executor,
selected=selected,
display_dialog=False
)

return {file_uuid: file_run_params}
Expand Down
106 changes: 23 additions & 83 deletions spyder/app/tests/test_mainwindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,9 +438,6 @@ def test_get_help_ipython_console_dot_notation(main_window, qtbot, tmpdir):
main_window.editor.load(test_file)
code_editor = main_window.editor.get_focus_widget()

run_parameters = generate_run_parameters(main_window, test_file)
CONF.set('run', 'last_used_parameters', run_parameters)

# Run test file
qtbot.keyClick(code_editor, Qt.Key_F5)
qtbot.wait(500)
Expand Down Expand Up @@ -483,9 +480,6 @@ def test_get_help_ipython_console_special_characters(
main_window.editor.load(test_file)
code_editor = main_window.editor.get_focus_widget()

run_parameters = generate_run_parameters(main_window, test_file)
CONF.set('run', 'last_used_parameters', run_parameters)

# Run test file
qtbot.keyClick(code_editor, Qt.Key_F5)
qtbot.wait(500)
Expand Down Expand Up @@ -726,7 +720,12 @@ def test_runconfig_workdir(main_window, qtbot, tmpdir):

exec_uuid = str(uuid.uuid4())
ext_exec_conf = ExtendedRunExecutionParameters(
uuid=exec_uuid, name='TestConf', params=exec_conf)
uuid=exec_uuid,
name="TestConf",
params=exec_conf,
default=False,
file_uuid=None,
)

ipy_dict = {ipyconsole.NAME: {
('py', RunContext.File): {'params': {exec_uuid: ext_exec_conf}}
Expand Down Expand Up @@ -809,7 +808,12 @@ def test_dedicated_consoles(main_window, qtbot):

exec_uuid = str(uuid.uuid4())
ext_exec_conf = ExtendedRunExecutionParameters(
uuid=exec_uuid, name='TestConf', params=exec_conf)
uuid=exec_uuid,
name="TestConf",
params=exec_conf,
default=False,
file_uuid=None,
)

ipy_dict = {ipyconsole.NAME: {
('py', RunContext.File): {'params': {exec_uuid: ext_exec_conf}}
Expand Down Expand Up @@ -918,7 +922,12 @@ def test_shell_execution(main_window, qtbot, tmpdir):

exec_uuid = str(uuid.uuid4())
ext_exec_conf = ExtendedRunExecutionParameters(
uuid=exec_uuid, name='TestConf', params=exec_conf)
uuid=exec_uuid,
name="TestConf",
params=exec_conf,
default=False,
file_uuid=None,
)

ipy_dict = {external_terminal.NAME: {
(ext, RunContext.File): {'params': {exec_uuid: ext_exec_conf}}
Expand Down Expand Up @@ -946,8 +955,10 @@ def test_shell_execution(main_window, qtbot, tmpdir):


@flaky(max_runs=3)
@pytest.mark.skipif(sys.platform.startswith('linux'),
reason="Fails frequently on Linux")
@pytest.mark.skipif(
sys.platform.startswith('linux') and running_in_ci(),
reason="Fails frequently on Linux"
ccordoba12 marked this conversation as resolved.
Show resolved Hide resolved
)
@pytest.mark.order(after="test_debug_unsaved_function")
def test_connection_to_external_kernel(main_window, qtbot):
"""Test that only Spyder kernels are connected to the Variable Explorer."""
Expand Down Expand Up @@ -993,10 +1004,6 @@ def test_connection_to_external_kernel(main_window, qtbot):
"print(2 + 1)"
)

file_path = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, file_path)
CONF.set('run', 'last_used_parameters', run_parameters)

# Start running
with qtbot.waitSignal(shell.executed):
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)
Expand Down Expand Up @@ -1161,10 +1168,6 @@ def test_run_cython_code(main_window, qtbot):
file_path = osp.join(LOCATION, 'pyx_script.pyx')
main_window.editor.load(file_path)

# --- Set run options for this file ---
run_parameters = generate_run_parameters(main_window, file_path)
CONF.set('run', 'last_used_parameters', run_parameters)

# Run file
qtbot.keyClick(code_editor, Qt.Key_F5)

Expand All @@ -1188,10 +1191,6 @@ def test_run_cython_code(main_window, qtbot):
file_path = osp.join(LOCATION, 'pyx_lib_import.py')
main_window.editor.load(file_path)

# --- Set run options for this file --
run_parameters = generate_run_parameters(main_window, file_path)
CONF.set('run', 'last_used_parameters', run_parameters)

# Run file
qtbot.keyClick(code_editor, Qt.Key_F5)

Expand Down Expand Up @@ -1436,9 +1435,6 @@ def test_run_code(main_window, qtbot, tmpdir):
# Get a reference to the namespace browser widget
nsb = main_window.variableexplorer.current_widget()

run_parameters = generate_run_parameters(main_window, filepath)
CONF.set('run', 'last_used_parameters', run_parameters)

# ---- Run file ----
with qtbot.waitSignal(shell.executed):
qtbot.keyClick(code_editor, Qt.Key_F5)
Expand Down Expand Up @@ -1847,9 +1843,6 @@ def test_maximize_minimize_plugins(main_window, qtbot):
exclude=[Plugins.Editor, Plugins.IPythonConsole]
)
qtbot.mouseClick(max_button, Qt.LeftButton)

run_parameters = generate_run_parameters(main_window, test_file)
CONF.set('run', 'last_used_parameters', run_parameters)
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)

assert not plugin_3.get_widget().get_maximized_state()
Expand Down Expand Up @@ -3295,10 +3288,6 @@ def test_preferences_empty_shortcut_regression(main_window, qtbot):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text(u'print(0)\n#%%\nprint(ññ)')

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

with qtbot.waitSignal(shell.executed):
qtbot.keyClick(code_editor, Qt.Key_Return, modifier=Qt.ShiftModifier)
qtbot.waitUntil(lambda: u'print(0)' in shell._control.toPlainText())
Expand Down Expand Up @@ -3602,10 +3591,6 @@ def test_varexp_rename(main_window, qtbot, tmpdir):
# Get a reference to the namespace browser widget
nsb = main_window.variableexplorer.current_widget()

# --- Set run options for this file ---
run_parameters = generate_run_parameters(main_window, filepath)
CONF.set('run', 'last_used_parameters', run_parameters)

# ---- Run file ----
with qtbot.waitSignal(shell.executed):
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)
Expand Down Expand Up @@ -3673,10 +3658,6 @@ def test_varexp_remove(main_window, qtbot, tmpdir):
# Get a reference to the namespace browser widget
nsb = main_window.variableexplorer.current_widget()

# --- Set run options for this file ---
run_parameters = generate_run_parameters(main_window, filepath)
CONF.set('run', 'last_used_parameters', run_parameters)

# ---- Run file ----
with qtbot.waitSignal(shell.executed, timeout=SHELL_TIMEOUT):
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)
Expand Down Expand Up @@ -3757,10 +3738,6 @@ def test_runcell_edge_cases(main_window, qtbot, tmpdir):
lambda: shell.spyder_kernel_ready and shell._prompt_html is not None,
timeout=SHELL_TIMEOUT)

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

# call runcell
with qtbot.waitSignal(shell.executed):
qtbot.mouseClick(main_window.run_cell_and_advance_button,
Expand Down Expand Up @@ -3810,10 +3787,6 @@ def test_runcell_pdb(main_window, qtbot):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text(code)

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

# Start debugging
with qtbot.waitSignal(shell.executed, timeout=SHELL_TIMEOUT):
qtbot.mouseClick(debug_button, Qt.LeftButton)
Expand Down Expand Up @@ -3858,10 +3831,6 @@ def test_runcell_cache(main_window, qtbot, debug):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text(code)

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

if debug:
# Start debugging
with qtbot.waitSignal(shell.executed):
Expand Down Expand Up @@ -4112,10 +4081,6 @@ def test_runcell_after_restart(main_window, qtbot):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text(code)

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

# Restart Kernel
widget = main_window.ipyconsole.get_widget()
with qtbot.waitSignal(shell.sig_prompt_ready, timeout=10000):
Expand Down Expand Up @@ -4435,10 +4400,6 @@ def test_run_unsaved_file_multiprocessing(main_window, qtbot):
code_editor.set_text(text)
# This code should run even on windows

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

# Start running
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)

Expand Down Expand Up @@ -5515,10 +5476,6 @@ def test_func():
timeout=SHELL_TIMEOUT)
control = main_window.ipyconsole.get_widget().get_focus_widget()

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

main_window.editor.get_widget().update_run_focus_file()
qtbot.wait(2000)

Expand Down Expand Up @@ -5554,10 +5511,6 @@ def crash_func():
timeout=SHELL_TIMEOUT)
control = main_window.ipyconsole.get_widget().get_focus_widget()

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

main_window.editor.get_widget().update_run_focus_file()
qtbot.wait(2000)

Expand Down Expand Up @@ -5707,10 +5660,6 @@ def test_debug_unsaved_function(main_window, qtbot):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text('def foo():\n print(1)')

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

main_window.editor.get_widget().update_run_focus_file()
qtbot.wait(2000)

Expand Down Expand Up @@ -5757,10 +5706,6 @@ def test_out_runfile_runcell(main_window, qtbot):
code_editor = main_window.editor.get_focus_widget()
code_editor.set_text(code)

fname = main_window.editor.get_current_filename()
run_parameters = generate_run_parameters(main_window, fname)
CONF.set('run', 'last_used_parameters', run_parameters)

with qtbot.waitSignal(shell.executed):
qtbot.mouseClick(main_window.run_cell_button,
Qt.LeftButton)
Expand Down Expand Up @@ -5809,10 +5754,6 @@ def test_print_frames(main_window, qtbot, tmpdir, thread):
debugger = main_window.debugger.get_widget()
frames_browser = debugger.current_widget().results_browser

# --- Set run options for this file ---
run_parameters = generate_run_parameters(main_window, str(p))
CONF.set('run', 'last_used_parameters', run_parameters)

# Click the run button
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)
qtbot.wait(1000)
Expand Down Expand Up @@ -6496,6 +6437,7 @@ def test_PYTHONPATH_in_consoles(main_window, qtbot, tmp_path,

@flaky(max_runs=10)
@pytest.mark.skipif(sys.platform == 'darwin', reason="Fails on Mac")
@pytest.mark.order(before='test_shell_execution')
def test_clickable_ipython_tracebacks(main_window, qtbot, tmp_path):
"""
Test that file names in IPython console tracebacks are clickable.
Expand Down Expand Up @@ -6526,8 +6468,6 @@ def test_clickable_ipython_tracebacks(main_window, qtbot, tmp_path):
qtbot.keyClicks(code_editor, '1/0')

# Run test file
run_parameters = generate_run_parameters(main_window, test_file)
CONF.set('run', 'last_used_parameters', run_parameters)
qtbot.mouseClick(main_window.run_button, Qt.LeftButton)
qtbot.wait(500)

Expand Down
19 changes: 19 additions & 0 deletions spyder/app/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,15 @@ def qt_message_handler(msg_type, msg_log_context, msg_string):
# This is shown when expanding/collpasing folders in the Files plugin
# after spyder-ide/spyder#
"QFont::setPixelSize: Pixel size <= 0 (0)",
# These warnings are shown uncollapsing CollapsibleWidget
"QPainter::begin: Paint device returned engine == 0, type: 2",
"QPainter::save: Painter not active",
"QPainter::setPen: Painter not active",
"QPainter::setWorldTransform: Painter not active",
"QPainter::setOpacity: Painter not active",
"QFont::setPixelSize: Pixel size <= 0 (-3)",
"QPainter::setFont: Painter not active",
"QPainter::restore: Unbalanced save/restore",
dalthviz marked this conversation as resolved.
Show resolved Hide resolved
]
if msg_string not in BLACKLIST:
print(msg_string) # spyder: test-skip
Expand Down Expand Up @@ -358,6 +367,16 @@ def create_window(WindowClass, app, splash, options, args):
main.show()
main.post_visible_setup()

# Add a reference to the main window so it can be accessed from anywhere.
#
# Notes
# -----
# * This should be used to get main window properties (such as width,
# height or position) that other widgets can need to position relative to
# it.
# * **DO NOT** use it to access other plugins functionality through it.
app.main_window = main
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than giving access to the whole main window shouldn't be created specific accessors? So, leaving this as app._main_window = main and creating a set of functions to get the values needed so get_mainwindow_width, get_mainwindow_height, get_mainwindow_position, etc?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a very good idea! Thanks @dalthviz for the suggestion 👍🏽

I'll implement it before merging.


if main.console:
main.console.start_interpreter(namespace={})
main.console.set_namespace_item('spy', Spy(app=app, window=main))
Expand Down
1 change: 0 additions & 1 deletion spyder/config/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -643,7 +643,6 @@
('run', [
'breakpoints',
'configurations',
'defaultconfiguration',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no need to bump the config version, right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This config option wasn't used anywhere. That's why I didn't bump CONF_VERSION.

'default/wdir/fixed_directory',
'last_used_parameters',
'parameters'
Expand Down
2 changes: 1 addition & 1 deletion spyder/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
SETUPTOOLS_REQVER = '>=49.6.0'
SPHINX_REQVER = '>=0.6.6'
SPYDER_KERNELS_REQVER = '>=3.0.0b6,<3.0.0b7'
SUPERQT_REQVER = '>=0.6.1,<1.0.0'
SUPERQT_REQVER = '>=0.6.2,<1.0.0'
TEXTDISTANCE_REQVER = '>=4.2.0'
THREE_MERGE_REQVER = '>=0.1.1'
WATCHDOG_REQVER = '>=0.10.3'
Expand Down
Loading