summaryrefslogtreecommitdiff
path: root/dev-python/ipython
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-python/ipython
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-python/ipython')
-rw-r--r--dev-python/ipython/Manifest16
-rw-r--r--dev-python/ipython/files/2.1.0-substitute-files.patch27
-rw-r--r--dev-python/ipython/files/ipython-3.2.1-Don-t-redirect-from-edit-to-files.patch55
-rw-r--r--dev-python/ipython/files/ipython-3.2.1-only-redirect-to-editor-for-text-documents.patch38
-rw-r--r--dev-python/ipython/files/ipython-3.2.1-set-mime-type-on-files.patch35
-rw-r--r--dev-python/ipython/files/ipython-3.2.1-set-model-mimetype-even-when-content-False.patch64
-rw-r--r--dev-python/ipython/ipython-3.2.1-r1.ebuild156
-rw-r--r--dev-python/ipython/ipython-5.3.0.ebuild144
-rw-r--r--dev-python/ipython/ipython-5.4.1.ebuild129
-rw-r--r--dev-python/ipython/ipython-6.1.0.ebuild127
-rw-r--r--dev-python/ipython/metadata.xml55
11 files changed, 846 insertions, 0 deletions
diff --git a/dev-python/ipython/Manifest b/dev-python/ipython/Manifest
new file mode 100644
index 000000000000..654119b8a6da
--- /dev/null
+++ b/dev-python/ipython/Manifest
@@ -0,0 +1,16 @@
+AUX 2.1.0-substitute-files.patch 1017 SHA256 5547660171b6a92145aed499bc0ccfafd079a1f86db86eac05baf60b39f6a15e SHA512 fc4c9e12267ac5f04a2e16ad27334a093638538b8149ff380099fcbeb674a276ab9eb624a508010e37f82c05d5f7ab527a80e386b3e7b61c123ecb8effd9d542 WHIRLPOOL 581a456407b325d554689c9ad99ce6ee969468a41351e80f81b846267a97dca6cdf1052ab87088b42cd7d8445d73c17d5a99093f385e5e5e3640b5a10547ffe9
+AUX ipython-3.2.1-Don-t-redirect-from-edit-to-files.patch 2004 SHA256 776b54af81f6323ce19e83ef8faac148ebf616b6589aa093cc151387fcf42111 SHA512 8d519f154ff60038348896814cd2464a52f31e172d7660acc4f9b818ad1415717ad48df7197c6509416c7dd7a86fda3420188c05aae3db6947a4add1d07390fe WHIRLPOOL 6212ec73cf9ce11d964dc76463cdb4f856c51f35635cb7ce36be768c30058c841b8c28fc7320c2b1e757825e99d30ddc31b04c7335d4b12b35edcb162093ee37
+AUX ipython-3.2.1-only-redirect-to-editor-for-text-documents.patch 1311 SHA256 2d6724c52b3c0537af7afca2bf2d07037c9e8cd9a8dbcf5779e85f183b4fefbb SHA512 ff6f5ba68baa455565aabd6de403bb1d8d52183bacf068fdffd3e7e2b1dcd37267915316eae11f781f6107703c2bcdda7007c0a0b06e9888f7a69ae752994ee1 WHIRLPOOL 0e29ba597ad0320569a29290041a20357b4d930d1c893c18f4f1da944cc488f93161135b3a0d865cc488190087df60547a34b1b5401826a6f1aea91c057c3102
+AUX ipython-3.2.1-set-mime-type-on-files.patch 1175 SHA256 95b700a914c0490787f876bff4efc59de6e5e583bc700354f50a8b3c2cba3828 SHA512 d4791082b2b784bfe4998ad135ccfe0aa7e39f66e26125b75b15ab0b2474ba079c718e913853c709b2cb4e1def620d185918a063f3afc21dca474497f5982b4d WHIRLPOOL b9c18a38f21906bc97908f934d71e8e990bdc36cfc8171371a96b210a4f9e66c18a797fb5548bb1238ab5e422bc7272827eedeef9f9812b03438c10508a035d3
+AUX ipython-3.2.1-set-model-mimetype-even-when-content-False.patch 2329 SHA256 20c2fce0d118fc5c88088009960bda114ded6c0ec44544fd511f96722f443112 SHA512 6b6efe04677cbf09fd9b42e2bc981779371a5cbec2ddaeee911b5246756300b75b54f540f246c98c84868c5abae4ca2d60787a168d2bd95dc2db35e16d5d98f4 WHIRLPOOL 8adb5098acab56d87f94eafb94d9437d510e6a58efdda58a822c98f6cd08749287ad7f798b7f7299635a609bdbf1871f2b71bf23946504591f246d19deed59a3
+DIST ipython-3.2.1.tar.gz 10884249 SHA256 c913adee7ae5b338055274c51a7d2b3cea468b5b316046fa520cd8a434b09177 SHA512 de7723e3b859d21a58a24456c76c8d8ec98c019f290f61269f46270e7647d2b49a98671138fecd75cb6f46384fde7e09618eb5c85c175e0e442c7fae7328d8fe WHIRLPOOL 9f020c167559259931dcb177d0c3a5211939632e5775c2627795ba390cf57bd62c378c15b7ee9b9ed2079180f8df8e062eb9673ed9cfc025a56f1da82c9428d1
+DIST ipython-5.3.0.tar.gz 4967956 SHA256 bf5e615e7d96dac5a61fbf98d9e2926d98aa55582681bea7e9382992a3f43c1d SHA512 41706d7521cc84f36f5580dc44cd91832a60aa8a7a946d15a9ec9563649b9ae97931b9f135f1fdbaecbcb0b9b925d467edfd6eec7f8c82309872047be77b598d WHIRLPOOL 96478b15fd4928d11da35dbbaba6492ff12cf739c06b6f9cf8fdd827060baf5c07d093c3e340792b62102f85ada0b6ea29adc742b784ad21e5292cde09a6fa25
+DIST ipython-5.4.1.tar.gz 4973571 SHA256 afaa92343c20cf4296728161521d84f606d8817f963beaf7198e63dfede897fb SHA512 b37dae27a558585ec4f42fa22e86380ac81990207ec680fc7b0e6f97ac81c99d915cfe77488bc0b91a61c34e0c00b323df08aa06b142ce0fc88ce30203102907 WHIRLPOOL e91e719a681c29e8ecd3e08ade470adcefb957ffddfa601f89306c19b6f6e80fa793a603948fb9fd697884474f2559ece30456be27d9034448cb618217a8cfa1
+DIST ipython-6.1.0.tar.gz 5066094 SHA256 5c53e8ee4d4bec27879982b9f3b4aa2d6e3cfd7b26782d250fa117f85bb29814 SHA512 6b1d9713b5e8c3870ac8cd8bea9d3a6f0c0302e3983017516128ede9f0baba21372890873df29fbba3f9d2f47ba16bfadb1c611f9de23b71595c0ab8f917695b WHIRLPOOL 9b579922060a1d37487bb294314fae4ac19c8d98509c856c117c17f6eb8d617cd29b7d7fa5e44bb2b1004a70f893b0e83571f69149729b6f6ebcbaa162f257fa
+EBUILD ipython-3.2.1-r1.ebuild 5044 SHA256 7898fc3eda7730ca788b241cd34b4b4318828c0e9e5c7bb360b055115faf59bb SHA512 2d786c8dcc972b6231884a0a874e371642bc8c01ee588988d26989b251277b344b1373525ce6be713931c69c56ec83bd70e5aa29379113e593cb75eae470f69c WHIRLPOOL dda5302c02a1fc45da05b8fca0ce849b8e07c7f9ba107b01c3dcb6b1b3da1d0514e0f3edb137c1e4c59ec3f4d5eb087f8bd1d63c8cd993a5d8343bf04e534234
+EBUILD ipython-5.3.0.ebuild 4324 SHA256 ede259fcb1065f074ad5f1262f5511d86cd222a4405d969bf5c57fbd412b8623 SHA512 cd06a1a43545b8ded7dbdfae4be0c66291718337d7e83047988c5aeba313bda2a983f4b5714e685bfba1f0908b2e0d375b91aafc7d677562fb92715a89510fa8 WHIRLPOOL 738042cb9b82045379bde8c7fcba41d0e214f3dfd0fd903958756fcdc1da31fcec4de29cfec7fc777409d3e811b84c80abed7bacdbdd2eda2f0aae39128add3b
+EBUILD ipython-5.4.1.ebuild 3698 SHA256 235fd89996d9f3ccd303d458c9950f8fe5fc91d98a41684a0dbf4b35401d036f SHA512 8f27826f9ac163b1fe48e37caa8c904ae4320ba6adeb186f0f970fa163d078097ee486468aa280b0440cca4bfe7e24929f8866a4dc48a4e07e411ca072569ba2 WHIRLPOOL c312de3bf14a6533c673b9ac2b5aa7d2f4fb2fb3a0a1bbe0d62521bf0df03e7b33db5a2e339268f63fcb121abb3e9afe167386c5385b1ded5759952ebb6761d2
+EBUILD ipython-6.1.0.ebuild 3440 SHA256 ab042cac1af84d9839a07ee35631ed69ff64440b97e9b8ebd74fcf99209a600d SHA512 1251ed84c81edc211cf8d389bfa79e4b3df30c6fa2cf4446b6b04b4d36119d112ed9a677ea4b43cb21743f102ff6c11626ebc2530762250f7486adcd33b62292 WHIRLPOOL 626f276aa95ee6867bccbb6dec4afb671241b2c16dcaa5c72d61222631a188874737635db08b9363e2d13817253b7101fe0822c8bb7a22ce4af35d6b1939214c
+MISC ChangeLog 10996 SHA256 1d0f52575701c78ed1d41c4f2acd87058a6ce424ee43a7905580d2738bdfd956 SHA512 f28dbf25970065284e0ed2b726d2b35f6484f68c98f7c62b7aa4d607e9421c140ea2d9cdd83a25cdfe92a88b5f25ca5e0f290e571def0b5627738ae0a3a1617a WHIRLPOOL bacb3e444412adb8153ae63b599b331432346dff17011641721b02f5d498f37661810779394459b62c1de85a3f8f9378c59f4207ce6311354560ec84cdec5af9
+MISC ChangeLog-2015 28077 SHA256 09abe93b0e7fe824a90d0b25f87ad1c30afceb2d37c5cc869ea134ca917d926a SHA512 1478e71c72ff28766debc68e6037e9cb2c8f402e7fe95150ae8790c0bf087d48f624e652197bbd4706f8732a02328924aea26efff2be0babe20cda5b236ab380 WHIRLPOOL 985235b1a87e05eba5d9638f94da47a09623c3e4dca5fa7fe9c60c2b2dc4f9be04228a40dd81b4d0e851062309725b7902cfcb002f3070e27722d1a4b4303d82
+MISC metadata.xml 3035 SHA256 3a29f5250cd022aa4037445be5873713e9f5019d3adfa9c06fcbc845fc085000 SHA512 a841d52fc997a447ec98335dad7cbb2971a0498754eb86942d6a9aa9f14cdb3b8687f78e882adc8b84c1967a16f75239e8fda6bfedc58622b052bdadda719dcb WHIRLPOOL d172ada3d31cefd932ebb263a99bf458577f244092f7b68f10550097900d03182c75c543ded54318390bead56d81ec33fdf0007a4e8e446efa51783752571cb5
diff --git a/dev-python/ipython/files/2.1.0-substitute-files.patch b/dev-python/ipython/files/2.1.0-substitute-files.patch
new file mode 100644
index 000000000000..659df39226ac
--- /dev/null
+++ b/dev-python/ipython/files/2.1.0-substitute-files.patch
@@ -0,0 +1,27 @@
+substitute the insource files with these messages
+diff --git a/IPython/extensions/octavemagic.py b/IPython/extensions/octavemagic.py
+new file mode 100644
+index 0000000..dc93fe4
+--- /dev/null
++++ b/IPython/extensions/octavemagic.py
+@@ -0,0 +1,7 @@
++import warnings
++
++def load_ipython_extension(ip):
++ msg = ("The octavemagic extension has been moved to oct2py. "
++ "After installing oct2py, you can load octavemagic with the "
++ "following command: '%load_ext oct2py.ipython'.")
++ warnings.warn(msg, Warning, stacklevel=2)
+diff --git a/IPython/extensions/rmagic.py b/IPython/extensions/rmagic.py
+new file mode 100644
+index 0000000..739e491
+--- /dev/null
++++ b/IPython/extensions/rmagic.py
+@@ -0,0 +1,7 @@
++import warnings
++
++def load_ipython_extension(ip):
++ msg = ("The rmagic extension has been moved to rpy2. "
++ "After installing rpy2, you can load rmagic with the "
++ "following command: '%load_ext rpy2.ipython'.")
++ warnings.warn(msg, Warning, stacklevel=2)
diff --git a/dev-python/ipython/files/ipython-3.2.1-Don-t-redirect-from-edit-to-files.patch b/dev-python/ipython/files/ipython-3.2.1-Don-t-redirect-from-edit-to-files.patch
new file mode 100644
index 000000000000..5ec742c34cf8
--- /dev/null
+++ b/dev-python/ipython/files/ipython-3.2.1-Don-t-redirect-from-edit-to-files.patch
@@ -0,0 +1,55 @@
+Upstream patch to fix
+"Maliciously crafted text files in IPython/Jupyter editor".
+
+http://seclists.org/oss-sec/2015/q3/558
+https://bugs.gentoo.org/show_bug.cgi?id=560708
+
+
+From 2b835ca6daec2592d9127dc85bf2cdcfb718edf2 Mon Sep 17 00:00:00 2001
+From: Min RK <benjaminrk@gmail.com>
+Date: Mon, 20 Jul 2015 12:11:23 -0700
+Subject: [PATCH 4/4] Don't redirect from /edit/ to /files/
+
+show failure to decode, instead
+---
+ IPython/html/static/edit/js/editor.js | 15 +++------------
+ 1 file changed, 3 insertions(+), 12 deletions(-)
+
+diff --git a/IPython/html/static/edit/js/editor.js b/IPython/html/static/edit/js/editor.js
+index dd12ea4..75d65e0 100644
+--- a/IPython/html/static/edit/js/editor.js
++++ b/IPython/html/static/edit/js/editor.js
+@@ -90,19 +90,10 @@ function($,
+ }).catch(
+ function(error) {
+ that.events.trigger("file_load_failed.Editor", error);
+- if (((error.xhr||{}).responseJSON||{}).reason === 'bad format') {
+- window.location = utils.url_path_join(
+- that.base_url,
+- 'files',
+- that.file_path
+- );
+- } else {
+- console.warn('Error while loading: the error was:')
+- console.warn(error)
+- }
++ console.warn('Error loading: ', error);
+ cm.setValue("Error! " + error.message +
+ "\nSaving disabled.\nSee Console for more details.");
+- cm.setOption('readOnly','nocursor')
++ cm.setOption('readOnly','nocursor');
+ that.save_enabled = false;
+ }
+ );
+@@ -186,7 +177,7 @@ function($,
+ Editor.prototype._clean_state = function(){
+ var clean = this.codemirror.isClean(this.generation);
+ if (clean === this.clean){
+- return
++ return;
+ } else {
+ this.clean = clean;
+ }
+--
+2.4.6
+
diff --git a/dev-python/ipython/files/ipython-3.2.1-only-redirect-to-editor-for-text-documents.patch b/dev-python/ipython/files/ipython-3.2.1-only-redirect-to-editor-for-text-documents.patch
new file mode 100644
index 000000000000..4b1f7d3686c0
--- /dev/null
+++ b/dev-python/ipython/files/ipython-3.2.1-only-redirect-to-editor-for-text-documents.patch
@@ -0,0 +1,38 @@
+Upstream patch to fix
+"Maliciously crafted text files in IPython/Jupyter editor".
+
+http://seclists.org/oss-sec/2015/q3/558
+https://bugs.gentoo.org/show_bug.cgi?id=560708
+
+
+From df24d9153b86863ccfa98bf509704d9304143ce1 Mon Sep 17 00:00:00 2001
+From: Min RK <benjaminrk@gmail.com>
+Date: Mon, 20 Jul 2015 12:11:04 -0700
+Subject: [PATCH 3/4] only redirect to editor for text documents
+
+treat unidentified mime-types as text
+---
+ IPython/html/static/tree/js/notebooklist.js | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/IPython/html/static/tree/js/notebooklist.js b/IPython/html/static/tree/js/notebooklist.js
+index 0065143..d8c7b2a 100644
+--- a/IPython/html/static/tree/js/notebooklist.js
++++ b/IPython/html/static/tree/js/notebooklist.js
+@@ -532,6 +532,13 @@ define([
+ icon = 'running_' + icon;
+ }
+ var uri_prefix = NotebookList.uri_prefixes[model.type];
++ if (model.type === 'file' &&
++ model.mimetype && model.mimetype.substr(0,5) !== 'text/'
++ ) {
++ // send text/unidentified files to editor, others go to raw viewer
++ uri_prefix = 'files';
++ }
++
+ item.find(".item_icon").addClass(icon).addClass('icon-fixed-width');
+ var link = item.find("a.item_link")
+ .attr('href',
+--
+2.4.6
+
diff --git a/dev-python/ipython/files/ipython-3.2.1-set-mime-type-on-files.patch b/dev-python/ipython/files/ipython-3.2.1-set-mime-type-on-files.patch
new file mode 100644
index 000000000000..b5d4b5fbd668
--- /dev/null
+++ b/dev-python/ipython/files/ipython-3.2.1-set-mime-type-on-files.patch
@@ -0,0 +1,35 @@
+Upstream patch to fix
+"Maliciously crafted text files in IPython/Jupyter editor".
+
+http://seclists.org/oss-sec/2015/q3/558
+https://bugs.gentoo.org/show_bug.cgi?id=560708
+
+
+From d729ce7c2063c0de746a7c2ea39697040d0af5bf Mon Sep 17 00:00:00 2001
+From: Min RK <benjaminrk@gmail.com>
+Date: Mon, 20 Jul 2015 12:10:10 -0700
+Subject: [PATCH 1/4] set mime-type on /files/
+
+---
+ IPython/html/files/handlers.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/IPython/html/files/handlers.py b/IPython/html/files/handlers.py
+index 7727d08..b358d94 100644
+--- a/IPython/html/files/handlers.py
++++ b/IPython/html/files/handlers.py
+@@ -40,6 +40,11 @@ def get(self, path):
+ cur_mime = mimetypes.guess_type(name)[0]
+ if cur_mime is not None:
+ self.set_header('Content-Type', cur_mime)
++ else:
++ if model['format'] == 'base64':
++ self.set_header('Content-Type', 'application/octet-stream')
++ else:
++ self.set_header('Content-Type', 'text/plain')
+
+ if model['format'] == 'base64':
+ b64_bytes = model['content'].encode('ascii')
+--
+2.4.6
+
diff --git a/dev-python/ipython/files/ipython-3.2.1-set-model-mimetype-even-when-content-False.patch b/dev-python/ipython/files/ipython-3.2.1-set-model-mimetype-even-when-content-False.patch
new file mode 100644
index 000000000000..a69f746f64c0
--- /dev/null
+++ b/dev-python/ipython/files/ipython-3.2.1-set-model-mimetype-even-when-content-False.patch
@@ -0,0 +1,64 @@
+Upstream patch to fix
+"Maliciously crafted text files in IPython/Jupyter editor".
+
+http://seclists.org/oss-sec/2015/q3/558
+https://bugs.gentoo.org/show_bug.cgi?id=560708
+
+
+From 50a1366a8fcfb94671c87199515ebc922882f447 Mon Sep 17 00:00:00 2001
+From: Min RK <benjaminrk@gmail.com>
+Date: Mon, 20 Jul 2015 12:10:25 -0700
+Subject: [PATCH 2/4] set model mimetype, even when content=False
+
+---
+ IPython/html/services/contents/filemanager.py | 12 +++++++-----
+ IPython/html/services/contents/handlers.py | 3 ---
+ 2 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/IPython/html/services/contents/filemanager.py b/IPython/html/services/contents/filemanager.py
+index 01ce07b..c869c75 100644
+--- a/IPython/html/services/contents/filemanager.py
++++ b/IPython/html/services/contents/filemanager.py
+@@ -277,18 +277,20 @@ def _file_model(self, path, content=True, format=None):
+ model['type'] = 'file'
+
+ os_path = self._get_os_path(path)
++ model['mimetype'] = mimetypes.guess_type(os_path)[0]
+
+ if content:
+ content, format = self._read_file(os_path, format)
+- default_mime = {
+- 'text': 'text/plain',
+- 'base64': 'application/octet-stream'
+- }[format]
++ if model['mimetype'] is None:
++ default_mime = {
++ 'text': 'text/plain',
++ 'base64': 'application/octet-stream'
++ }[format]
++ model['mimetype'] = default_mime
+
+ model.update(
+ content=content,
+ format=format,
+- mimetype=mimetypes.guess_type(os_path)[0] or default_mime,
+ )
+
+ return model
+diff --git a/IPython/html/services/contents/handlers.py b/IPython/html/services/contents/handlers.py
+index 5cd849e..d77e70e 100644
+--- a/IPython/html/services/contents/handlers.py
++++ b/IPython/html/services/contents/handlers.py
+@@ -52,9 +52,6 @@ def validate_model(model, expect_content):
+ )
+
+ maybe_none_keys = ['content', 'format']
+- if model['type'] == 'file':
+- # mimetype should be populated only for file models
+- maybe_none_keys.append('mimetype')
+ if expect_content:
+ errors = [key for key in maybe_none_keys if model[key] is None]
+ if errors:
+--
+2.4.6
+
diff --git a/dev-python/ipython/ipython-3.2.1-r1.ebuild b/dev-python/ipython/ipython-3.2.1-r1.ebuild
new file mode 100644
index 000000000000..af473413e2cf
--- /dev/null
+++ b/dev-python/ipython/ipython-3.2.1-r1.ebuild
@@ -0,0 +1,156 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+PYTHON_REQ_USE='readline,sqlite,threads(+)'
+
+inherit distutils-r1 eutils virtualx
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="http://ipython.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 arm ~mips ppc64 x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+IUSE="doc examples matplotlib mongodb notebook nbconvert octave qt4 +smp test wxwidgets"
+
+REQUIRED_USE="
+ test? ( doc matplotlib mongodb notebook nbconvert octave qt4 wxwidgets )
+ doc? ( mongodb )"
+
+CDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/simplegeneric[${PYTHON_USEDEP}]
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+ mongodb? ( <dev-python/pymongo-3[${PYTHON_USEDEP}] )
+ octave? ( dev-python/oct2py[${PYTHON_USEDEP}] )
+ smp? ( >=dev-python/pyzmq-13[${PYTHON_USEDEP}] )
+ wxwidgets? ( $(python_gen_cond_dep 'dev-python/wxpython:*[${PYTHON_USEDEP}]' python2_7) )"
+RDEPEND="${CDEPEND}
+ notebook? (
+ dev-libs/mathjax
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistune-0.5[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-13[${PYTHON_USEDEP}]
+ >=dev-python/terminado-0.3.3[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ )
+ nbconvert? (
+ || ( >=net-libs/nodejs-0.9.12 >=app-text/pandoc-1.12.1 )
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-2.0[${PYTHON_USEDEP}]
+ >=dev-python/mistune-0.5[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ )
+ qt4? (
+ || (
+ dev-python/PyQt4[${PYTHON_USEDEP},svg]
+ dev-python/PyQt5[${PYTHON_USEDEP},svg]
+ dev-python/pyside[${PYTHON_USEDEP},svg]
+ )
+ dev-python/pygments[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-13[${PYTHON_USEDEP}] )"
+DEPEND="${CDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ app-text/dvipng
+ dev-python/jinja[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep 'dev-python/mock[${PYTHON_USEDEP}]' python2_7)
+ >=dev-python/nose-0.10.1[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ )
+ doc? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep 'dev-python/fabric[${PYTHON_USEDEP}]' python2_7)
+ >=dev-python/jsonschema-2.0[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ >=dev-python/nose-0.10.1[${PYTHON_USEDEP}]
+ dev-python/numpydoc[${PYTHON_USEDEP}]
+ dev-python/rpy[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=(
+ "${FILESDIR}"/2.1.0-substitute-files.patch
+ "${FILESDIR}/${P}"-set-mime-type-on-files.patch
+ "${FILESDIR}/${P}"-set-model-mimetype-even-when-content-False.patch
+ "${FILESDIR}/${P}"-only-redirect-to-editor-for-text-documents.patch
+ "${FILESDIR}/${P}"-Don-t-redirect-from-edit-to-files.patch
+ )
+
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_prepare_all() {
+ # Remove out of date insource files
+ rm IPython/extensions/rmagic.py || die
+
+ # Prevent un-needed download during build
+ if use doc; then
+ sed -e "/^ 'sphinx.ext.intersphinx',/d" -i docs/source/conf.py || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && emake -C docs html_noapi
+}
+
+python_test() {
+ distutils_install_for_testing
+ # https://github.com/ipython/ipython/issues/8639
+ # Failure of some modules only in python3.4
+ local fail
+ run_tests() {
+ pushd ${TEST_DIR} > /dev/null || die
+ "${PYTHON}" -m IPython.testing.iptestcontroller --all || fail=1
+ popd > /dev/null || die
+ }
+ VIRTUALX_COMMAND=run_tests virtualmake
+ [[ ${fail} ]] && die "Tests fail with ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+ use notebook && \
+ ln -sf "${EPREFIX}/usr/share/mathjax" "${D}$(python_get_sitedir)/IPython/html/static/mathjax"
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/build/html/. )
+ use examples && local EXAMPLES=( examples/. )
+ distutils-r1_python_install_all
+}
+
+pkg_postinst() {
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line_profiler
+ optfeature "%mprun magic command" dev-python/memory_profiler
+ if use nbconvert; then
+ if ! has_version app-text/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/ipython/ipython-5.3.0.ebuild b/dev-python/ipython/ipython-5.3.0.ebuild
new file mode 100644
index 000000000000..6da17185aa7d
--- /dev/null
+++ b/dev-python/ipython/ipython-5.3.0.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+PYTHON_REQ_USE='readline,sqlite,threads(+)'
+
+inherit distutils-r1 eutils
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="http://ipython.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc examples matplotlib mongodb notebook nbconvert qt4 +smp test wxwidgets"
+
+REQUIRED_USE="
+ test? ( doc matplotlib mongodb notebook nbconvert qt4 wxwidgets )
+ doc? ( mongodb )"
+
+CDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/simplegeneric[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.10.0[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-4.2.1[${PYTHON_USEDEP}]
+ >=dev-python/prompt_toolkit-1.0.3[${PYTHON_USEDEP}]
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+ mongodb? ( <dev-python/pymongo-3[${PYTHON_USEDEP}] )
+ wxwidgets? ( $(python_gen_cond_dep 'dev-python/wxpython:*[${PYTHON_USEDEP}]' 'python2*') )"
+
+RDEPEND="${CDEPEND}
+ virtual/python-pathlib[${PYTHON_USEDEP}]
+ nbconvert? ( dev-python/nbconvert[${PYTHON_USEDEP}] )"
+DEPEND="${CDEPEND}
+ >=dev-python/setuptools-18.5[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep \
+ 'dev-python/backports-shutil_get_terminal_size[${PYTHON_USEDEP}]' 'python2*')
+ $(python_gen_cond_dep \
+ 'dev-python/typing[${PYTHON_USEDEP}]' 'python2*')
+ test? (
+ app-text/dvipng
+ dev-python/jinja[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep 'dev-python/mock[${PYTHON_USEDEP}]' 'python2*')
+ >=dev-python/nose-0.10.1[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep 'dev-python/numpy[${PYTHON_USEDEP}]' 'python3*')
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ x11-base/xorg-server[xvfb]
+ )
+ doc? (
+ dev-python/cython[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep 'dev-python/fabric[${PYTHON_USEDEP}]' 'python2*')
+ >=dev-python/jsonschema-2.0[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ >=dev-python/nose-0.10.1[${PYTHON_USEDEP}]
+ dev-python/rpy[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ )"
+
+PDEPEND="
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ )
+ qt4? ( dev-python/qtconsole )
+ smp? ( dev-python/ipyparallel[${PYTHON_USEDEP}] )"
+
+PATCHES=( "${FILESDIR}"/2.1.0-substitute-files.patch )
+
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_prepare_all() {
+ # Remove out of date insource files
+ rm IPython/extensions/cythonmagic.py || die
+ rm IPython/extensions/rmagic.py || die
+
+ # Prevent un-needed download during build
+ if use doc; then
+ sed -e "/^ 'sphinx.ext.intersphinx',/d" -i docs/source/conf.py || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ if use doc; then
+ emake -C docs html_noapi
+ HTML_DOCS=( docs/build/html/. )
+ fi
+}
+
+python_test() {
+ distutils_install_for_testing
+
+ pushd "${TEST_DIR}" >/dev/null || die
+ "${EPYTHON}" -m IPython.testing.iptestcontroller --all || die
+ popd >/dev/null || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line_profiler
+ optfeature "%mprun magic command" dev-python/memory_profiler
+
+ if use nbconvert; then
+ if ! has_version app-text/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/ipython/ipython-5.4.1.ebuild b/dev-python/ipython/ipython-5.4.1.ebuild
new file mode 100644
index 000000000000..0abf3b2a028e
--- /dev/null
+++ b/dev-python/ipython/ipython-5.4.1.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+PYTHON_REQ_USE='readline,sqlite,threads(+)'
+
+inherit distutils-r1 eutils
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="http://ipython.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples matplotlib notebook nbconvert qt4 qt5 +smp test wxwidgets"
+
+CDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.10.0[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ >=dev-python/prompt_toolkit-1.0.4[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/simplegeneric[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-4.2.1[${PYTHON_USEDEP}]
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+ wxwidgets? ( $(python_gen_cond_dep 'dev-python/wxpython:*[${PYTHON_USEDEP}]' 'python2*') )
+"
+
+RDEPEND="${CDEPEND}
+ virtual/python-pathlib[${PYTHON_USEDEP}]
+ nbconvert? ( dev-python/nbconvert[${PYTHON_USEDEP}] )"
+DEPEND="${CDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep \
+ 'dev-python/backports-shutil_get_terminal_size[${PYTHON_USEDEP}]' 'python2*')
+ dev-python/typing[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+ doc? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-websupport[${PYTHON_USEDEP}]
+ )"
+
+PDEPEND="
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ )
+ qt4? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ qt5? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ smp? ( dev-python/ipyparallel[${PYTHON_USEDEP}] )"
+
+PATCHES=( "${FILESDIR}"/2.1.0-substitute-files.patch )
+
+DISTUTILS_IN_SOURCE_BUILD=1
+
+python_prepare_all() {
+ # Remove out of date insource files
+ rm IPython/extensions/cythonmagic.py || die
+ rm IPython/extensions/rmagic.py || die
+
+ # Prevent un-needed download during build
+ if use doc; then
+ sed -e "/^ 'sphinx.ext.intersphinx',/d" -i docs/source/conf.py || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ if use doc; then
+ emake -C docs html_noapi
+ HTML_DOCS=( docs/build/html/. )
+ fi
+}
+
+python_test() {
+ distutils_install_for_testing
+ pushd "${TEST_DIR}" >/dev/null || die
+ "${TEST_DIR}"/scripts/iptest || die
+ popd >/dev/null || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line_profiler
+ optfeature "%mprun magic command" dev-python/memory_profiler
+
+ if use nbconvert; then
+ if ! has_version app-text/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/ipython/ipython-6.1.0.ebuild b/dev-python/ipython/ipython-6.1.0.ebuild
new file mode 100644
index 000000000000..492ab29a655d
--- /dev/null
+++ b/dev-python/ipython/ipython-6.1.0.ebuild
@@ -0,0 +1,127 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_{4,5,6} )
+PYTHON_REQ_USE='readline,sqlite,threads(+)'
+
+inherit distutils-r1 eutils
+
+DESCRIPTION="Advanced interactive shell for Python"
+HOMEPAGE="http://ipython.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples matplotlib notebook nbconvert qt4 qt5 smp test"
+
+CDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/jedi-0.10.0[${PYTHON_USEDEP}]
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ dev-python/pickleshare[${PYTHON_USEDEP}]
+ >=dev-python/prompt_toolkit-1.0.4[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/simplegeneric[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-4.2.1[${PYTHON_USEDEP}]
+ matplotlib? ( dev-python/matplotlib[${PYTHON_USEDEP}] )
+"
+
+RDEPEND="${CDEPEND}
+ nbconvert? ( dev-python/nbconvert[${PYTHON_USEDEP}] )
+"
+
+DEPEND="${CDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/typing[${PYTHON_USEDEP}]
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/nbformat[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/testpath[${PYTHON_USEDEP}]
+ )
+ doc? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-websupport[${PYTHON_USEDEP}]
+ )
+"
+
+PDEPEND="
+ notebook? (
+ dev-python/notebook[${PYTHON_USEDEP}]
+ dev-python/ipywidgets[${PYTHON_USEDEP}]
+ )
+ qt4? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ qt5? ( dev-python/qtconsole[${PYTHON_USEDEP}] )
+ smp? ( dev-python/ipyparallel[${PYTHON_USEDEP}] )
+"
+
+PATCHES=( "${FILESDIR}"/2.1.0-substitute-files.patch )
+
+#DISTUTILS_IN_SOURCE_BUILD=1
+
+python_prepare_all() {
+ # Remove out of date insource files
+ rm IPython/extensions/cythonmagic.py || die
+ rm IPython/extensions/rmagic.py || die
+
+ # Prevent un-needed download during build
+ if use doc; then
+ sed -e "/^ 'sphinx.ext.intersphinx',/d" -i docs/source/conf.py || die
+ fi
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ if use doc; then
+ emake -C docs html_noapi
+ HTML_DOCS=( docs/build/html/. )
+ fi
+}
+
+python_test() {
+ distutils_install_for_testing
+ pushd "${TEST_DIR}" >/dev/null || die
+ "${TEST_DIR}"/scripts/iptest || die
+ popd >/dev/null || die
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ # Create ipythonX.Y symlinks.
+ # TODO:
+ # 1. do we want them for pypy? No. pypy has no numpy
+ # 2. handle it in the eclass instead (use _python_ln_rel).
+ # With pypy not an option the dosym becomes unconditional
+ dosym ../lib/python-exec/${EPYTHON}/ipython \
+ /usr/bin/ipython${EPYTHON#python}
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
+
+pkg_postinst() {
+ optfeature "sympyprinting" dev-python/sympy
+ optfeature "cythonmagic" dev-python/cython
+ optfeature "%lprun magic command" dev-python/line_profiler
+ optfeature "%mprun magic command" dev-python/memory_profiler
+
+ if use nbconvert; then
+ if ! has_version app-text/pandoc ; then
+ einfo "Node.js will be used to convert notebooks to other formats"
+ einfo "like HTML. Support for that is still experimental. If you"
+ einfo "encounter any problems, please use app-text/pandoc instead."
+ fi
+ fi
+}
diff --git a/dev-python/ipython/metadata.xml b/dev-python/ipython/metadata.xml
new file mode 100644
index 000000000000..f9fc713b4c4d
--- /dev/null
+++ b/dev-python/ipython/metadata.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <longdescription lang="en">
+ IPython provides a replacement for the interactive Python interpreter with
+ extra functionality. Main features:
+ * Comprehensive object introspection.
+ * Input history, persistent across sessions.
+ * Caching of output results during a session with automatically generated
+ references.
+ * Readline based name completion.
+ * Extensible system of 'magic' commands for controlling the environment and
+ performing many tasks related either to IPython or the operating system.
+ * Configuration system with easy switching between different setups (simpler
+ than changing $PYTHONSTARTUP environment variables every time).
+ * Session logging and reloading.
+ * Extensible syntax processing for special purpose situations.
+ * Access to the system shell with user-extensible alias system.
+ * Easily embeddable in other Python programs.
+ * Integrated access to the pdb debugger and the Python profiler.
+</longdescription>
+ <longdescription lang="ja">
+対話的に利用する場合にPythonインタープリタから、より機能が豊富なIPythonへ置き換える事ができます。
+
+主機能:
+* 内包的オブジェクトの分析。
+* 入力ヒストリーはセッションを越えて記憶し続けます。
+* 出力は自動作成されるリファレンスのセッション間はキャッシュします。
+* Readlineを利用した名前補完。
+* 環境管理とIPythonまたはOSのどちらかに関係するタスク実行のためのmagic
+ コマンドを拡張可能なシステム。
+* 異なるセットアップを簡単に交換できるコンフィグレーション・システム。
+ (毎回起動時に、$PYTHONSTARTUP環境変数を指定するよりも簡単です。)
+* セッション・ロギングとセッション・リローディング。
+* 特別な状況時のための拡張可能な構文解析。
+* ユーザー定義できるエイリアス・システムでシステム・シェルにアクセス。
+* 他のPython言語プログラムを組み込むのが簡単。
+* pdbデバッガとprofilerへの統合アクセス。
+</longdescription>
+ <use>
+ <flag name="matplotlib">Add support for <pkg>dev-python/matplotlib</pkg></flag>
+ <flag name="mongodb">Enable support for MongoDB via <pkg>dev-python/pymongo</pkg></flag>
+ <flag name="notebook">Install requirements for the web notebook based on <pkg>www-servers/tornado</pkg></flag>
+ <flag name="nbconvert">Enable support for converting notebooks to various formats using <pkg>app-text/pandoc</pkg></flag>
+ <flag name="octave">Enable octave bridge via <pkg>dev-python/oct2py</pkg></flag>
+ </use>
+ <upstream>
+ <remote-id type="pypi">ipython</remote-id>
+ <remote-id type="github">ipython/ipython</remote-id>
+ </upstream>
+</pkgmetadata>