ipython 8.20.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.20.0 → ipython-8.21.0}/IPython/core/alias.py +15 -9
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/application.py +4 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/debugger.py +5 -2
- ipython-8.21.0/IPython/core/excolors.py +175 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/extensions.py +5 -21
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/oinspect.py +26 -13
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/payload.py +1 -2
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/profileapp.py +1 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/release.py +1 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_interactiveshell.py +5 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_profile.py +7 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/ultratb.py +14 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/ipapp.py +4 -4
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/prompts.py +3 -2
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/ipunittest.py +9 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/pytest_ipdoctest.py +23 -19
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/tests/test_decorators.py +4 -2
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_process_posix.py +5 -2
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/coloransi.py +40 -6
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_io.py +1 -0
- {ipython-8.20.0 → ipython-8.21.0}/MANIFEST.in +1 -0
- {ipython-8.20.0 → ipython-8.21.0}/PKG-INFO +7 -9
- ipython-8.21.0/_build_meta.py +2 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version8.rst +78 -2
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/PKG-INFO +7 -9
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/SOURCES.txt +1 -0
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/requires.txt +4 -4
- {ipython-8.20.0 → ipython-8.21.0}/pyproject.toml +8 -2
- {ipython-8.20.0 → ipython-8.21.0}/setup.cfg +1 -2
- {ipython-8.20.0 → ipython-8.21.0}/setup.py +0 -1
- ipython-8.20.0/IPython/core/excolors.py +0 -165
- {ipython-8.20.0 → ipython-8.21.0}/.flake8 +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/.mailmap +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/COPYING.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/__main__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/conftest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/consoleapp.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/autocall.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/completer.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/error.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/events.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/formatters.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/getipython.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/history.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/hooks.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/interactiveshell.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/logger.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/macro.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/page.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/prompts.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_completer.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/core/usage.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/external/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/demo.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/paths.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/py.typed +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/console.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/interactiveshell.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/testing/tools.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/tests/cve.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/capture.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/data.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/docs.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/frame.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/generics.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/io.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/log.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/path.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/process.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/text.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/timing.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/tz.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/version.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/LICENSE +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/README.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/Makefile +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/README.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/autogen_api.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/autogen_config.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/autogen_magics.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/make.cmd +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/man/ipython.1 +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/requirements.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/about/history.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/about/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/api/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/conf.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/details.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/config.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/parallel_connections.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/parallel_messages.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/install/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/install/install.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/links.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/overview.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/Index.ipynb +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/animation.m4v +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/long_description.rst +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/scripts/ipython.ico +0 -0
- {ipython-8.20.0 → ipython-8.21.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.20.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]
|
|
@@ -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:
|
|
@@ -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
|
|
|
@@ -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()
|
|
@@ -24,9 +24,10 @@ import shutil
|
|
|
24
24
|
import sys
|
|
25
25
|
import tempfile
|
|
26
26
|
from pathlib import Path
|
|
27
|
+
from tempfile import TemporaryDirectory
|
|
27
28
|
from unittest import TestCase
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
import pytest
|
|
30
31
|
|
|
31
32
|
from IPython.core.profileapp import list_bundled_profiles, list_profiles_in
|
|
32
33
|
from IPython.core.profiledir import ProfileDir
|
|
@@ -101,6 +102,11 @@ class ProfileStartupTest(TestCase):
|
|
|
101
102
|
self.validate('Exception reporting mode: Plain')
|
|
102
103
|
|
|
103
104
|
|
|
105
|
+
@pytest.mark.skipif(
|
|
106
|
+
sys.implementation.name == "pypy"
|
|
107
|
+
and ((7, 3, 13) < sys.implementation.version < (7, 3, 16)),
|
|
108
|
+
reason="Unicode issues with scandir on PyPy, see https://github.com/pypy/pypy/issues/4860",
|
|
109
|
+
)
|
|
104
110
|
def test_list_profiles_in():
|
|
105
111
|
# No need to remove these directories and files, as they will get nuked in
|
|
106
112
|
# the module-level teardown.
|
|
@@ -789,7 +789,20 @@ class FrameInfo:
|
|
|
789
789
|
|
|
790
790
|
@property
|
|
791
791
|
def lines(self):
|
|
792
|
-
|
|
792
|
+
from executing.executing import NotOneValueFound
|
|
793
|
+
|
|
794
|
+
try:
|
|
795
|
+
return self._sd.lines
|
|
796
|
+
except NotOneValueFound:
|
|
797
|
+
|
|
798
|
+
class Dummy:
|
|
799
|
+
lineno = 0
|
|
800
|
+
is_current = False
|
|
801
|
+
|
|
802
|
+
def render(self, *, pygmented):
|
|
803
|
+
return "<Error retrieving source code with stack_data see ipython/ipython#13598>"
|
|
804
|
+
|
|
805
|
+
return [Dummy()]
|
|
793
806
|
|
|
794
807
|
@property
|
|
795
808
|
def executing(self):
|
|
@@ -177,7 +177,7 @@ class LocateIPythonApp(BaseIPythonApplication):
|
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):
|
|
180
|
-
name =
|
|
180
|
+
name = "ipython"
|
|
181
181
|
description = usage.cl_usage
|
|
182
182
|
crash_handler_class = IPAppCrashHandler # typing: ignore[assignment]
|
|
183
183
|
examples = _examples
|
|
@@ -196,7 +196,7 @@ class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):
|
|
|
196
196
|
def _classes_default(self):
|
|
197
197
|
"""This has to be in a method, for TerminalIPythonApp to be available."""
|
|
198
198
|
return [
|
|
199
|
-
InteractiveShellApp,
|
|
199
|
+
InteractiveShellApp, # ShellApp comes before TerminalApp, because
|
|
200
200
|
self.__class__, # it will also affect subclasses (e.g. QtConsole)
|
|
201
201
|
TerminalInteractiveShell,
|
|
202
202
|
HistoryManager,
|
|
@@ -224,9 +224,9 @@ class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):
|
|
|
224
224
|
),
|
|
225
225
|
)
|
|
226
226
|
|
|
227
|
-
|
|
228
227
|
# *do* autocreate requested profile, but don't create the config file.
|
|
229
|
-
auto_create=Bool(True)
|
|
228
|
+
auto_create = Bool(True).tag(config=True)
|
|
229
|
+
|
|
230
230
|
# configurables
|
|
231
231
|
quick = Bool(False,
|
|
232
232
|
help="""Start IPython quickly by skipping the loading of config files."""
|
|
@@ -103,8 +103,8 @@ class RichPromptDisplayHook(DisplayHook):
|
|
|
103
103
|
|
|
104
104
|
if self.do_full_cache:
|
|
105
105
|
tokens = self.shell.prompts.out_prompt_tokens()
|
|
106
|
-
prompt_txt =
|
|
107
|
-
if prompt_txt and not prompt_txt.endswith(
|
|
106
|
+
prompt_txt = "".join(s for _, s in tokens)
|
|
107
|
+
if prompt_txt and not prompt_txt.endswith("\n"):
|
|
108
108
|
# Ask for a newline before multiline output
|
|
109
109
|
self.prompt_end_newline = False
|
|
110
110
|
|
|
@@ -116,6 +116,7 @@ class RichPromptDisplayHook(DisplayHook):
|
|
|
116
116
|
sys.stdout.write(prompt_txt)
|
|
117
117
|
|
|
118
118
|
def write_format_data(self, format_dict, md_dict=None) -> None:
|
|
119
|
+
assert self.shell is not None
|
|
119
120
|
if self.shell.mime_renderers:
|
|
120
121
|
|
|
121
122
|
for mime, handler in self.shell.mime_renderers.items():
|
|
@@ -36,6 +36,7 @@ Authors
|
|
|
36
36
|
|
|
37
37
|
# Stdlib
|
|
38
38
|
import re
|
|
39
|
+
import sys
|
|
39
40
|
import unittest
|
|
40
41
|
from doctest import DocTestFinder, DocTestRunner, TestResults
|
|
41
42
|
from IPython.terminal.interactiveshell import InteractiveShell
|
|
@@ -49,7 +50,14 @@ def count_failures(runner):
|
|
|
49
50
|
|
|
50
51
|
Code modeled after the summarize() method in doctest.
|
|
51
52
|
"""
|
|
52
|
-
|
|
53
|
+
if sys.version_info < (3, 13):
|
|
54
|
+
return [TestResults(f, t) for f, t in runner._name2ft.values() if f > 0]
|
|
55
|
+
else:
|
|
56
|
+
return [
|
|
57
|
+
TestResults(failure, try_)
|
|
58
|
+
for failure, try_, skip in runner._stats.values()
|
|
59
|
+
if failure > 0
|
|
60
|
+
]
|
|
53
61
|
|
|
54
62
|
|
|
55
63
|
class IPython2PythonConverter(object):
|