2021-12-20 20:02:04 +01:00
|
|
|
From fc57ec912eec9da4c33d8db5416fdb2dada706e7 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Nikita Kniazev <nok.raven@gmail.com>
|
|
|
|
Date: Mon, 1 Nov 2021 19:09:58 +0300
|
|
|
|
Subject: [PATCH 1/5] Handle changed exception type from inspect.getabsfile
|
|
|
|
(bpo-44648)
|
|
|
|
|
|
|
|
https://bugs.python.org/issue44648 (Python 3.10+)
|
|
|
|
---
|
2022-01-15 15:38:59 +01:00
|
|
|
IPython/core/oinspect.py | 4 ++--
|
|
|
|
IPython/core/tests/test_completer.py | 20 +++++++++++++++-----
|
|
|
|
IPython/lib/tests/test_pretty.py | 1 -
|
|
|
|
3 files changed, 17 insertions(+), 8 deletions(-)
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
--- a/IPython/core/oinspect.py
|
|
|
|
+++ b/IPython/core/oinspect.py
|
|
|
|
@@ -224,7 +224,7 @@ def format_argspec(argspec):
|
|
|
|
|
|
|
|
DEPRECATED (since 7.10): Do not use; will be removed in future versions.
|
|
|
|
"""
|
|
|
|
-
|
|
|
|
+
|
|
|
|
warnings.warn('`format_argspec` function is deprecated as of IPython 7.10'
|
|
|
|
'and will be removed in future versions.', DeprecationWarning, stacklevel=2)
|
|
|
|
|
|
|
|
@@ -309,7 +309,7 @@ def find_file(obj) -> str:
|
2021-12-20 20:02:04 +01:00
|
|
|
fname = None
|
|
|
|
try:
|
|
|
|
fname = inspect.getabsfile(obj)
|
|
|
|
- except TypeError:
|
|
|
|
+ except (OSError, TypeError):
|
|
|
|
# For an instance, the file that matters is where its class was
|
|
|
|
# declared.
|
2022-01-15 15:38:59 +01:00
|
|
|
try:
|
|
|
|
--- a/IPython/core/tests/test_completer.py
|
|
|
|
+++ b/IPython/core/tests/test_completer.py
|
|
|
|
@@ -26,6 +26,15 @@ from IPython.core.completer import (
|
|
|
|
_deduplicate_completions,
|
2021-12-20 20:02:04 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
+if sys.version_info >= (3, 10):
|
|
|
|
+ import jedi
|
|
|
|
+ from pkg_resources import parse_version
|
|
|
|
+
|
|
|
|
+ # Requires https://github.com/davidhalter/jedi/pull/1795
|
|
|
|
+ jedi_issue = parse_version(jedi.__version__) <= parse_version("0.18.0")
|
|
|
|
+else:
|
|
|
|
+ jedi_issue = False
|
|
|
|
+
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Test functions
|
|
|
|
# -----------------------------------------------------------------------------
|
2022-01-15 15:38:59 +01:00
|
|
|
@@ -94,7 +103,7 @@ def test_unicode_range():
|
|
|
|
"""
|
|
|
|
assert len_exp == len_test, message
|
|
|
|
|
|
|
|
- # fail if new unicode symbols have been added.
|
|
|
|
+ # fail if new unicode symbols have been added.
|
|
|
|
assert len_exp <= 138552, message
|
|
|
|
|
|
|
|
|
|
|
|
@@ -475,6 +484,7 @@ class TestCompleter(unittest.TestCase):
|
2021-12-20 20:02:04 +01:00
|
|
|
"encoding" in c.signature
|
|
|
|
), "Signature of function was not found by completer"
|
|
|
|
|
|
|
|
+ @pytest.mark.xfail(jedi_issue, reason="Known failure on jedi<=0.18.0")
|
|
|
|
def test_deduplicate_completions(self):
|
|
|
|
"""
|
|
|
|
Test that completions are correctly deduplicated (even if ranges are not the same)
|
2022-01-15 15:38:59 +01:00
|
|
|
@@ -500,10 +510,10 @@ class TestCompleter(unittest.TestCase):
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
def test_greedy_completions(self):
|
|
|
|
"""
|
|
|
|
- Test the capability of the Greedy completer.
|
|
|
|
+ Test the capability of the Greedy completer.
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
Most of the test here does not really show off the greedy completer, for proof
|
|
|
|
- each of the text below now pass with Jedi. The greedy completer is capable of more.
|
|
|
|
+ each of the text below now pass with Jedi. The greedy completer is capable of more.
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
See the :any:`test_dict_key_completion_contexts`
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
@@ -611,7 +621,7 @@ class TestCompleter(unittest.TestCase):
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
def test_limit_to__all__False_ok(self):
|
|
|
|
"""
|
|
|
|
- Limit to all is deprecated, once we remove it this test can go away.
|
|
|
|
+ Limit to all is deprecated, once we remove it this test can go away.
|
|
|
|
"""
|
|
|
|
ip = get_ipython()
|
|
|
|
c = ip.Completer
|
|
|
|
@@ -838,7 +848,7 @@ class TestCompleter(unittest.TestCase):
|
|
|
|
does return what expected, and does not crash.
|
|
|
|
"""
|
|
|
|
delims = " \t\n`!@#$^&*()=+[{]}\\|;:'\",<>?"
|
|
|
|
-
|
|
|
|
+
|
|
|
|
keys = [("foo", "bar"), ("foo", "oof"), ("foo", b"bar"), ('other', 'test')]
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
# Completion on first key == "foo"
|
|
|
|
--- a/IPython/lib/tests/test_pretty.py
|
|
|
|
+++ b/IPython/lib/tests/test_pretty.py
|
|
|
|
@@ -7,7 +7,6 @@
|
2021-12-20 20:02:04 +01:00
|
|
|
|
2022-01-15 15:38:59 +01:00
|
|
|
from collections import Counter, defaultdict, deque, OrderedDict, UserList
|
|
|
|
import os
|
|
|
|
-import pytest
|
|
|
|
import types
|
|
|
|
import string
|
|
|
|
import sys
|