diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index fbe0daac7..b8f093569 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -12,4 +12,3 @@
 #
 # <full commit hash>  # initial black-format 
 # <full commit hash>  # rename something internal
-6e748726282d1acb9a4f9f264ee679c474c4b8f5  # Apply pygrade --36plus on IPython/core/tests/test_inputtransformer.py.
diff --git a/IPython/core/completer.py b/IPython/core/completer.py
index 01730fff2..9091ccad5 100644
--- a/IPython/core/completer.py
+++ b/IPython/core/completer.py
@@ -1708,8 +1708,6 @@ def latex_matches(self, text):
         u"""Match Latex syntax for unicode characters.
 
         This does both ``\\alp`` -> ``\\alpha`` and ``\\alpha`` -> ``α``
-
-        Used on Python 3 only.
         """
         slashpos = text.rfind('\\')
         if slashpos > -1:
@@ -1722,7 +1720,8 @@ def latex_matches(self, text):
                 # If a user has partially typed a latex symbol, give them
                 # a full list of options \al -> [\aleph, \alpha]
                 matches = [k for k in latex_symbols if k.startswith(s)]
-                return s, matches
+                if matches:
+                    return s, matches
         return u'', []
 
     def dispatch_custom_completer(self, text):
diff --git a/tools/configure-git-blame-ignore-revs.sh b/tools/configure-git-blame-ignore-revs.sh
old mode 100755
new mode 100644
index 390d18778..e1892ef4d
--- a/tools/configure-git-blame-ignore-revs.sh
+++ b/tools/configure-git-blame-ignore-revs.sh
@@ -1,4 +1,3 @@
-#!/bin/sh
 # Other config options for blame are markUnblamables and markIgnoredLines.
 # See docs for more details:
 # https://git-scm.com/docs/git-config#Documentation/git-config.txt-blameignoreRevsFile

completer latex_matches no respecting API
It return matched text even if it return no completions.
diff --git a/IPython/core/tests/test_completer.py b/IPython/core/tests/test_completer.py
index 2920d4539..2c19e2e01 100644
--- a/IPython/core/tests/test_completer.py
+++ b/IPython/core/tests/test_completer.py
@@ -224,20 +224,27 @@ def test_latex_completions(self):
         nt.assert_in("\\alpha", matches)
         nt.assert_in("\\aleph", matches)
 
+    def test_latex_no_results(self):
+        """
+        forward latex should really return nothing in either field if nothing is found.
+        """
+        ip = get_ipython()
+        text, matches = ip.Completer.latex_matches("\\really_i_should_match_nothing")
+        nt.assert_equal(text, "")
+        nt.assert_equal(matches, [])
+
     def test_back_latex_completion(self):
         ip = get_ipython()
 
         # do not return more than 1 matches fro \beta, only the latex one.
         name, matches = ip.complete("\\β")
-        nt.assert_equal(len(matches), 1)
-        nt.assert_equal(matches[0], "\\beta")
+        nt.assert_equal(matches, ['\\beta'])
 
     def test_back_unicode_completion(self):
         ip = get_ipython()
 
         name, matches = ip.complete("\\Ⅴ")
-        nt.assert_equal(len(matches), 1)
-        nt.assert_equal(matches[0], "\\ROMAN NUMERAL FIVE")
+        nt.assert_equal(matches, ["\\ROMAN NUMERAL FIVE"])
 
     def test_forward_unicode_completion(self):
         ip = get_ipython()

pip install -e .[test]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
asttokens==3.0.0
attrs==25.3.0
backcall==0.2.0
certifi==2025.1.31
charset-normalizer==3.4.1
comm==0.2.2
debugpy==1.8.13
decorator==5.2.1
exceptiongroup==1.2.2
executing==2.2.0
fastjsonschema==2.21.1
idna==3.10
importlib_metadata==8.6.1
iniconfig==2.1.0
ipykernel==6.29.5
-e git+https://github.com/ipython/ipython.git@e1082955d6560ebc313e8af7257e74ea143df812#egg=ipython
jedi==0.19.2
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
jupyter_client==8.6.3
jupyter_core==5.7.2
matplotlib-inline==0.1.7
nbformat==5.10.4
nest-asyncio==1.6.0
nose==1.3.7
numpy==2.0.2
packaging==24.2
parso==0.8.4
pexpect==4.9.0
pickleshare==0.7.5
platformdirs==4.3.7
pluggy==1.5.0
prompt_toolkit==3.0.50
psutil==7.0.0
ptyprocess==0.7.0
pure_eval==0.2.3
Pygments==2.19.1
pytest==8.3.5
python-dateutil==2.9.0.post0
pyzmq==26.3.0
referencing==0.36.2
requests==2.32.3
rpds-py==0.24.0
six==1.17.0
stack-data==0.6.3
testpath==0.6.0
tomli==2.2.1
tornado==6.4.2
traitlets==5.14.3
typing_extensions==4.13.0
urllib3==2.3.0
wcwidth==0.2.13
zipp==3.21.0

