diff --git a/binder/environment.yml b/binder/environment.yml index 3d92f93adda..c4668fea0b0 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -33,6 +33,7 @@ dependencies: - pyqtwebengine <5.16 - python-lsp-black >=1.2.0,<3.0.0 - python-lsp-server >=1.7.4,<1.8.0 +- pyuca >=1.2 - pyxdg >=0.26 - pyzmq >=22.1.0 - qdarkstyle >=3.0.2,<3.2.0 diff --git a/requirements/main.yml b/requirements/main.yml index 8e015098f7a..311f9aa56d9 100644 --- a/requirements/main.yml +++ b/requirements/main.yml @@ -31,6 +31,7 @@ dependencies: - pyqtwebengine <5.16 - python-lsp-black >=1.2.0,<3.0.0 - python-lsp-server >=1.7.4,<1.8.0 + - pyuca >=1.2 - pyzmq >=22.1.0 - qdarkstyle >=3.0.2,<3.2.0 - qstylizer >=0.2.2 diff --git a/setup.py b/setup.py index 61be0c3fec8..881dad503a6 100644 --- a/setup.py +++ b/setup.py @@ -224,11 +224,12 @@ def run(self): 'pygments>=2.0', 'pylint>=2.5.0,<3.0', 'pylint-venv>=3.0.2', - 'python-lsp-black>=1.2.0,<3.0.0', 'pyls-spyder>=0.4.0', 'pyqt5<5.16', 'pyqtwebengine<5.16', + 'python-lsp-black>=1.2.0,<3.0.0', 'python-lsp-server[all]>=1.7.4,<1.8.0', + 'pyuca>=1.2', 'pyxdg>=0.26;platform_system=="Linux"', 'pyzmq>=22.1.0', 'qdarkstyle>=3.0.2,<3.2.0', diff --git a/spyder/api/plugin_registration/_confpage.py b/spyder/api/plugin_registration/_confpage.py index ba9508ac70e..520e1f9e920 100644 --- a/spyder/api/plugin_registration/_confpage.py +++ b/spyder/api/plugin_registration/_confpage.py @@ -7,6 +7,7 @@ """Plugin registry configuration page.""" # Third party imports +from pyuca import Collator from qtpy.QtWidgets import QVBoxLayout, QLabel # Local imports @@ -88,8 +89,9 @@ def setup_page(self): self.plugins_checkboxes[plugin_name] = (cb, plugin_state) # Sort elements by title for easy searching - internal_elements.sort(key=lambda e: e['title']) - external_elements.sort(key=lambda e: e['title']) + collator = Collator() + internal_elements.sort(key=lambda e: collator.sort_key(e['title'])) + external_elements.sort(key=lambda e: collator.sort_key(e['title'])) # Build plugins table, showing external plugins first. plugins_table = ElementsTable( diff --git a/spyder/dependencies.py b/spyder/dependencies.py index c156867d3e7..d0d413650ec 100644 --- a/spyder/dependencies.py +++ b/spyder/dependencies.py @@ -55,6 +55,7 @@ PYLSP_REQVER = '>=1.7.4,<1.8.0' PYLSP_BLACK_REQVER = '>=1.2.0,<3.0.0' PYLS_SPYDER_REQVER = '>=0.4.0' +PYUCA_REQVER = '>=1.2' PYXDG_REQVER = '>=0.26' PYZMQ_REQVER = '>=22.1.0' QDARKSTYLE_REQVER = '>=3.0.2,<3.2.0' @@ -194,6 +195,10 @@ 'package_name': 'pyls-spyder', 'features': _('Spyder plugin for the Python LSP Server'), 'required_version': PYLS_SPYDER_REQVER}, + {'modname': 'pyuca', + 'package_name': 'pyuca', + 'features': _('Properly sort lists of non-English strings'), + 'required_version': PYUCA_REQVER}, {'modname': "xdg", 'package_name': "pyxdg", 'features': _("Parse desktop files on Linux"),