aboutsummaryrefslogtreecommitdiff
path: root/devel/ipython
diff options
context:
space:
mode:
authorRuslan Makhmatkhanov <rm@FreeBSD.org>2021-01-26 10:33:13 +0000
committerRuslan Makhmatkhanov <rm@FreeBSD.org>2021-01-26 10:33:13 +0000
commit19937de6fc07e9fc0a289a346996985dadfb0a0e (patch)
tree6ee6e74038ddb6462db24fa4f3b8fb3597e08a98 /devel/ipython
parent4118043f22dbc90c1ac0b955bde81ed8022794b5 (diff)
downloadports-19937de6fc07e9fc0a289a346996985dadfb0a0e.tar.gz
ports-19937de6fc07e9fc0a289a346996985dadfb0a0e.zip
devel/ipython: actually unbreak autocompletion
Remove broader patch added earlier - it still doesn't completely solve the problem. Instead add tiny patch to fix runtime with jedi 0.18 and add missing imports with second patch. Works just well with my tests. Both patches should be removed after next ipython release. PR: 252875 Reported by: rsmith@xs4all.nl Approved by: python (with hat)
Notes
Notes: svn path=/head/; revision=562650
Diffstat (limited to 'devel/ipython')
-rw-r--r--devel/ipython/Makefile2
-rw-r--r--devel/ipython/files/patch-IPython_core_completer.py41
-rw-r--r--devel/ipython/files/patch-IPython_terminal_ptutils.py11
-rw-r--r--devel/ipython/files/patch-autocompletion-fix74
4 files changed, 53 insertions, 75 deletions
diff --git a/devel/ipython/Makefile b/devel/ipython/Makefile
index 3c99e640fb7c..3d5266322a46 100644
--- a/devel/ipython/Makefile
+++ b/devel/ipython/Makefile
@@ -3,7 +3,7 @@
PORTNAME= ipython
PORTVERSION= 7.19.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/devel/ipython/files/patch-IPython_core_completer.py b/devel/ipython/files/patch-IPython_core_completer.py
new file mode 100644
index 000000000000..4f29f803bec6
--- /dev/null
+++ b/devel/ipython/files/patch-IPython_core_completer.py
@@ -0,0 +1,41 @@
+--- IPython/core/completer.py.orig 2020-10-30 18:09:09 UTC
++++ IPython/core/completer.py
+@@ -988,8 +988,18 @@ def _make_signature(completion)-> str:
+
+ """
+
+- return '(%s)'% ', '.join([f for f in (_formatparamchildren(p) for p in completion.params) if f])
++ # it looks like this might work on jedi 0.17
++ if hasattr(completion, 'get_signatures'):
++ signatures = completion.get_signatures()
++ if not signatures:
++ return '(?)'
+
++ c0 = completion.get_signatures()[0]
++ return '('+c0.to_string().split('(', maxsplit=1)[1]
++
++ return '(%s)'% ', '.join([f for f in (_formatparamchildren(p) for signature in completion.get_signatures()
++ for p in signature.defined_names()) if f])
++
+ class IPCompleter(Completer):
+ """Extension of the completer class with IPython-specific features"""
+
+@@ -1370,8 +1380,7 @@ class IPCompleter(Completer):
+ else:
+ raise ValueError("Don't understand self.omit__names == {}".format(self.omit__names))
+
+- interpreter = jedi.Interpreter(
+- text[:offset], namespaces, column=cursor_column, line=cursor_line + 1)
++ interpreter = jedi.Interpreter(text[:offset], namespaces)
+ try_jedi = True
+
+ try:
+@@ -1398,7 +1407,7 @@ class IPCompleter(Completer):
+ if not try_jedi:
+ return []
+ try:
+- return filter(completion_filter, interpreter.completions())
++ return filter(completion_filter, interpreter.complete(column=cursor_column, line=cursor_line + 1))
+ except Exception as e:
+ if self.debug:
+ return [_FakeJediCompletion('Oops Jedi has crashed, please report a bug with the following:\n"""\n%s\ns"""' % (e))]
diff --git a/devel/ipython/files/patch-IPython_terminal_ptutils.py b/devel/ipython/files/patch-IPython_terminal_ptutils.py
new file mode 100644
index 000000000000..2524f1cbc783
--- /dev/null
+++ b/devel/ipython/files/patch-IPython_terminal_ptutils.py
@@ -0,0 +1,11 @@
+--- IPython/terminal/ptutils.py.orig 2020-10-30 18:09:09 UTC
++++ IPython/terminal/ptutils.py
+@@ -20,6 +20,8 @@ from prompt_toolkit.patch_stdout import patch_stdout
+
+ import pygments.lexers as pygments_lexers
+ import os
++import sys
++import traceback
+
+ _completion_sentinel = object()
+
diff --git a/devel/ipython/files/patch-autocompletion-fix b/devel/ipython/files/patch-autocompletion-fix
deleted file mode 100644
index a53dc1cc465a..000000000000
--- a/devel/ipython/files/patch-autocompletion-fix
+++ /dev/null
@@ -1,74 +0,0 @@
-From dcd9dc90aee7e4c5c52ce44c18e7518934790612 Mon Sep 17 00:00:00 2001
-From: gorogoroumaru <force.minpiku@gmail.com>
-Date: Fri, 10 Apr 2020 10:24:52 +0900
-Subject: [PATCH] Fix DeprecationWarning on autocompletion with jedi 0.17.0
-
----
- IPython/core/completer.py | 19 +++++++++----------
- 1 file changed, 9 insertions(+), 10 deletions(-)
-
-diff --git a/IPython/core/completer.py b/IPython/core/completer.py
-index 16fbb81f55..01730fff2d 100644
---- IPython/core/completer.py
-+++ IPython/core/completer.py
-@@ -110,26 +110,23 @@
- # Copyright (C) 2001 Python Software Foundation, www.python.org
-
-
--import __main__
- import builtins as builtin_mod
- import glob
--import time
- import inspect
- import itertools
- import keyword
- import os
- import re
-+import string
- import sys
-+import time
- import unicodedata
--import string
- import warnings
--
- from contextlib import contextmanager
- from importlib import import_module
--from typing import Iterator, List, Tuple, Iterable
- from types import SimpleNamespace
-+from typing import Iterable, Iterator, List, Tuple
-
--from traitlets.config.configurable import Configurable
- from IPython.core.error import TryNext
- from IPython.core.inputtransformer2 import ESC_MAGIC
- from IPython.core.latex_symbols import latex_symbols, reverse_latex_symbol
-@@ -137,7 +134,10 @@
- from IPython.utils import generics
- from IPython.utils.dir2 import dir2, get_real_method
- from IPython.utils.process import arg_split
--from traitlets import Bool, Enum, observe, Int
-+from traitlets import Bool, Enum, Int, observe
-+from traitlets.config.configurable import Configurable
-+
-+import __main__
-
- # skip module docstests
- skip_doctest = True
-@@ -1380,8 +1380,7 @@ def _jedi_matches(self, cursor_column:int, cursor_line:int, text:str):
- else:
- raise ValueError("Don't understand self.omit__names == {}".format(self.omit__names))
-
-- interpreter = jedi.Interpreter(
-- text[:offset], namespaces, column=cursor_column, line=cursor_line + 1)
-+ interpreter = jedi.Interpreter(text[:offset], namespaces)
- try_jedi = True
-
- try:
-@@ -1408,7 +1407,7 @@ def _jedi_matches(self, cursor_column:int, cursor_line:int, text:str):
- if not try_jedi:
- return []
- try:
-- return filter(completion_filter, interpreter.completions())
-+ return filter(completion_filter, interpreter.complete(column=cursor_column, line=cursor_line + 1))
- except Exception as e:
- if self.debug:
- return [_FakeJediCompletion('Oops Jedi has crashed, please report a bug with the following:\n"""\n%s\ns"""' % (e))]