ipython 8.19.0__tar.gz → 8.21.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/alias.py +15 -9
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/application.py +4 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/debugger.py +6 -3
- ipython-8.21.0/IPython/core/excolors.py +175 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/extensions.py +5 -21
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/interactiveshell.py +1 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/basic.py +1 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/oinspect.py +26 -13
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/payload.py +1 -2
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/profileapp.py +1 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/release.py +1 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_completer.py +40 -8
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_interactiveshell.py +5 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_magic_arguments.py +9 -7
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_profile.py +7 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/ultratb.py +14 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/interactiveshell.py +22 -10
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/ipapp.py +4 -4
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/prompts.py +3 -2
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/ipunittest.py +9 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/pytest_ipdoctest.py +23 -19
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/tests/test_decorators.py +4 -2
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_process_posix.py +5 -2
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/coloransi.py +40 -6
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_io.py +1 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/text.py +2 -2
- {ipython-8.19.0 → ipython-8.21.0}/MANIFEST.in +1 -0
- {ipython-8.19.0 → ipython-8.21.0}/PKG-INFO +7 -9
- ipython-8.21.0/_build_meta.py +2 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/details.rst +3 -5
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version8.rst +106 -2
- {ipython-8.19.0 → ipython-8.21.0}/examples/Embedding/embed_class_long.py +4 -4
- {ipython-8.19.0 → ipython-8.21.0}/examples/utils/cwd_prompt.py +3 -7
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/PKG-INFO +7 -9
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/SOURCES.txt +1 -0
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/requires.txt +4 -4
- {ipython-8.19.0 → ipython-8.21.0}/pyproject.toml +8 -2
- {ipython-8.19.0 → ipython-8.21.0}/setup.cfg +1 -2
- {ipython-8.19.0 → ipython-8.21.0}/setup.py +0 -1
- ipython-8.19.0/IPython/core/excolors.py +0 -165
- {ipython-8.19.0 → ipython-8.21.0}/.flake8 +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/.mailmap +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/COPYING.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/__main__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/conftest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/consoleapp.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/autocall.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/completer.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/error.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/events.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/formatters.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/getipython.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/history.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/hooks.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/logger.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/macro.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magic.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/page.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/prompts.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/core/usage.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/external/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/demo.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/paths.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/py.typed +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/console.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/testing/tools.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/tests/cve.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/capture.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/data.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/docs.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/frame.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/generics.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/io.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/log.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/path.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/process.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/timing.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/tz.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/version.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/LICENSE +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/README.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/Makefile +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/README.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/autogen_api.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/autogen_config.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/autogen_magics.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/make.cmd +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/man/ipython.1 +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/requirements.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/about/history.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/about/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/api/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/conf.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/config.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/parallel_connections.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/parallel_messages.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/install/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/install/install.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/links.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/overview.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/Index.ipynb +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/animation.m4v +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/long_description.rst +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/scripts/ipython.ico +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.19.0 → ipython-8.21.0}/setupbase.py +0 -0
|
@@ -190,22 +190,28 @@ class Alias(object):
|
|
|
190
190
|
#-----------------------------------------------------------------------------
|
|
191
191
|
|
|
192
192
|
class AliasManager(Configurable):
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
193
|
+
default_aliases: List = List(default_aliases()).tag(config=True)
|
|
194
|
+
user_aliases: List = List(default_value=[]).tag(config=True)
|
|
195
|
+
shell = Instance(
|
|
196
|
+
"IPython.core.interactiveshell.InteractiveShellABC", allow_none=True
|
|
197
|
+
)
|
|
197
198
|
|
|
198
199
|
def __init__(self, shell=None, **kwargs):
|
|
199
200
|
super(AliasManager, self).__init__(shell=shell, **kwargs)
|
|
200
201
|
# For convenient access
|
|
201
|
-
self.
|
|
202
|
-
|
|
202
|
+
if self.shell is not None:
|
|
203
|
+
self.linemagics = self.shell.magics_manager.magics["line"]
|
|
204
|
+
self.init_aliases()
|
|
203
205
|
|
|
204
206
|
def init_aliases(self):
|
|
205
207
|
# Load default & user aliases
|
|
206
208
|
for name, cmd in self.default_aliases + self.user_aliases:
|
|
207
|
-
if
|
|
208
|
-
cmd
|
|
209
|
+
if (
|
|
210
|
+
cmd.startswith("ls ")
|
|
211
|
+
and self.shell is not None
|
|
212
|
+
and self.shell.colors == "NoColor"
|
|
213
|
+
):
|
|
214
|
+
cmd = cmd.replace(" --color", "")
|
|
209
215
|
self.soft_define_alias(name, cmd)
|
|
210
216
|
|
|
211
217
|
@property
|
|
@@ -246,7 +252,7 @@ class AliasManager(Configurable):
|
|
|
246
252
|
raise ValueError('%s is not an alias' % name)
|
|
247
253
|
|
|
248
254
|
def clear_aliases(self):
|
|
249
|
-
for name,
|
|
255
|
+
for name, _ in self.aliases:
|
|
250
256
|
self.undefine_alias(name)
|
|
251
257
|
|
|
252
258
|
def retrieve_alias(self, name):
|
|
@@ -213,7 +213,9 @@ class BaseIPythonApplication(Application):
|
|
|
213
213
|
return d
|
|
214
214
|
|
|
215
215
|
_in_init_profile_dir = False
|
|
216
|
+
|
|
216
217
|
profile_dir = Instance(ProfileDir, allow_none=True)
|
|
218
|
+
|
|
217
219
|
@default('profile_dir')
|
|
218
220
|
def _profile_dir_default(self):
|
|
219
221
|
# avoid recursion
|
|
@@ -226,11 +228,13 @@ class BaseIPythonApplication(Application):
|
|
|
226
228
|
overwrite = Bool(False,
|
|
227
229
|
help="""Whether to overwrite existing config files when copying"""
|
|
228
230
|
).tag(config=True)
|
|
231
|
+
|
|
229
232
|
auto_create = Bool(False,
|
|
230
233
|
help="""Whether to create profile dir if it doesn't exist"""
|
|
231
234
|
).tag(config=True)
|
|
232
235
|
|
|
233
236
|
config_files = List(Unicode())
|
|
237
|
+
|
|
234
238
|
@default('config_files')
|
|
235
239
|
def _config_files_default(self):
|
|
236
240
|
return [self.config_file_name]
|
|
@@ -454,7 +454,7 @@ class Pdb(OldPdb):
|
|
|
454
454
|
with self._hold_exceptions(_chained_exceptions):
|
|
455
455
|
OldPdb.interaction(self, frame, tb)
|
|
456
456
|
else:
|
|
457
|
-
OldPdb.interaction(self, frame,
|
|
457
|
+
OldPdb.interaction(self, frame, tb_or_exc)
|
|
458
458
|
|
|
459
459
|
except KeyboardInterrupt:
|
|
460
460
|
self.stdout.write("\n" + self.shell.get_exception_only())
|
|
@@ -1111,10 +1111,13 @@ class InterruptiblePdb(Pdb):
|
|
|
1111
1111
|
raise
|
|
1112
1112
|
|
|
1113
1113
|
|
|
1114
|
-
def set_trace(frame=None):
|
|
1114
|
+
def set_trace(frame=None, header=None):
|
|
1115
1115
|
"""
|
|
1116
1116
|
Start debugging from `frame`.
|
|
1117
1117
|
|
|
1118
1118
|
If frame is not specified, debugging starts from caller's frame.
|
|
1119
1119
|
"""
|
|
1120
|
-
|
|
1120
|
+
pdb = Pdb()
|
|
1121
|
+
if header is not None:
|
|
1122
|
+
pdb.message(header)
|
|
1123
|
+
pdb.set_trace(frame or sys._getframe().f_back)
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
Color schemes for exception handling code in IPython.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
#*****************************************************************************
|
|
9
|
+
# Copyright (C) 2005-2006 Fernando Perez <fperez@colorado.edu>
|
|
10
|
+
#
|
|
11
|
+
# Distributed under the terms of the BSD License. The full license is in
|
|
12
|
+
# the file COPYING, distributed as part of this software.
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
|
|
15
|
+
from IPython.utils.coloransi import ColorSchemeTable, TermColors, ColorScheme
|
|
16
|
+
|
|
17
|
+
def exception_colors():
|
|
18
|
+
"""Return a color table with fields for exception reporting.
|
|
19
|
+
|
|
20
|
+
The table is an instance of ColorSchemeTable with schemes added for
|
|
21
|
+
'Neutral', 'Linux', 'LightBG' and 'NoColor' and fields for exception handling filled
|
|
22
|
+
in.
|
|
23
|
+
|
|
24
|
+
Examples:
|
|
25
|
+
|
|
26
|
+
>>> ec = exception_colors()
|
|
27
|
+
>>> ec.active_scheme_name
|
|
28
|
+
''
|
|
29
|
+
>>> print(ec.active_colors)
|
|
30
|
+
None
|
|
31
|
+
|
|
32
|
+
Now we activate a color scheme:
|
|
33
|
+
>>> ec.set_active_scheme('NoColor')
|
|
34
|
+
>>> ec.active_scheme_name
|
|
35
|
+
'NoColor'
|
|
36
|
+
>>> sorted(ec.active_colors.keys())
|
|
37
|
+
['Normal', 'caret', 'em', 'excName', 'filename', 'filenameEm', 'line',
|
|
38
|
+
'lineno', 'linenoEm', 'name', 'nameEm', 'normalEm', 'topline', 'vName',
|
|
39
|
+
'val', 'valEm']
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
ex_colors = ColorSchemeTable()
|
|
43
|
+
|
|
44
|
+
# Populate it with color schemes
|
|
45
|
+
C = TermColors # shorthand and local lookup
|
|
46
|
+
ex_colors.add_scheme(
|
|
47
|
+
ColorScheme(
|
|
48
|
+
"NoColor",
|
|
49
|
+
{
|
|
50
|
+
# The color to be used for the top line
|
|
51
|
+
"topline": C.NoColor,
|
|
52
|
+
|
|
53
|
+
# The colors to be used in the traceback
|
|
54
|
+
"filename": C.NoColor,
|
|
55
|
+
"lineno": C.NoColor,
|
|
56
|
+
"name": C.NoColor,
|
|
57
|
+
"vName": C.NoColor,
|
|
58
|
+
"val": C.NoColor,
|
|
59
|
+
"em": C.NoColor,
|
|
60
|
+
|
|
61
|
+
# Emphasized colors for the last frame of the traceback
|
|
62
|
+
"normalEm": C.NoColor,
|
|
63
|
+
"filenameEm": C.NoColor,
|
|
64
|
+
"linenoEm": C.NoColor,
|
|
65
|
+
"nameEm": C.NoColor,
|
|
66
|
+
"valEm": C.NoColor,
|
|
67
|
+
|
|
68
|
+
# Colors for printing the exception
|
|
69
|
+
"excName": C.NoColor,
|
|
70
|
+
"line": C.NoColor,
|
|
71
|
+
"caret": C.NoColor,
|
|
72
|
+
"Normal": C.NoColor,
|
|
73
|
+
},
|
|
74
|
+
)
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# make some schemes as instances so we can copy them for modification easily
|
|
78
|
+
ex_colors.add_scheme(
|
|
79
|
+
ColorScheme(
|
|
80
|
+
"Linux",
|
|
81
|
+
{
|
|
82
|
+
# The color to be used for the top line
|
|
83
|
+
"topline": C.LightRed,
|
|
84
|
+
# The colors to be used in the traceback
|
|
85
|
+
"filename": C.Green,
|
|
86
|
+
"lineno": C.Green,
|
|
87
|
+
"name": C.Purple,
|
|
88
|
+
"vName": C.Cyan,
|
|
89
|
+
"val": C.Green,
|
|
90
|
+
"em": C.LightCyan,
|
|
91
|
+
# Emphasized colors for the last frame of the traceback
|
|
92
|
+
"normalEm": C.LightCyan,
|
|
93
|
+
"filenameEm": C.LightGreen,
|
|
94
|
+
"linenoEm": C.LightGreen,
|
|
95
|
+
"nameEm": C.LightPurple,
|
|
96
|
+
"valEm": C.LightBlue,
|
|
97
|
+
# Colors for printing the exception
|
|
98
|
+
"excName": C.LightRed,
|
|
99
|
+
"line": C.Yellow,
|
|
100
|
+
"caret": C.White,
|
|
101
|
+
"Normal": C.Normal,
|
|
102
|
+
},
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# For light backgrounds, swap dark/light colors
|
|
107
|
+
ex_colors.add_scheme(
|
|
108
|
+
ColorScheme(
|
|
109
|
+
"LightBG",
|
|
110
|
+
{
|
|
111
|
+
# The color to be used for the top line
|
|
112
|
+
"topline": C.Red,
|
|
113
|
+
|
|
114
|
+
# The colors to be used in the traceback
|
|
115
|
+
"filename": C.LightGreen,
|
|
116
|
+
"lineno": C.LightGreen,
|
|
117
|
+
"name": C.LightPurple,
|
|
118
|
+
"vName": C.Cyan,
|
|
119
|
+
"val": C.LightGreen,
|
|
120
|
+
"em": C.Cyan,
|
|
121
|
+
|
|
122
|
+
# Emphasized colors for the last frame of the traceback
|
|
123
|
+
"normalEm": C.Cyan,
|
|
124
|
+
"filenameEm": C.Green,
|
|
125
|
+
"linenoEm": C.Green,
|
|
126
|
+
"nameEm": C.Purple,
|
|
127
|
+
"valEm": C.Blue,
|
|
128
|
+
|
|
129
|
+
# Colors for printing the exception
|
|
130
|
+
"excName": C.Red,
|
|
131
|
+
# "line": C.Brown, # brown often is displayed as yellow
|
|
132
|
+
"line": C.Red,
|
|
133
|
+
"caret": C.Normal,
|
|
134
|
+
"Normal": C.Normal,
|
|
135
|
+
},
|
|
136
|
+
)
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
ex_colors.add_scheme(
|
|
140
|
+
ColorScheme(
|
|
141
|
+
"Neutral",
|
|
142
|
+
{
|
|
143
|
+
# The color to be used for the top line
|
|
144
|
+
"topline": C.Red,
|
|
145
|
+
# The colors to be used in the traceback
|
|
146
|
+
"filename": C.LightGreen,
|
|
147
|
+
"lineno": C.LightGreen,
|
|
148
|
+
"name": C.LightPurple,
|
|
149
|
+
"vName": C.Cyan,
|
|
150
|
+
"val": C.LightGreen,
|
|
151
|
+
"em": C.Cyan,
|
|
152
|
+
# Emphasized colors for the last frame of the traceback
|
|
153
|
+
"normalEm": C.Cyan,
|
|
154
|
+
"filenameEm": C.Green,
|
|
155
|
+
"linenoEm": C.Green,
|
|
156
|
+
"nameEm": C.Purple,
|
|
157
|
+
"valEm": C.Blue,
|
|
158
|
+
# Colors for printing the exception
|
|
159
|
+
"excName": C.Red,
|
|
160
|
+
# line = C.Brown, # brown often is displayed as yellow
|
|
161
|
+
"line": C.Red,
|
|
162
|
+
"caret": C.Normal,
|
|
163
|
+
"Normal": C.Normal,
|
|
164
|
+
},
|
|
165
|
+
)
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
# Hack: the 'neutral' colours are not very visible on a dark background on
|
|
169
|
+
# Windows. Since Windows command prompts have a dark background by default, and
|
|
170
|
+
# relatively few users are likely to alter that, we will use the 'Linux' colours,
|
|
171
|
+
# designed for a dark background, as the default on Windows.
|
|
172
|
+
if os.name == "nt":
|
|
173
|
+
ex_colors.add_scheme(ex_colors['Linux'].copy('Neutral'))
|
|
174
|
+
|
|
175
|
+
return ex_colors
|
|
@@ -10,8 +10,7 @@ import sys
|
|
|
10
10
|
from importlib import import_module, reload
|
|
11
11
|
|
|
12
12
|
from traitlets.config.configurable import Configurable
|
|
13
|
-
from IPython.utils.path import ensure_dir_exists
|
|
14
|
-
from IPython.utils.decorators import undoc
|
|
13
|
+
from IPython.utils.path import ensure_dir_exists
|
|
15
14
|
from traitlets import Instance
|
|
16
15
|
|
|
17
16
|
|
|
@@ -36,35 +35,22 @@ class ExtensionManager(Configurable):
|
|
|
36
35
|
the only argument. You can do anything you want with IPython at
|
|
37
36
|
that point, including defining new magic and aliases, adding new
|
|
38
37
|
components, etc.
|
|
39
|
-
|
|
38
|
+
|
|
40
39
|
You can also optionally define an :func:`unload_ipython_extension(ipython)`
|
|
41
40
|
function, which will be called if the user unloads or reloads the extension.
|
|
42
41
|
The extension manager will only call :func:`load_ipython_extension` again
|
|
43
42
|
if the extension is reloaded.
|
|
44
43
|
|
|
45
44
|
You can put your extension modules anywhere you want, as long as
|
|
46
|
-
they can be imported by Python's standard import mechanism.
|
|
47
|
-
to make it easy to write extensions, you can also put your extensions
|
|
48
|
-
in ``os.path.join(self.ipython_dir, 'extensions')``. This directory
|
|
49
|
-
is added to ``sys.path`` automatically.
|
|
45
|
+
they can be imported by Python's standard import mechanism.
|
|
50
46
|
"""
|
|
51
47
|
|
|
52
48
|
shell = Instance('IPython.core.interactiveshell.InteractiveShellABC', allow_none=True)
|
|
53
49
|
|
|
54
50
|
def __init__(self, shell=None, **kwargs):
|
|
55
51
|
super(ExtensionManager, self).__init__(shell=shell, **kwargs)
|
|
56
|
-
self.shell.observe(
|
|
57
|
-
self._on_ipython_dir_changed, names=('ipython_dir',)
|
|
58
|
-
)
|
|
59
52
|
self.loaded = set()
|
|
60
53
|
|
|
61
|
-
@property
|
|
62
|
-
def ipython_extension_dir(self):
|
|
63
|
-
return os.path.join(self.shell.ipython_dir, u'extensions')
|
|
64
|
-
|
|
65
|
-
def _on_ipython_dir_changed(self, change):
|
|
66
|
-
ensure_dir_exists(self.ipython_extension_dir)
|
|
67
|
-
|
|
68
54
|
def load_extension(self, module_str: str):
|
|
69
55
|
"""Load an IPython extension by its module name.
|
|
70
56
|
|
|
@@ -84,7 +70,7 @@ class ExtensionManager(Configurable):
|
|
|
84
70
|
if module_str in self.loaded:
|
|
85
71
|
return "already loaded"
|
|
86
72
|
|
|
87
|
-
|
|
73
|
+
assert self.shell is not None
|
|
88
74
|
|
|
89
75
|
with self.shell.builtin_trap:
|
|
90
76
|
if module_str not in sys.modules:
|
|
@@ -125,7 +111,6 @@ class ExtensionManager(Configurable):
|
|
|
125
111
|
:func:`reload` is called and then the :func:`load_ipython_extension`
|
|
126
112
|
function of the module, if it exists is called.
|
|
127
113
|
"""
|
|
128
|
-
from IPython.utils.syspathcontext import prepended_to_syspath
|
|
129
114
|
|
|
130
115
|
if BUILTINS_EXTS.get(module_str, False) is True:
|
|
131
116
|
module_str = "IPython.extensions." + module_str
|
|
@@ -133,8 +118,7 @@ class ExtensionManager(Configurable):
|
|
|
133
118
|
if (module_str in self.loaded) and (module_str in sys.modules):
|
|
134
119
|
self.unload_extension(module_str)
|
|
135
120
|
mod = sys.modules[module_str]
|
|
136
|
-
|
|
137
|
-
reload(mod)
|
|
121
|
+
reload(mod)
|
|
138
122
|
if self._call_load_ipython_extension(mod):
|
|
139
123
|
self.loaded.add(module_str)
|
|
140
124
|
else:
|
|
@@ -3604,7 +3604,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
3604
3604
|
# Things related to GUI support and pylab
|
|
3605
3605
|
#-------------------------------------------------------------------------
|
|
3606
3606
|
|
|
3607
|
-
active_eventloop = None
|
|
3607
|
+
active_eventloop: Optional[str] = None
|
|
3608
3608
|
|
|
3609
3609
|
def enable_gui(self, gui=None):
|
|
3610
3610
|
raise NotImplementedError('Implement enable_gui in a subclass')
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""Tools for inspecting Python objects.
|
|
3
2
|
|
|
4
3
|
Uses syntax highlighting for presenting the various information elements.
|
|
@@ -22,7 +21,6 @@ import inspect
|
|
|
22
21
|
import io as stdlib_io
|
|
23
22
|
import linecache
|
|
24
23
|
import os
|
|
25
|
-
import sys
|
|
26
24
|
import types
|
|
27
25
|
import warnings
|
|
28
26
|
|
|
@@ -30,6 +28,8 @@ from typing import Any, Optional, Dict, Union, List, Tuple
|
|
|
30
28
|
|
|
31
29
|
from typing import TypeAlias
|
|
32
30
|
|
|
31
|
+
import traitlets
|
|
32
|
+
|
|
33
33
|
# IPython's own
|
|
34
34
|
from IPython.core import page
|
|
35
35
|
from IPython.lib.pretty import pretty
|
|
@@ -41,7 +41,7 @@ from IPython.utils.path import compress_user
|
|
|
41
41
|
from IPython.utils.text import indent
|
|
42
42
|
from IPython.utils.wildcard import list_namespace
|
|
43
43
|
from IPython.utils.wildcard import typestr2type
|
|
44
|
-
from IPython.utils.coloransi import TermColors
|
|
44
|
+
from IPython.utils.coloransi import TermColors
|
|
45
45
|
from IPython.utils.py3compat import cast_unicode
|
|
46
46
|
from IPython.utils.colorable import Colorable
|
|
47
47
|
from IPython.utils.decorators import undoc
|
|
@@ -145,7 +145,7 @@ def get_encoding(obj):
|
|
|
145
145
|
# getsourcelines returns lineno with 1-offset and page() uses
|
|
146
146
|
# 0-offset, so we must adjust.
|
|
147
147
|
with stdlib_io.open(ofile, 'rb') as buffer: # Tweaked to use io.open for Python 2
|
|
148
|
-
encoding,
|
|
148
|
+
encoding, _lines = openpy.detect_encoding(buffer.readline)
|
|
149
149
|
return encoding
|
|
150
150
|
|
|
151
151
|
def getdoc(obj) -> Union[str,None]:
|
|
@@ -328,7 +328,7 @@ def _get_wrapped(obj):
|
|
|
328
328
|
return orig_obj
|
|
329
329
|
return obj
|
|
330
330
|
|
|
331
|
-
def find_file(obj) -> str:
|
|
331
|
+
def find_file(obj) -> Optional[str]:
|
|
332
332
|
"""Find the absolute path to the file where an object was defined.
|
|
333
333
|
|
|
334
334
|
This is essentially a robust wrapper around `inspect.getabsfile`.
|
|
@@ -346,7 +346,7 @@ def find_file(obj) -> str:
|
|
|
346
346
|
"""
|
|
347
347
|
obj = _get_wrapped(obj)
|
|
348
348
|
|
|
349
|
-
fname = None
|
|
349
|
+
fname: Optional[str] = None
|
|
350
350
|
try:
|
|
351
351
|
fname = inspect.getabsfile(obj)
|
|
352
352
|
except TypeError:
|
|
@@ -360,7 +360,7 @@ def find_file(obj) -> str:
|
|
|
360
360
|
except OSError:
|
|
361
361
|
pass
|
|
362
362
|
|
|
363
|
-
return
|
|
363
|
+
return fname
|
|
364
364
|
|
|
365
365
|
|
|
366
366
|
def find_source_lines(obj):
|
|
@@ -396,11 +396,20 @@ def find_source_lines(obj):
|
|
|
396
396
|
|
|
397
397
|
class Inspector(Colorable):
|
|
398
398
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
399
|
+
mime_hooks = traitlets.Dict(
|
|
400
|
+
config=True,
|
|
401
|
+
help="dictionary of mime to callable to add informations into help mimebundle dict",
|
|
402
|
+
).tag(config=True)
|
|
403
|
+
|
|
404
|
+
def __init__(
|
|
405
|
+
self,
|
|
406
|
+
color_table=InspectColors,
|
|
407
|
+
code_color_table=PyColorize.ANSICodeColors,
|
|
408
|
+
scheme=None,
|
|
409
|
+
str_detail_level=0,
|
|
410
|
+
parent=None,
|
|
411
|
+
config=None,
|
|
412
|
+
):
|
|
404
413
|
super(Inspector, self).__init__(parent=parent, config=config)
|
|
405
414
|
self.color_table = color_table
|
|
406
415
|
self.parser = PyColorize.Parser(out='str', parent=self, style=scheme)
|
|
@@ -625,7 +634,7 @@ class Inspector(Colorable):
|
|
|
625
634
|
if k in ("text/html", "text/plain"):
|
|
626
635
|
continue
|
|
627
636
|
else:
|
|
628
|
-
new_b = bundle[k] # type:ignore
|
|
637
|
+
new_b[k] = bundle[k] # type:ignore
|
|
629
638
|
return new_b
|
|
630
639
|
|
|
631
640
|
def _append_info_field(
|
|
@@ -759,6 +768,10 @@ class Inspector(Colorable):
|
|
|
759
768
|
detail_level=detail_level,
|
|
760
769
|
omit_sections=omit_sections,
|
|
761
770
|
)
|
|
771
|
+
for key, hook in self.mime_hooks.items():
|
|
772
|
+
res = hook(obj, info)
|
|
773
|
+
if res is not None:
|
|
774
|
+
bundle[key] = res
|
|
762
775
|
return self.format_mime(bundle)
|
|
763
776
|
|
|
764
777
|
def pinfo(
|
|
@@ -26,8 +26,7 @@ from traitlets import List
|
|
|
26
26
|
#-----------------------------------------------------------------------------
|
|
27
27
|
|
|
28
28
|
class PayloadManager(Configurable):
|
|
29
|
-
|
|
30
|
-
_payload = List([])
|
|
29
|
+
_payload: List = List([])
|
|
31
30
|
|
|
32
31
|
def write_payload(self, data, single=True):
|
|
33
32
|
"""Include or update the specified `data` payload in the PayloadManager.
|
|
@@ -209,7 +209,7 @@ class ProfileCreate(BaseIPythonApplication):
|
|
|
209
209
|
name = u'ipython-profile'
|
|
210
210
|
description = create_help
|
|
211
211
|
examples = _create_examples
|
|
212
|
-
auto_create = Bool(True)
|
|
212
|
+
auto_create = Bool(True).tag(config=True)
|
|
213
213
|
def _log_format_default(self):
|
|
214
214
|
return "[%(name)s] %(message)s"
|
|
215
215
|
|
|
@@ -34,6 +34,7 @@ from IPython.core.completer import (
|
|
|
34
34
|
# Test functions
|
|
35
35
|
# -----------------------------------------------------------------------------
|
|
36
36
|
|
|
37
|
+
|
|
37
38
|
def recompute_unicode_ranges():
|
|
38
39
|
"""
|
|
39
40
|
utility to recompute the largest unicode range without any characters
|
|
@@ -42,8 +43,9 @@ def recompute_unicode_ranges():
|
|
|
42
43
|
"""
|
|
43
44
|
import itertools
|
|
44
45
|
import unicodedata
|
|
46
|
+
|
|
45
47
|
valid = []
|
|
46
|
-
for c in range(0,0x10FFFF + 1):
|
|
48
|
+
for c in range(0, 0x10FFFF + 1):
|
|
47
49
|
try:
|
|
48
50
|
unicodedata.name(chr(c))
|
|
49
51
|
except ValueError:
|
|
@@ -58,22 +60,28 @@ def recompute_unicode_ranges():
|
|
|
58
60
|
rg = list(ranges(valid))
|
|
59
61
|
lens = []
|
|
60
62
|
gap_lens = []
|
|
61
|
-
pstart, pstop = 0,0
|
|
63
|
+
pstart, pstop = 0, 0
|
|
62
64
|
for start, stop in rg:
|
|
63
|
-
lens.append(stop-start)
|
|
64
|
-
gap_lens.append(
|
|
65
|
+
lens.append(stop - start)
|
|
66
|
+
gap_lens.append(
|
|
67
|
+
(
|
|
68
|
+
start - pstop,
|
|
69
|
+
hex(pstop + 1),
|
|
70
|
+
hex(start),
|
|
71
|
+
f"{round((start - pstop)/0xe01f0*100)}%",
|
|
72
|
+
)
|
|
73
|
+
)
|
|
65
74
|
pstart, pstop = start, stop
|
|
66
75
|
|
|
67
76
|
return sorted(gap_lens)[-1]
|
|
68
77
|
|
|
69
78
|
|
|
70
|
-
|
|
71
79
|
def test_unicode_range():
|
|
72
80
|
"""
|
|
73
81
|
Test that the ranges we test for unicode names give the same number of
|
|
74
82
|
results than testing the full length.
|
|
75
83
|
"""
|
|
76
|
-
from IPython.core.completer import
|
|
84
|
+
from IPython.core.completer import _unicode_name_compute, _UNICODE_RANGES
|
|
77
85
|
|
|
78
86
|
expected_list = _unicode_name_compute([(0, 0x110000)])
|
|
79
87
|
test = _unicode_name_compute(_UNICODE_RANGES)
|
|
@@ -98,8 +106,8 @@ def test_unicode_range():
|
|
|
98
106
|
"""
|
|
99
107
|
assert len_exp == len_test, message
|
|
100
108
|
|
|
101
|
-
# fail if new unicode symbols have been added.
|
|
102
|
-
assert len_exp <=
|
|
109
|
+
# fail if new unicode symbols have been added.
|
|
110
|
+
assert len_exp <= 143668, message
|
|
103
111
|
|
|
104
112
|
|
|
105
113
|
@contextmanager
|
|
@@ -428,6 +436,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
428
436
|
c = _("%ls foo")[0]
|
|
429
437
|
self.assertEqual(c.text, escaped)
|
|
430
438
|
|
|
439
|
+
@pytest.mark.xfail(
|
|
440
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
441
|
+
reason="Parso does not yet parse 3.13",
|
|
442
|
+
)
|
|
431
443
|
def test_all_completions_dups(self):
|
|
432
444
|
"""
|
|
433
445
|
Make sure the output of `IPCompleter.all_completions` does not have
|
|
@@ -446,6 +458,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
446
458
|
matches = c.all_completions("TestClass.a")
|
|
447
459
|
assert matches == ['TestClass.a', 'TestClass.a1'], jedi_status
|
|
448
460
|
|
|
461
|
+
@pytest.mark.xfail(
|
|
462
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
463
|
+
reason="Parso does not yet parse 3.13",
|
|
464
|
+
)
|
|
449
465
|
def test_jedi(self):
|
|
450
466
|
"""
|
|
451
467
|
A couple of issue we had with Jedi
|
|
@@ -481,6 +497,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
481
497
|
|
|
482
498
|
_test_not_complete("does not mix types", 'a=(1,"foo");a[0].', "capitalize")
|
|
483
499
|
|
|
500
|
+
@pytest.mark.xfail(
|
|
501
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
502
|
+
reason="Parso does not yet parse 3.13",
|
|
503
|
+
)
|
|
484
504
|
def test_completion_have_signature(self):
|
|
485
505
|
"""
|
|
486
506
|
Lets make sure jedi is capable of pulling out the signature of the function we are completing.
|
|
@@ -496,6 +516,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
496
516
|
"encoding" in c.signature
|
|
497
517
|
), "Signature of function was not found by completer"
|
|
498
518
|
|
|
519
|
+
@pytest.mark.xfail(
|
|
520
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
521
|
+
reason="Parso does not yet parse 3.13",
|
|
522
|
+
)
|
|
499
523
|
def test_completions_have_type(self):
|
|
500
524
|
"""
|
|
501
525
|
Lets make sure matchers provide completion type.
|
|
@@ -531,6 +555,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
531
555
|
assert len(l) == 1, "Completions (Z.z<tab>) correctly deduplicate: %s " % l
|
|
532
556
|
assert l[0].text == "zoo" # and not `it.accumulate`
|
|
533
557
|
|
|
558
|
+
@pytest.mark.xfail(
|
|
559
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
560
|
+
reason="Parso does not yet parse 3.13",
|
|
561
|
+
)
|
|
534
562
|
def test_greedy_completions(self):
|
|
535
563
|
"""
|
|
536
564
|
Test the capability of the Greedy completer.
|
|
@@ -1608,6 +1636,10 @@ class TestCompleter(unittest.TestCase):
|
|
|
1608
1636
|
configure(None)
|
|
1609
1637
|
_("--", ["completion_iter", "completion_list"])
|
|
1610
1638
|
|
|
1639
|
+
@pytest.mark.xfail(
|
|
1640
|
+
sys.version_info.releaselevel in ("alpha",),
|
|
1641
|
+
reason="Parso does not yet parse 3.13",
|
|
1642
|
+
)
|
|
1611
1643
|
def test_matcher_suppression_with_jedi(self):
|
|
1612
1644
|
ip = get_ipython()
|
|
1613
1645
|
c = ip.Completer
|
|
@@ -577,8 +577,12 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
577
577
|
self.assertEqual(res.success, True)
|
|
578
578
|
|
|
579
579
|
|
|
580
|
+
@pytest.mark.skipif(
|
|
581
|
+
sys.implementation.name == "pypy"
|
|
582
|
+
and ((7, 3, 13) < sys.implementation.version < (7, 3, 16)),
|
|
583
|
+
reason="Unicode issues with scandir on PyPy, see https://github.com/pypy/pypy/issues/4860",
|
|
584
|
+
)
|
|
580
585
|
class TestSafeExecfileNonAsciiPath(unittest.TestCase):
|
|
581
|
-
|
|
582
586
|
@onlyif_unicode_paths
|
|
583
587
|
def setUp(self):
|
|
584
588
|
self.BASETESTDIR = tempfile.mkdtemp()
|