mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-23 00:43:28 +00:00
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)
This commit is contained in:
parent
4118043f22
commit
19937de6fc
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=562650
@ -3,7 +3,7 @@
|
||||
|
||||
PORTNAME= ipython
|
||||
PORTVERSION= 7.19.0
|
||||
PORTREVISION= 2
|
||||
PORTREVISION= 3
|
||||
CATEGORIES= devel python
|
||||
MASTER_SITES= CHEESESHOP
|
||||
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
|
||||
|
41
devel/ipython/files/patch-IPython_core_completer.py
Normal file
41
devel/ipython/files/patch-IPython_core_completer.py
Normal file
@ -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))]
|
11
devel/ipython/files/patch-IPython_terminal_ptutils.py
Normal file
11
devel/ipython/files/patch-IPython_terminal_ptutils.py
Normal file
@ -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()
|
||||
|
@ -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))]
|
Loading…
Reference in New Issue
Block a user