name: ipython
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - asttokens==3.0.0
      - attrs==25.3.0
      - backcall==0.2.0
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - comm==0.2.2
      - debugpy==1.8.13
      - decorator==5.2.1
      - exceptiongroup==1.2.2
      - executing==2.2.0
      - fastjsonschema==2.21.1
      - idna==3.10
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - ipykernel==6.29.5
      - jedi==0.19.2
      - jsonschema==4.23.0
      - jsonschema-specifications==2024.10.1
      - jupyter-client==8.6.3
      - jupyter-core==5.7.2
      - matplotlib-inline==0.1.7
      - nbformat==5.10.4
      - nest-asyncio==1.6.0
      - nose==1.3.7
      - numpy==2.0.2
      - packaging==24.2
      - parso==0.8.4
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - prompt-toolkit==3.0.50
      - psutil==7.0.0
      - ptyprocess==0.7.0
      - pure-eval==0.2.3
      - pygments==2.19.1
      - pytest==8.3.5
      - python-dateutil==2.9.0.post0
      - pyzmq==26.3.0
      - referencing==0.36.2
      - requests==2.32.3
      - rpds-py==0.24.0
      - six==1.17.0
      - stack-data==0.6.3
      - testpath==0.6.0
      - tomli==2.2.1
      - tornado==6.4.2
      - traitlets==5.14.3
      - typing-extensions==4.13.0
      - urllib3==2.3.0
      - wcwidth==0.2.13
      - zipp==3.21.0
prefix: /opt/conda/envs/ipython

IPython/core/tests/test_completer.py::TestCompleter::test_latex_no_results
IPython/core/tests/test_completer.py::test_protect_filename IPython/core/tests/test_completer.py::test_line_split IPython/core/tests/test_completer.py::TestCompleter::test_abspath_file_completions IPython/core/tests/test_completer.py::TestCompleter::test_aimport_module_completer IPython/core/tests/test_completer.py::TestCompleter::test_all_completions_dups IPython/core/tests/test_completer.py::TestCompleter::test_back_latex_completion IPython/core/tests/test_completer.py::TestCompleter::test_back_unicode_completion IPython/core/tests/test_completer.py::TestCompleter::test_cell_magics IPython/core/tests/test_completer.py::TestCompleter::test_class_key_completion IPython/core/tests/test_completer.py::TestCompleter::test_completion_have_signature IPython/core/tests/test_completer.py::TestCompleter::test_custom_completion_error IPython/core/tests/test_completer.py::TestCompleter::test_custom_completion_ordering IPython/core/tests/test_completer.py::TestCompleter::test_deduplicate_completions IPython/core/tests/test_completer.py::TestCompleter::test_default_arguments_from_docstring IPython/core/tests/test_completer.py::TestCompleter::test_dict_key_completion_bytes IPython/core/tests/test_completer.py::TestCompleter::test_dict_key_completion_contexts IPython/core/tests/test_completer.py::TestCompleter::test_dict_key_completion_invalids IPython/core/tests/test_completer.py::TestCompleter::test_dict_key_completion_string IPython/core/tests/test_completer.py::TestCompleter::test_dict_key_completion_unicode_py3 IPython/core/tests/test_completer.py::TestCompleter::test_forward_unicode_completion IPython/core/tests/test_completer.py::TestCompleter::test_from_module_completer IPython/core/tests/test_completer.py::TestCompleter::test_func_kw_completions IPython/core/tests/test_completer.py::TestCompleter::test_get__all__entries_no__all__ok IPython/core/tests/test_completer.py::TestCompleter::test_get__all__entries_ok IPython/core/tests/test_completer.py::TestCompleter::test_greedy_completions IPython/core/tests/test_completer.py::TestCompleter::test_has_open_quotes1 IPython/core/tests/test_completer.py::TestCompleter::test_has_open_quotes2 IPython/core/tests/test_completer.py::TestCompleter::test_has_open_quotes3 IPython/core/tests/test_completer.py::TestCompleter::test_has_open_quotes4 IPython/core/tests/test_completer.py::TestCompleter::test_import_module_completer IPython/core/tests/test_completer.py::TestCompleter::test_jedi IPython/core/tests/test_completer.py::TestCompleter::test_latex_completions IPython/core/tests/test_completer.py::TestCompleter::test_limit_to__all__False_ok IPython/core/tests/test_completer.py::TestCompleter::test_line_cell_magics IPython/core/tests/test_completer.py::TestCompleter::test_line_magics IPython/core/tests/test_completer.py::TestCompleter::test_local_file_completions IPython/core/tests/test_completer.py::TestCompleter::test_magic_color IPython/core/tests/test_completer.py::TestCompleter::test_magic_completion_order IPython/core/tests/test_completer.py::TestCompleter::test_magic_completion_shadowing IPython/core/tests/test_completer.py::TestCompleter::test_magic_completion_shadowing_explicit IPython/core/tests/test_completer.py::TestCompleter::test_magic_config IPython/core/tests/test_completer.py::TestCompleter::test_match_dict_keys IPython/core/tests/test_completer.py::TestCompleter::test_mix_terms IPython/core/tests/test_completer.py::TestCompleter::test_nested_import_module_completer IPython/core/tests/test_completer.py::TestCompleter::test_object_key_completion IPython/core/tests/test_completer.py::TestCompleter::test_omit__names IPython/core/tests/test_completer.py::TestCompleter::test_quoted_file_completions IPython/core/tests/test_completer.py::TestCompleter::test_snake_case_completion IPython/core/tests/test_completer.py::TestCompleter::test_struct_array_key_completion IPython/core/tests/test_completer.py::TestCompleter::test_tryimport IPython/core/tests/test_completer.py::TestCompleter::test_unicode_completions
IPython/core/completer.py tools/configure-git-blame-ignore-revs.sh .git-blame-ignore-revs
IPython/core/completer.py tools/configure-git-blame-ignore-revs.sh .git-blame-ignore-revs