ipython 8.23.0__tar.gz → 8.24.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.23.0 → ipython-8.24.0}/IPython/core/debugger.py +38 -48
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/display_functions.py +1 -1
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/excolors.py +20 -3
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/interactiveshell.py +8 -1
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/pylab.py +10 -6
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/pylabtools.py +106 -21
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/release.py +1 -1
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/shellapp.py +65 -25
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_pylabtools.py +93 -9
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/embed.py +1 -1
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/interactiveshell.py +11 -5
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/coloransi.py +28 -3
- {ipython-8.23.0/ipython.egg-info → ipython-8.24.0}/PKG-INFO +3 -3
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.11.rst +1 -1
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version8.rst +32 -1
- {ipython-8.23.0 → ipython-8.24.0/ipython.egg-info}/PKG-INFO +3 -3
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/SOURCES.txt +0 -1
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/requires.txt +2 -2
- {ipython-8.23.0 → ipython-8.24.0}/pyproject.toml +2 -2
- ipython-8.23.0/docs/source/development/parallel_messages.rst +0 -8
- {ipython-8.23.0 → ipython-8.24.0}/.flake8 +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/.mailmap +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/COPYING.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/__main__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/conftest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/consoleapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/alias.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/application.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/autocall.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/completer.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/error.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/events.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/extensions.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/formatters.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/getipython.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/history.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/hooks.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/logger.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/macro.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/page.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/payload.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/prompts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_completer.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_interactiveshell.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/core/usage.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/external/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/demo.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/paths.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/py.typed +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/console.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/testing/tools.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/tests/cve.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/capture.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/data.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/docs.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/frame.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/generics.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/io.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/log.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/path.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/process.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/text.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/timing.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/tz.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/version.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/LICENSE +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/MANIFEST.in +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/README.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/_build_meta.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/Makefile +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/README.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/autogen_api.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/autogen_config.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/autogen_magics.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/make.cmd +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/man/ipython.1 +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/requirements.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/about/history.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/about/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/api/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/conf.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/details.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/config.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/install/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/install/install.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/links.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/overview.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/Index.ipynb +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/animation.m4v +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/long_description.rst +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/scripts/ipython.ico +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/setup.cfg +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/setup.py +0 -0
- {ipython-8.23.0 → ipython-8.24.0}/setupbase.py +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
1
|
"""
|
|
3
2
|
Pdb debugger class.
|
|
4
3
|
|
|
@@ -101,17 +100,25 @@ All the changes since then are under the same license as IPython.
|
|
|
101
100
|
#
|
|
102
101
|
#*****************************************************************************
|
|
103
102
|
|
|
103
|
+
from __future__ import annotations
|
|
104
|
+
|
|
104
105
|
import inspect
|
|
105
106
|
import linecache
|
|
106
|
-
import sys
|
|
107
|
-
import re
|
|
108
107
|
import os
|
|
108
|
+
import re
|
|
109
|
+
import sys
|
|
110
|
+
from contextlib import contextmanager
|
|
111
|
+
from functools import lru_cache
|
|
109
112
|
|
|
110
113
|
from IPython import get_ipython
|
|
111
|
-
from contextlib import contextmanager
|
|
112
|
-
from IPython.utils import PyColorize
|
|
113
|
-
from IPython.utils import coloransi, py3compat
|
|
114
114
|
from IPython.core.excolors import exception_colors
|
|
115
|
+
from IPython.utils import PyColorize, coloransi, py3compat
|
|
116
|
+
|
|
117
|
+
from typing import TYPE_CHECKING
|
|
118
|
+
|
|
119
|
+
if TYPE_CHECKING:
|
|
120
|
+
# otherwise circular import
|
|
121
|
+
from IPython.core.interactiveshell import InteractiveShell
|
|
115
122
|
|
|
116
123
|
# skip module docstests
|
|
117
124
|
__skip_doctest__ = True
|
|
@@ -149,16 +156,10 @@ def BdbQuit_excepthook(et, ev, tb, excepthook=None):
|
|
|
149
156
|
parameter.
|
|
150
157
|
"""
|
|
151
158
|
raise ValueError(
|
|
152
|
-
"`BdbQuit_excepthook` is deprecated since version 5.1",
|
|
159
|
+
"`BdbQuit_excepthook` is deprecated since version 5.1. It is still arround only because it is still imported by ipdb.",
|
|
153
160
|
)
|
|
154
161
|
|
|
155
162
|
|
|
156
|
-
def BdbQuit_IPython_excepthook(self, et, ev, tb, tb_offset=None):
|
|
157
|
-
raise ValueError(
|
|
158
|
-
"`BdbQuit_IPython_excepthook` is deprecated since version 5.1",
|
|
159
|
-
DeprecationWarning, stacklevel=2)
|
|
160
|
-
|
|
161
|
-
|
|
162
163
|
RGX_EXTRA_INDENT = re.compile(r'(?<=\n)\s+')
|
|
163
164
|
|
|
164
165
|
|
|
@@ -191,6 +192,8 @@ class Pdb(OldPdb):
|
|
|
191
192
|
|
|
192
193
|
"""
|
|
193
194
|
|
|
195
|
+
shell: InteractiveShell
|
|
196
|
+
|
|
194
197
|
if CHAIN_EXCEPTIONS:
|
|
195
198
|
MAX_CHAINED_EXCEPTION_DEPTH = 999
|
|
196
199
|
|
|
@@ -261,21 +264,6 @@ class Pdb(OldPdb):
|
|
|
261
264
|
C = coloransi.TermColors
|
|
262
265
|
cst = self.color_scheme_table
|
|
263
266
|
|
|
264
|
-
cst['NoColor'].colors.prompt = C.NoColor
|
|
265
|
-
cst['NoColor'].colors.breakpoint_enabled = C.NoColor
|
|
266
|
-
cst['NoColor'].colors.breakpoint_disabled = C.NoColor
|
|
267
|
-
|
|
268
|
-
cst['Linux'].colors.prompt = C.Green
|
|
269
|
-
cst['Linux'].colors.breakpoint_enabled = C.LightRed
|
|
270
|
-
cst['Linux'].colors.breakpoint_disabled = C.Red
|
|
271
|
-
|
|
272
|
-
cst['LightBG'].colors.prompt = C.Blue
|
|
273
|
-
cst['LightBG'].colors.breakpoint_enabled = C.LightRed
|
|
274
|
-
cst['LightBG'].colors.breakpoint_disabled = C.Red
|
|
275
|
-
|
|
276
|
-
cst['Neutral'].colors.prompt = C.Blue
|
|
277
|
-
cst['Neutral'].colors.breakpoint_enabled = C.LightRed
|
|
278
|
-
cst['Neutral'].colors.breakpoint_disabled = C.Red
|
|
279
267
|
|
|
280
268
|
# Add a python parser so we can syntax highlight source while
|
|
281
269
|
# debugging.
|
|
@@ -471,24 +459,11 @@ class Pdb(OldPdb):
|
|
|
471
459
|
|
|
472
460
|
return line
|
|
473
461
|
|
|
474
|
-
def new_do_frame(self, arg):
|
|
475
|
-
OldPdb.do_frame(self, arg)
|
|
476
|
-
|
|
477
462
|
def new_do_quit(self, arg):
|
|
478
|
-
|
|
479
|
-
if hasattr(self, 'old_all_completions'):
|
|
480
|
-
self.shell.Completer.all_completions = self.old_all_completions
|
|
481
|
-
|
|
482
463
|
return OldPdb.do_quit(self, arg)
|
|
483
464
|
|
|
484
465
|
do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
|
|
485
466
|
|
|
486
|
-
def new_do_restart(self, arg):
|
|
487
|
-
"""Restart command. In the context of ipython this is exactly the same
|
|
488
|
-
thing as 'quit'."""
|
|
489
|
-
self.msg("Restart doesn't make sense here. Using 'quit' instead.")
|
|
490
|
-
return self.do_quit(arg)
|
|
491
|
-
|
|
492
467
|
def print_stack_trace(self, context=None):
|
|
493
468
|
Colors = self.color_scheme_table.active_colors
|
|
494
469
|
ColorsNormal = Colors.Normal
|
|
@@ -941,22 +916,37 @@ class Pdb(OldPdb):
|
|
|
941
916
|
Utility to tell us whether we are in a decorator internal and should stop.
|
|
942
917
|
|
|
943
918
|
"""
|
|
944
|
-
|
|
945
919
|
# if we are disabled don't skip
|
|
946
920
|
if not self._predicates["debuggerskip"]:
|
|
947
921
|
return False
|
|
948
922
|
|
|
923
|
+
return self._cachable_skip(frame)
|
|
924
|
+
|
|
925
|
+
@lru_cache(1024)
|
|
926
|
+
def _cached_one_parent_frame_debuggerskip(self, frame):
|
|
927
|
+
"""
|
|
928
|
+
Cache looking up for DEBUGGERSKIP on parent frame.
|
|
929
|
+
|
|
930
|
+
This should speedup walking through deep frame when one of the highest
|
|
931
|
+
one does have a debugger skip.
|
|
932
|
+
|
|
933
|
+
This is likely to introduce fake positive though.
|
|
934
|
+
"""
|
|
935
|
+
while getattr(frame, "f_back", None):
|
|
936
|
+
frame = frame.f_back
|
|
937
|
+
if self._get_frame_locals(frame).get(DEBUGGERSKIP):
|
|
938
|
+
return True
|
|
939
|
+
return None
|
|
940
|
+
|
|
941
|
+
@lru_cache(1024)
|
|
942
|
+
def _cachable_skip(self, frame):
|
|
949
943
|
# if frame is tagged, skip by default.
|
|
950
944
|
if DEBUGGERSKIP in frame.f_code.co_varnames:
|
|
951
945
|
return True
|
|
952
946
|
|
|
953
947
|
# if one of the parent frame value set to True skip as well.
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
while getattr(cframe, "f_back", None):
|
|
957
|
-
cframe = cframe.f_back
|
|
958
|
-
if self._get_frame_locals(cframe).get(DEBUGGERSKIP):
|
|
959
|
-
return True
|
|
948
|
+
if self._cached_one_parent_frame_debuggerskip(frame):
|
|
949
|
+
return True
|
|
960
950
|
|
|
961
951
|
return False
|
|
962
952
|
|
|
@@ -34,9 +34,10 @@ def exception_colors():
|
|
|
34
34
|
>>> ec.active_scheme_name
|
|
35
35
|
'NoColor'
|
|
36
36
|
>>> sorted(ec.active_colors.keys())
|
|
37
|
-
['Normal', '
|
|
38
|
-
'
|
|
39
|
-
'val', 'valEm']
|
|
37
|
+
['Normal', 'breakpoint_disabled', 'breakpoint_enabled', 'caret', 'em',
|
|
38
|
+
'excName', 'filename', 'filenameEm', 'line', 'lineno', 'linenoEm', 'name',
|
|
39
|
+
'nameEm', 'normalEm', 'prompt', 'topline', 'vName', 'val', 'valEm']
|
|
40
|
+
|
|
40
41
|
"""
|
|
41
42
|
|
|
42
43
|
ex_colors = ColorSchemeTable()
|
|
@@ -70,6 +71,10 @@ def exception_colors():
|
|
|
70
71
|
"line": C.NoColor,
|
|
71
72
|
"caret": C.NoColor,
|
|
72
73
|
"Normal": C.NoColor,
|
|
74
|
+
# debugger
|
|
75
|
+
"prompt": C.NoColor,
|
|
76
|
+
"breakpoint_enabled": C.NoColor,
|
|
77
|
+
"breakpoint_disabled": C.NoColor,
|
|
73
78
|
},
|
|
74
79
|
)
|
|
75
80
|
)
|
|
@@ -99,6 +104,10 @@ def exception_colors():
|
|
|
99
104
|
"line": C.Yellow,
|
|
100
105
|
"caret": C.White,
|
|
101
106
|
"Normal": C.Normal,
|
|
107
|
+
# debugger
|
|
108
|
+
"prompt": C.Green,
|
|
109
|
+
"breakpoint_enabled": C.LightRed,
|
|
110
|
+
"breakpoint_disabled": C.Red,
|
|
102
111
|
},
|
|
103
112
|
)
|
|
104
113
|
)
|
|
@@ -132,6 +141,10 @@ def exception_colors():
|
|
|
132
141
|
"line": C.Red,
|
|
133
142
|
"caret": C.Normal,
|
|
134
143
|
"Normal": C.Normal,
|
|
144
|
+
# debugger
|
|
145
|
+
"prompt": C.Blue,
|
|
146
|
+
"breakpoint_enabled": C.LightRed,
|
|
147
|
+
"breakpoint_disabled": C.Red,
|
|
135
148
|
},
|
|
136
149
|
)
|
|
137
150
|
)
|
|
@@ -161,6 +174,10 @@ def exception_colors():
|
|
|
161
174
|
"line": C.Red,
|
|
162
175
|
"caret": C.Normal,
|
|
163
176
|
"Normal": C.Normal,
|
|
177
|
+
# debugger
|
|
178
|
+
"prompt": C.Blue,
|
|
179
|
+
"breakpoint_enabled": C.LightRed,
|
|
180
|
+
"breakpoint_disabled": C.Red,
|
|
164
181
|
},
|
|
165
182
|
)
|
|
166
183
|
)
|
|
@@ -3654,10 +3654,17 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
3654
3654
|
make sense in all contexts, for example a terminal ipython can't
|
|
3655
3655
|
display figures inline.
|
|
3656
3656
|
"""
|
|
3657
|
+
from .pylabtools import _matplotlib_manages_backends
|
|
3658
|
+
|
|
3659
|
+
if not _matplotlib_manages_backends() and gui in (None, "auto"):
|
|
3660
|
+
# Early import of backend_inline required for its side effect of
|
|
3661
|
+
# calling _enable_matplotlib_integration()
|
|
3662
|
+
import matplotlib_inline.backend_inline
|
|
3663
|
+
|
|
3657
3664
|
from IPython.core import pylabtools as pt
|
|
3658
3665
|
gui, backend = pt.find_gui_and_backend(gui, self.pylab_gui_select)
|
|
3659
3666
|
|
|
3660
|
-
if gui !=
|
|
3667
|
+
if gui != None:
|
|
3661
3668
|
# If we have our first gui selection, store it
|
|
3662
3669
|
if self.pylab_gui_select is None:
|
|
3663
3670
|
self.pylab_gui_select = gui
|
|
@@ -18,19 +18,19 @@ from IPython.core import magic_arguments
|
|
|
18
18
|
from IPython.core.magic import Magics, magics_class, line_magic
|
|
19
19
|
from IPython.testing.skipdoctest import skip_doctest
|
|
20
20
|
from warnings import warn
|
|
21
|
-
from IPython.core.pylabtools import backends
|
|
22
21
|
|
|
23
22
|
#-----------------------------------------------------------------------------
|
|
24
23
|
# Magic implementation classes
|
|
25
24
|
#-----------------------------------------------------------------------------
|
|
26
25
|
|
|
27
26
|
magic_gui_arg = magic_arguments.argument(
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
"gui",
|
|
28
|
+
nargs="?",
|
|
29
|
+
help="""Name of the matplotlib backend to use such as 'qt' or 'widget'.
|
|
30
30
|
If given, the corresponding matplotlib backend is used,
|
|
31
31
|
otherwise it will be matplotlib's default
|
|
32
32
|
(which you can set in your matplotlib config file).
|
|
33
|
-
"""
|
|
33
|
+
""",
|
|
34
34
|
)
|
|
35
35
|
|
|
36
36
|
|
|
@@ -93,8 +93,12 @@ class PylabMagics(Magics):
|
|
|
93
93
|
"""
|
|
94
94
|
args = magic_arguments.parse_argstring(self.matplotlib, line)
|
|
95
95
|
if args.list:
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
from IPython.core.pylabtools import _list_matplotlib_backends_and_gui_loops
|
|
97
|
+
|
|
98
|
+
print(
|
|
99
|
+
"Available matplotlib backends: %s"
|
|
100
|
+
% _list_matplotlib_backends_and_gui_loops()
|
|
101
|
+
)
|
|
98
102
|
else:
|
|
99
103
|
gui, backend = self.shell.enable_matplotlib(args.gui.lower() if isinstance(args.gui, str) else args.gui)
|
|
100
104
|
self._show_matplotlib_backend(args.gui, backend)
|
|
@@ -12,9 +12,12 @@ import warnings
|
|
|
12
12
|
from IPython.core.display import _pngxy
|
|
13
13
|
from IPython.utils.decorators import flag_calls
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
backends
|
|
15
|
+
|
|
16
|
+
# Matplotlib backend resolution functionality moved from IPython to Matplotlib
|
|
17
|
+
# in IPython 8.24 and Matplotlib 3.9.1. Need to keep `backends` and `backend2gui`
|
|
18
|
+
# here for earlier Matplotlib and for external backend libraries such as
|
|
19
|
+
# mplcairo that might rely upon it.
|
|
20
|
+
_deprecated_backends = {
|
|
18
21
|
"tk": "TkAgg",
|
|
19
22
|
"gtk": "GTKAgg",
|
|
20
23
|
"gtk3": "GTK3Agg",
|
|
@@ -41,29 +44,44 @@ backends = {
|
|
|
41
44
|
# GUI support to activate based on the desired matplotlib backend. For the
|
|
42
45
|
# most part it's just a reverse of the above dict, but we also need to add a
|
|
43
46
|
# few others that map to the same GUI manually:
|
|
44
|
-
|
|
47
|
+
_deprecated_backend2gui = dict(
|
|
48
|
+
zip(_deprecated_backends.values(), _deprecated_backends.keys())
|
|
49
|
+
)
|
|
45
50
|
# In the reverse mapping, there are a few extra valid matplotlib backends that
|
|
46
51
|
# map to the same GUI support
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
_deprecated_backend2gui["GTK"] = _deprecated_backend2gui["GTKCairo"] = "gtk"
|
|
53
|
+
_deprecated_backend2gui["GTK3Cairo"] = "gtk3"
|
|
54
|
+
_deprecated_backend2gui["GTK4Cairo"] = "gtk4"
|
|
55
|
+
_deprecated_backend2gui["WX"] = "wx"
|
|
56
|
+
_deprecated_backend2gui["CocoaAgg"] = "osx"
|
|
52
57
|
# There needs to be a hysteresis here as the new QtAgg Matplotlib backend
|
|
53
58
|
# supports either Qt5 or Qt6 and the IPython qt event loop support Qt4, Qt5,
|
|
54
59
|
# and Qt6.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
_deprecated_backend2gui["QtAgg"] = "qt"
|
|
61
|
+
_deprecated_backend2gui["Qt4Agg"] = "qt4"
|
|
62
|
+
_deprecated_backend2gui["Qt5Agg"] = "qt5"
|
|
58
63
|
|
|
59
64
|
# And some backends that don't need GUI integration
|
|
60
|
-
del
|
|
61
|
-
del
|
|
62
|
-
del
|
|
63
|
-
del
|
|
64
|
-
del
|
|
65
|
-
del
|
|
66
|
-
del
|
|
65
|
+
del _deprecated_backend2gui["nbAgg"]
|
|
66
|
+
del _deprecated_backend2gui["agg"]
|
|
67
|
+
del _deprecated_backend2gui["svg"]
|
|
68
|
+
del _deprecated_backend2gui["pdf"]
|
|
69
|
+
del _deprecated_backend2gui["ps"]
|
|
70
|
+
del _deprecated_backend2gui["module://matplotlib_inline.backend_inline"]
|
|
71
|
+
del _deprecated_backend2gui["module://ipympl.backend_nbagg"]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
# Deprecated attributes backends and backend2gui mostly following PEP 562.
|
|
75
|
+
def __getattr__(name):
|
|
76
|
+
if name in ("backends", "backend2gui"):
|
|
77
|
+
warnings.warn(
|
|
78
|
+
f"{name} is deprecated since IPython 8.24, backends are managed "
|
|
79
|
+
"in matplotlib and can be externally registered.",
|
|
80
|
+
DeprecationWarning,
|
|
81
|
+
)
|
|
82
|
+
return globals()[f"_deprecated_{name}"]
|
|
83
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
84
|
+
|
|
67
85
|
|
|
68
86
|
#-----------------------------------------------------------------------------
|
|
69
87
|
# Matplotlib utilities
|
|
@@ -267,7 +285,7 @@ def select_figure_formats(shell, formats, **kwargs):
|
|
|
267
285
|
|
|
268
286
|
[ f.pop(Figure, None) for f in shell.display_formatter.formatters.values() ]
|
|
269
287
|
mplbackend = matplotlib.get_backend().lower()
|
|
270
|
-
if mplbackend
|
|
288
|
+
if mplbackend in ("nbagg", "ipympl", "widget", "module://ipympl.backend_nbagg"):
|
|
271
289
|
formatter = shell.display_formatter.ipython_display_formatter
|
|
272
290
|
formatter.for_type(Figure, _reshow_nbagg_figure)
|
|
273
291
|
|
|
@@ -319,7 +337,23 @@ def find_gui_and_backend(gui=None, gui_select=None):
|
|
|
319
337
|
|
|
320
338
|
import matplotlib
|
|
321
339
|
|
|
322
|
-
|
|
340
|
+
if _matplotlib_manages_backends():
|
|
341
|
+
backend_registry = matplotlib.backends.registry.backend_registry
|
|
342
|
+
|
|
343
|
+
# gui argument may be a gui event loop or may be a backend name.
|
|
344
|
+
if gui in ("auto", None):
|
|
345
|
+
backend = matplotlib.rcParamsOrig["backend"]
|
|
346
|
+
backend, gui = backend_registry.resolve_backend(backend)
|
|
347
|
+
else:
|
|
348
|
+
backend, gui = backend_registry.resolve_gui_or_backend(gui)
|
|
349
|
+
|
|
350
|
+
return gui, backend
|
|
351
|
+
|
|
352
|
+
# Fallback to previous behaviour (Matplotlib < 3.9)
|
|
353
|
+
mpl_version_info = getattr(matplotlib, "__version_info__", (0, 0))
|
|
354
|
+
has_unified_qt_backend = mpl_version_info >= (3, 5)
|
|
355
|
+
|
|
356
|
+
from IPython.core.pylabtools import backends
|
|
323
357
|
|
|
324
358
|
backends_ = dict(backends)
|
|
325
359
|
if not has_unified_qt_backend:
|
|
@@ -338,6 +372,7 @@ def find_gui_and_backend(gui=None, gui_select=None):
|
|
|
338
372
|
backend = matplotlib.rcParamsOrig['backend']
|
|
339
373
|
# In this case, we need to find what the appropriate gui selection call
|
|
340
374
|
# should be for IPython, so we can activate inputhook accordingly
|
|
375
|
+
from IPython.core.pylabtools import backend2gui
|
|
341
376
|
gui = backend2gui.get(backend, None)
|
|
342
377
|
|
|
343
378
|
# If we have already had a gui active, we need it and inline are the
|
|
@@ -346,6 +381,11 @@ def find_gui_and_backend(gui=None, gui_select=None):
|
|
|
346
381
|
gui = gui_select
|
|
347
382
|
backend = backends_[gui]
|
|
348
383
|
|
|
384
|
+
# Matplotlib before _matplotlib_manages_backends() can return "inline" for
|
|
385
|
+
# no gui event loop rather than the None that IPython >= 8.24.0 expects.
|
|
386
|
+
if gui == "inline":
|
|
387
|
+
gui = None
|
|
388
|
+
|
|
349
389
|
return gui, backend
|
|
350
390
|
|
|
351
391
|
|
|
@@ -431,3 +471,48 @@ def configure_inline_support(shell, backend):
|
|
|
431
471
|
)
|
|
432
472
|
|
|
433
473
|
configure_inline_support_orig(shell, backend)
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
# Determine if Matplotlib manages backends only if needed, and cache result.
|
|
477
|
+
# Do not read this directly, instead use _matplotlib_manages_backends().
|
|
478
|
+
_matplotlib_manages_backends_value: bool | None = None
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
def _matplotlib_manages_backends() -> bool:
|
|
482
|
+
"""Return True if Matplotlib manages backends, False otherwise.
|
|
483
|
+
|
|
484
|
+
If it returns True, the caller can be sure that
|
|
485
|
+
matplotlib.backends.registry.backend_registry is available along with
|
|
486
|
+
member functions resolve_gui_or_backend, resolve_backend, list_all, and
|
|
487
|
+
list_gui_frameworks.
|
|
488
|
+
"""
|
|
489
|
+
global _matplotlib_manages_backends_value
|
|
490
|
+
if _matplotlib_manages_backends_value is None:
|
|
491
|
+
try:
|
|
492
|
+
from matplotlib.backends.registry import backend_registry
|
|
493
|
+
|
|
494
|
+
_matplotlib_manages_backends_value = hasattr(
|
|
495
|
+
backend_registry, "resolve_gui_or_backend"
|
|
496
|
+
)
|
|
497
|
+
except ImportError:
|
|
498
|
+
_matplotlib_manages_backends_value = False
|
|
499
|
+
|
|
500
|
+
return _matplotlib_manages_backends_value
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
def _list_matplotlib_backends_and_gui_loops() -> list[str]:
|
|
504
|
+
"""Return list of all Matplotlib backends and GUI event loops.
|
|
505
|
+
|
|
506
|
+
This is the list returned by
|
|
507
|
+
%matplotlib --list
|
|
508
|
+
"""
|
|
509
|
+
if _matplotlib_manages_backends():
|
|
510
|
+
from matplotlib.backends.registry import backend_registry
|
|
511
|
+
|
|
512
|
+
ret = backend_registry.list_all() + backend_registry.list_gui_frameworks()
|
|
513
|
+
else:
|
|
514
|
+
from IPython.core import pylabtools
|
|
515
|
+
|
|
516
|
+
ret = list(pylabtools.backends.keys())
|
|
517
|
+
|
|
518
|
+
return sorted(["auto"] + ret)
|
|
@@ -11,37 +11,45 @@ import glob
|
|
|
11
11
|
from itertools import chain
|
|
12
12
|
import os
|
|
13
13
|
import sys
|
|
14
|
+
import typing as t
|
|
14
15
|
|
|
15
16
|
from traitlets.config.application import boolean_flag
|
|
16
17
|
from traitlets.config.configurable import Configurable
|
|
17
18
|
from traitlets.config.loader import Config
|
|
18
19
|
from IPython.core.application import SYSTEM_CONFIG_DIRS, ENV_CONFIG_DIRS
|
|
19
|
-
from IPython.core import pylabtools
|
|
20
20
|
from IPython.utils.contexts import preserve_keys
|
|
21
21
|
from IPython.utils.path import filefind
|
|
22
22
|
from traitlets import (
|
|
23
|
-
Unicode,
|
|
23
|
+
Unicode,
|
|
24
|
+
Instance,
|
|
25
|
+
List,
|
|
26
|
+
Bool,
|
|
27
|
+
CaselessStrEnum,
|
|
28
|
+
observe,
|
|
24
29
|
DottedObjectName,
|
|
30
|
+
Undefined,
|
|
25
31
|
)
|
|
26
32
|
from IPython.terminal import pt_inputhooks
|
|
27
33
|
|
|
28
|
-
|
|
34
|
+
# -----------------------------------------------------------------------------
|
|
29
35
|
# Aliases and Flags
|
|
30
|
-
|
|
36
|
+
# -----------------------------------------------------------------------------
|
|
31
37
|
|
|
32
38
|
gui_keys = tuple(sorted(pt_inputhooks.backends) + sorted(pt_inputhooks.aliases))
|
|
33
39
|
|
|
34
|
-
backend_keys = sorted(pylabtools.backends.keys())
|
|
35
|
-
backend_keys.insert(0, 'auto')
|
|
36
|
-
|
|
37
40
|
shell_flags = {}
|
|
38
41
|
|
|
39
42
|
addflag = lambda *args: shell_flags.update(boolean_flag(*args))
|
|
40
|
-
addflag(
|
|
41
|
-
|
|
43
|
+
addflag(
|
|
44
|
+
"autoindent",
|
|
45
|
+
"InteractiveShell.autoindent",
|
|
46
|
+
"Turn on autoindenting.",
|
|
47
|
+
"Turn off autoindenting.",
|
|
42
48
|
)
|
|
43
|
-
addflag(
|
|
44
|
-
|
|
49
|
+
addflag(
|
|
50
|
+
"automagic",
|
|
51
|
+
"InteractiveShell.automagic",
|
|
52
|
+
"""Turn on the auto calling of magic commands. Type %%magic at the
|
|
45
53
|
IPython prompt for more information.""",
|
|
46
54
|
'Turn off the auto calling of magic commands.'
|
|
47
55
|
)
|
|
@@ -97,6 +105,37 @@ shell_aliases = dict(
|
|
|
97
105
|
)
|
|
98
106
|
shell_aliases['cache-size'] = 'InteractiveShell.cache_size'
|
|
99
107
|
|
|
108
|
+
|
|
109
|
+
# -----------------------------------------------------------------------------
|
|
110
|
+
# Traitlets
|
|
111
|
+
# -----------------------------------------------------------------------------
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class MatplotlibBackendCaselessStrEnum(CaselessStrEnum):
|
|
115
|
+
"""An enum of Matplotlib backend strings where the case should be ignored.
|
|
116
|
+
|
|
117
|
+
Prior to Matplotlib 3.9.1 the list of valid backends is hardcoded in
|
|
118
|
+
pylabtools.backends. After that, Matplotlib manages backends.
|
|
119
|
+
|
|
120
|
+
The list of valid backends is determined when it is first needed to avoid
|
|
121
|
+
wasting unnecessary initialisation time.
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
def __init__(
|
|
125
|
+
self: CaselessStrEnum[t.Any],
|
|
126
|
+
default_value: t.Any = Undefined,
|
|
127
|
+
**kwargs: t.Any,
|
|
128
|
+
) -> None:
|
|
129
|
+
super().__init__(None, default_value=default_value, **kwargs)
|
|
130
|
+
|
|
131
|
+
def __getattribute__(self, name):
|
|
132
|
+
if name == "values" and object.__getattribute__(self, name) is None:
|
|
133
|
+
from IPython.core.pylabtools import _list_matplotlib_backends_and_gui_loops
|
|
134
|
+
|
|
135
|
+
self.values = _list_matplotlib_backends_and_gui_loops()
|
|
136
|
+
return object.__getattribute__(self, name)
|
|
137
|
+
|
|
138
|
+
|
|
100
139
|
#-----------------------------------------------------------------------------
|
|
101
140
|
# Main classes and functions
|
|
102
141
|
#-----------------------------------------------------------------------------
|
|
@@ -156,30 +195,31 @@ class InteractiveShellApp(Configurable):
|
|
|
156
195
|
exec_lines = List(Unicode(),
|
|
157
196
|
help="""lines of code to run at IPython startup."""
|
|
158
197
|
).tag(config=True)
|
|
159
|
-
code_to_run = Unicode(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
198
|
+
code_to_run = Unicode("", help="Execute the given command string.").tag(config=True)
|
|
199
|
+
module_to_run = Unicode("", help="Run the module as a script.").tag(config=True)
|
|
200
|
+
gui = CaselessStrEnum(
|
|
201
|
+
gui_keys,
|
|
202
|
+
allow_none=True,
|
|
203
|
+
help="Enable GUI event loop integration with any of {0}.".format(gui_keys),
|
|
164
204
|
).tag(config=True)
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
).tag(config=True)
|
|
168
|
-
matplotlib = CaselessStrEnum(backend_keys, allow_none=True,
|
|
205
|
+
matplotlib = MatplotlibBackendCaselessStrEnum(
|
|
206
|
+
allow_none=True,
|
|
169
207
|
help="""Configure matplotlib for interactive use with
|
|
170
|
-
the default matplotlib backend."""
|
|
208
|
+
the default matplotlib backend.""",
|
|
171
209
|
).tag(config=True)
|
|
172
|
-
pylab =
|
|
210
|
+
pylab = MatplotlibBackendCaselessStrEnum(
|
|
211
|
+
allow_none=True,
|
|
173
212
|
help="""Pre-load matplotlib and numpy for interactive use,
|
|
174
213
|
selecting a particular matplotlib backend and loop integration.
|
|
175
|
-
"""
|
|
214
|
+
""",
|
|
176
215
|
).tag(config=True)
|
|
177
|
-
pylab_import_all = Bool(
|
|
216
|
+
pylab_import_all = Bool(
|
|
217
|
+
True,
|
|
178
218
|
help="""If true, IPython will populate the user namespace with numpy, pylab, etc.
|
|
179
219
|
and an ``import *`` is done from numpy and pylab, when using pylab mode.
|
|
180
220
|
|
|
181
221
|
When False, pylab mode should not import any names into the user namespace.
|
|
182
|
-
"""
|
|
222
|
+
""",
|
|
183
223
|
).tag(config=True)
|
|
184
224
|
ignore_cwd = Bool(
|
|
185
225
|
False,
|