summaryrefslogtreecommitdiffstats
path: root/contrib/python/ipython/py2
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/python/ipython/py2')
-rw-r--r--contrib/python/ipython/py2/.yandex_meta/yamaker.yaml2
-rw-r--r--contrib/python/ipython/py2/patches/01-arcadia.patch144
-rw-r--r--contrib/python/ipython/py2/patches/02-fix-ya.make.patch28
-rw-r--r--contrib/python/ipython/py2/patches/03-fix-context-lines.patch11
4 files changed, 185 insertions, 0 deletions
diff --git a/contrib/python/ipython/py2/.yandex_meta/yamaker.yaml b/contrib/python/ipython/py2/.yandex_meta/yamaker.yaml
new file mode 100644
index 00000000000..60823c058c2
--- /dev/null
+++ b/contrib/python/ipython/py2/.yandex_meta/yamaker.yaml
@@ -0,0 +1,2 @@
+exclude_from_macros:
+ - IPython/testing/plugin/*.txt
diff --git a/contrib/python/ipython/py2/patches/01-arcadia.patch b/contrib/python/ipython/py2/patches/01-arcadia.patch
new file mode 100644
index 00000000000..3a14077574e
--- /dev/null
+++ b/contrib/python/ipython/py2/patches/01-arcadia.patch
@@ -0,0 +1,144 @@
+--- contrib/python/ipython/py2/IPython/core/completerlib.py (index)
++++ contrib/python/ipython/py2/IPython/core/completerlib.py (working tree)
+@@ -19,6 +19,7 @@ from __future__ import print_function
+ # Stdlib imports
+ import glob
+ import inspect
++import itertools
+ import os
+ import re
+ import sys
+@@ -44,6 +45,8 @@ from IPython.utils.py3compat import string_types
+ # FIXME: this should be pulled in with the right call via the component system
+ from IPython import get_ipython
+
++from __res import importer
++
+ #-----------------------------------------------------------------------------
+ # Globals and constants
+ #-----------------------------------------------------------------------------
+@@ -68,6 +71,51 @@ magic_run_re = re.compile(r'.*(\.ipy|\.ipynb|\.py[w]?)$')
+ # Local utilities
+ #-----------------------------------------------------------------------------
+
++arcadia_rootmodules_cache = None
++arcadia_modules_cache = None
++
++
++def arcadia_init_cache():
++ global arcadia_rootmodules_cache, arcadia_modules_cache
++ arcadia_rootmodules_cache = set()
++ arcadia_modules_cache = {}
++
++ all_modules = itertools.chain(
++ sys.builtin_module_names,
++ importer.memory
++ )
++
++ for name in all_modules:
++ path = name.split('.')
++ arcadia_rootmodules_cache.add(path[0])
++
++ prefix = path[0]
++ for element in path[1:]:
++ if element == '__init__':
++ continue
++
++ arcadia_modules_cache.setdefault(prefix, set()).add(element)
++ prefix += '.' + element
++
++ arcadia_rootmodules_cache = sorted(arcadia_rootmodules_cache)
++ arcadia_modules_cache = {k: sorted(v) for k, v in arcadia_modules_cache.items()}
++
++
++def arcadia_module_list(mod):
++ if arcadia_modules_cache is None:
++ arcadia_init_cache()
++
++ return arcadia_modules_cache.get(mod, ())
++
++
++def arcadia_get_root_modules():
++ if arcadia_rootmodules_cache is None:
++ arcadia_init_cache()
++
++ return arcadia_rootmodules_cache
++
++
++
+ def module_list(path):
+ """
+ Return the list containing the names of the modules available in the given
+@@ -168,7 +216,8 @@ def try_import(mod, only_modules=False):
+ for module in mods[1:]:
+ m = getattr(m, module)
+
+- m_is_init = hasattr(m, '__file__') and '__init__' in m.__file__
++ filename = getattr(m, '__file__', '')
++ m_is_init = '__init__' in (filename or '') or filename == mod
+
+ completions = []
+ if (not hasattr(m, '__file__')) or (not only_modules) or m_is_init:
+@@ -177,10 +226,10 @@ def try_import(mod, only_modules=False):
+
+ completions.extend(getattr(m, '__all__', []))
+ if m_is_init:
+- completions.extend(module_list(os.path.dirname(m.__file__)))
++ completions.extend(arcadia_module_list(mod))
+ completions = {c for c in completions if isinstance(c, string_types)}
+ completions.discard('__init__')
+- return list(completions)
++ return sorted(completions)
+
+
+ #-----------------------------------------------------------------------------
+@@ -229,10 +278,10 @@ def module_completion(line):
+ # 'from xy<tab>' or 'import xy<tab>'
+ if nwords < 3 and (words[0] in {'%aimport', 'import', 'from'}) :
+ if nwords == 1:
+- return get_root_modules()
++ return arcadia_get_root_modules()
+ mod = words[1].split('.')
+ if len(mod) < 2:
+- return get_root_modules()
++ return arcadia_get_root_modules()
+ completion_list = try_import('.'.join(mod[:-1]), True)
+ return ['.'.join(mod[:-1] + [el]) for el in completion_list]
+
+--- contrib/python/ipython/py2/IPython/core/extensions.py (index)
++++ contrib/python/ipython/py2/IPython/core/extensions.py (working tree)
+@@ -75,11 +75,11 @@ class ExtensionManager(Configurable):
+ if module_str in self.loaded:
+ return "already loaded"
+
+- from IPython.utils.syspathcontext import prepended_to_syspath
+-
+ with self.shell.builtin_trap:
+ if module_str not in sys.modules:
+- with prepended_to_syspath(self.ipython_extension_dir):
++ try:
++ sys.modules[module_str] = __import__('IPython.extensions.' + module_str)
++ except ImportError:
+ __import__(module_str)
+ mod = sys.modules[module_str]
+ if self._call_load_ipython_extension(mod):
+--- contrib/python/ipython/py2/IPython/core/profiledir.py (index)
++++ contrib/python/ipython/py2/IPython/core/profiledir.py (working tree)
+@@ -112,13 +112,11 @@ class ProfileDir(LoggingConfigurable):
+ self._mkdir(self.startup_dir)
+
+ readme = os.path.join(self.startup_dir, 'README')
+- src = os.path.join(get_ipython_package_dir(), u'core', u'profile', u'README_STARTUP')
+
+- if not os.path.exists(src):
+- self.log.warning("Could not copy README_STARTUP to startup dir. Source file %s does not exist.", src)
+-
+- if os.path.exists(src) and not os.path.exists(readme):
+- shutil.copy(src, readme)
++ if not os.path.exists(readme):
++ import pkgutil
++ with open(readme, 'wb') as f:
++ f.write(pkgutil.get_data(__name__, 'profile/README_STARTUP'))
+
+ @observe('security_dir')
+ def check_security_dir(self, change=None):
diff --git a/contrib/python/ipython/py2/patches/02-fix-ya.make.patch b/contrib/python/ipython/py2/patches/02-fix-ya.make.patch
new file mode 100644
index 00000000000..1317ceea2d3
--- /dev/null
+++ b/contrib/python/ipython/py2/patches/02-fix-ya.make.patch
@@ -0,0 +1,28 @@
+--- contrib/python/ipython/py2/ya.make (index)
++++ contrib/python/ipython/py2/ya.make (working tree)
+@@ -16,1 +15,0 @@ PEERDIR(
+- contrib/python/pexpect
+@@ -21,6 +18,23 @@ PEERDIR(
+ contrib/python/traitlets
+ )
+
++IF (OS_WINDOWS)
++ PEERDIR(
++ contrib/python/colorama
++ contrib/deprecated/python/win-unicode-console
++ )
++ELSE ()
++ PEERDIR(
++ contrib/python/pexpect
++ )
++ENDIF ()
++
++IF (OS_DARWIN)
++ PEERDIR(
++ contrib/python/appnope
++ )
++ENDIF ()
++
+ NO_LINT()
+
+ NO_CHECK_IMPORTS(
diff --git a/contrib/python/ipython/py2/patches/03-fix-context-lines.patch b/contrib/python/ipython/py2/patches/03-fix-context-lines.patch
new file mode 100644
index 00000000000..4627040e007
--- /dev/null
+++ b/contrib/python/ipython/py2/patches/03-fix-context-lines.patch
@@ -0,0 +1,11 @@
+--- contrib/python/ipython/py2/IPython/core/debugger.py (revision 12930657)
++++ contrib/python/ipython/py2/IPython/core/debugger.py (working copy)
+@@ -408,7 +408,7 @@
+ ret.append(u'%s(%s)%s\n' % (link,lineno,call))
+
+ start = lineno - 1 - context//2
+- lines = ulinecache.getlines(filename)
++ lines = ulinecache.getlines(filename, frame.f_globals)
+ start = min(start, len(lines) - context)
+ start = max(start, 0)
+ lines = lines[start : start + context]