ipython 8.28.0__tar.gz → 8.29.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.28.0 → ipython-8.29.0}/IPython/core/completer.py +2 -2
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/completerlib.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/debugger.py +2 -2
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/display.py +96 -20
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/guarded_eval.py +4 -4
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/inputsplitter.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/interactiveshell.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/ast_mod.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/code.py +3 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/execution.py +15 -5
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/packaging.py +17 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/oinspect.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/page.py +2 -2
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/prefilter.py +4 -2
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/pylabtools.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/release.py +5 -14
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_completer.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_display.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_interactiveshell.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_prefilter.py +10 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_run.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_ultratb.py +3 -3
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/pretty.py +11 -4
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/shortcuts/auto_suggest.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/shortcuts/filters.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/tests/test_tools.py +2 -2
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/tools.py +3 -8
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/frame.py +5 -3
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/text.py +95 -37
- {ipython-8.28.0/ipython.egg-info → ipython-8.29.0}/PKG-INFO +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/conf.py +1 -2
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/tutorial.rst +1 -2
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.9.rst +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version7.rst +7 -7
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version8.rst +50 -5
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +1 -1
- {ipython-8.28.0 → ipython-8.29.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-8.28.0 → ipython-8.29.0}/pyproject.toml +11 -1
- {ipython-8.28.0 → ipython-8.29.0}/setupbase.py +29 -43
- {ipython-8.28.0 → ipython-8.29.0}/.flake8 +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/.mailmap +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/COPYING.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/__main__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/conftest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/consoleapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/alias.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/application.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/autocall.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/error.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/events.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/excolors.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/extensions.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/formatters.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/getipython.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/history.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/hooks.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/logger.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/macro.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/payload.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/prompts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/core/usage.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/display.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/external/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/demo.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/display.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/paths.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/py.typed +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/console.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/interactiveshell.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/tests/cve.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/capture.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/data.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/docs.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/generics.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/io.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/log.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/path.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/process.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/timing.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/tz.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/version.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/LICENSE +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/MANIFEST.in +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/README.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/_build_meta.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/Makefile +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/README.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/autogen_api.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/autogen_config.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/autogen_magics.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/make.cmd +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/man/ipython.1 +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/requirements.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/about/history.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/about/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/api/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/details.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/config.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/install/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/install/install.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/links.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/overview.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/animation.m4v +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/SOURCES.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/long_description.rst +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/scripts/ipython.ico +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/setup.cfg +0 -0
- {ipython-8.28.0 → ipython-8.29.0}/setup.py +0 -0
|
@@ -159,7 +159,7 @@ By default results from all matchers are combined, in the order determined by
|
|
|
159
159
|
their priority. Matchers can request to suppress results from subsequent
|
|
160
160
|
matchers by setting ``suppress`` to ``True`` in the ``MatcherResult``.
|
|
161
161
|
|
|
162
|
-
When multiple matchers simultaneously request
|
|
162
|
+
When multiple matchers simultaneously request suppression, the results from of
|
|
163
163
|
the matcher with higher priority will be returned.
|
|
164
164
|
|
|
165
165
|
Sometimes it is desirable to suppress most but not all other matchers;
|
|
@@ -2651,7 +2651,7 @@ class IPCompleter(Completer):
|
|
|
2651
2651
|
)
|
|
2652
2652
|
can_close_quote = can_close_quote and self.auto_close_dict_keys
|
|
2653
2653
|
|
|
2654
|
-
# fast path if closing
|
|
2654
|
+
# fast path if closing quote should be appended but not suffix is allowed
|
|
2655
2655
|
if not can_close_quote and not can_close_bracket and closing_quote:
|
|
2656
2656
|
return [leading + k for k in matches]
|
|
2657
2657
|
|
|
@@ -167,7 +167,7 @@ def is_possible_submodule(module, attr):
|
|
|
167
167
|
try:
|
|
168
168
|
obj = getattr(module, attr)
|
|
169
169
|
except AttributeError:
|
|
170
|
-
# Is
|
|
170
|
+
# Is possibly an unimported submodule
|
|
171
171
|
return True
|
|
172
172
|
except TypeError:
|
|
173
173
|
# https://github.com/ipython/ipython/issues/9678
|
|
@@ -19,7 +19,7 @@ Global Configuration
|
|
|
19
19
|
--------------------
|
|
20
20
|
|
|
21
21
|
The IPython debugger will by read the global ``~/.pdbrc`` file.
|
|
22
|
-
That is to say you can list all
|
|
22
|
+
That is to say you can list all commands supported by ipdb in your `~/.pdbrc`
|
|
23
23
|
configuration file, to globally configure pdb.
|
|
24
24
|
|
|
25
25
|
Example::
|
|
@@ -177,7 +177,7 @@ def BdbQuit_excepthook(et, ev, tb, excepthook=None):
|
|
|
177
177
|
parameter.
|
|
178
178
|
"""
|
|
179
179
|
raise ValueError(
|
|
180
|
-
"`BdbQuit_excepthook` is deprecated since version 5.1. It is still
|
|
180
|
+
"`BdbQuit_excepthook` is deprecated since version 5.1. It is still around only because it is still imported by ipdb.",
|
|
181
181
|
)
|
|
182
182
|
|
|
183
183
|
|
|
@@ -21,13 +21,35 @@ from IPython.testing.skipdoctest import skip_doctest
|
|
|
21
21
|
from . import display_functions
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
__all__ = [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
__all__ = [
|
|
25
|
+
"display_pretty",
|
|
26
|
+
"display_html",
|
|
27
|
+
"display_markdown",
|
|
28
|
+
"display_svg",
|
|
29
|
+
"display_png",
|
|
30
|
+
"display_jpeg",
|
|
31
|
+
"display_webp",
|
|
32
|
+
"display_latex",
|
|
33
|
+
"display_json",
|
|
34
|
+
"display_javascript",
|
|
35
|
+
"display_pdf",
|
|
36
|
+
"DisplayObject",
|
|
37
|
+
"TextDisplayObject",
|
|
38
|
+
"Pretty",
|
|
39
|
+
"HTML",
|
|
40
|
+
"Markdown",
|
|
41
|
+
"Math",
|
|
42
|
+
"Latex",
|
|
43
|
+
"SVG",
|
|
44
|
+
"ProgressBar",
|
|
45
|
+
"JSON",
|
|
46
|
+
"GeoJSON",
|
|
47
|
+
"Javascript",
|
|
48
|
+
"Image",
|
|
49
|
+
"set_matplotlib_formats",
|
|
50
|
+
"set_matplotlib_close",
|
|
51
|
+
"Video",
|
|
52
|
+
]
|
|
31
53
|
|
|
32
54
|
_deprecated_names = ["display", "clear_output", "publish_display_data", "update_display", "DisplayHandle"]
|
|
33
55
|
|
|
@@ -200,6 +222,23 @@ def display_jpeg(*objs, **kwargs):
|
|
|
200
222
|
_display_mimetype('image/jpeg', objs, **kwargs)
|
|
201
223
|
|
|
202
224
|
|
|
225
|
+
def display_webp(*objs, **kwargs):
|
|
226
|
+
"""Display the WEBP representation of an object.
|
|
227
|
+
|
|
228
|
+
Parameters
|
|
229
|
+
----------
|
|
230
|
+
*objs : object
|
|
231
|
+
The Python objects to display, or if raw=True raw JPEG data to
|
|
232
|
+
display.
|
|
233
|
+
raw : bool
|
|
234
|
+
Are the data objects raw data or Python objects that need to be
|
|
235
|
+
formatted before display? [default: False]
|
|
236
|
+
metadata : dict (optional)
|
|
237
|
+
Metadata to be associated with the specific mimetype output.
|
|
238
|
+
"""
|
|
239
|
+
_display_mimetype("image/webp", objs, **kwargs)
|
|
240
|
+
|
|
241
|
+
|
|
203
242
|
def display_latex(*objs, **kwargs):
|
|
204
243
|
"""Display the LaTeX representation of an object.
|
|
205
244
|
|
|
@@ -776,9 +815,14 @@ class Javascript(TextDisplayObject):
|
|
|
776
815
|
r += _lib_t2*len(self.lib)
|
|
777
816
|
return r
|
|
778
817
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
818
|
+
|
|
819
|
+
# constants for identifying png/jpeg/gif/webp data
|
|
820
|
+
_PNG = b"\x89PNG\r\n\x1a\n"
|
|
821
|
+
_JPEG = b"\xff\xd8"
|
|
822
|
+
_GIF1 = b"GIF87a"
|
|
823
|
+
_GIF2 = b"GIF89a"
|
|
824
|
+
_WEBP = b"WEBP"
|
|
825
|
+
|
|
782
826
|
|
|
783
827
|
def _pngxy(data):
|
|
784
828
|
"""read the (width, height) from a PNG header"""
|
|
@@ -786,6 +830,7 @@ def _pngxy(data):
|
|
|
786
830
|
# next 8 bytes are width/height
|
|
787
831
|
return struct.unpack('>ii', data[ihdr+4:ihdr+12])
|
|
788
832
|
|
|
833
|
+
|
|
789
834
|
def _jpegxy(data):
|
|
790
835
|
"""read the (width, height) from a JPEG header"""
|
|
791
836
|
# adapted from http://www.64lines.com/jpeg-width-height
|
|
@@ -805,22 +850,45 @@ def _jpegxy(data):
|
|
|
805
850
|
h, w = struct.unpack('>HH', data[iSOF+5:iSOF+9])
|
|
806
851
|
return w, h
|
|
807
852
|
|
|
853
|
+
|
|
808
854
|
def _gifxy(data):
|
|
809
855
|
"""read the (width, height) from a GIF header"""
|
|
810
856
|
return struct.unpack('<HH', data[6:10])
|
|
811
857
|
|
|
812
858
|
|
|
859
|
+
def _webpxy(data):
|
|
860
|
+
"""read the (width, height) from a WEBP header"""
|
|
861
|
+
if data[12:16] == b"VP8 ":
|
|
862
|
+
width, height = struct.unpack("<HH", data[24:30])
|
|
863
|
+
width = width & 0x3FFF
|
|
864
|
+
height = height & 0x3FFF
|
|
865
|
+
return (width, height)
|
|
866
|
+
elif data[12:16] == b"VP8L":
|
|
867
|
+
size_info = struct.unpack("<I", data[21:25])[0]
|
|
868
|
+
width = 1 + ((size_info & 0x3F) << 8) | (size_info >> 24)
|
|
869
|
+
height = 1 + (
|
|
870
|
+
(((size_info >> 8) & 0xF) << 10)
|
|
871
|
+
| (((size_info >> 14) & 0x3FC) << 2)
|
|
872
|
+
| ((size_info >> 22) & 0x3)
|
|
873
|
+
)
|
|
874
|
+
return (width, height)
|
|
875
|
+
else:
|
|
876
|
+
raise ValueError("Not a valid WEBP header")
|
|
877
|
+
|
|
878
|
+
|
|
813
879
|
class Image(DisplayObject):
|
|
814
880
|
|
|
815
|
-
_read_flags =
|
|
816
|
-
_FMT_JPEG =
|
|
817
|
-
_FMT_PNG =
|
|
818
|
-
_FMT_GIF =
|
|
819
|
-
|
|
881
|
+
_read_flags = "rb"
|
|
882
|
+
_FMT_JPEG = "jpeg"
|
|
883
|
+
_FMT_PNG = "png"
|
|
884
|
+
_FMT_GIF = "gif"
|
|
885
|
+
_FMT_WEBP = "webp"
|
|
886
|
+
_ACCEPTABLE_EMBEDDINGS = [_FMT_JPEG, _FMT_PNG, _FMT_GIF, _FMT_WEBP]
|
|
820
887
|
_MIMETYPES = {
|
|
821
|
-
_FMT_PNG:
|
|
822
|
-
_FMT_JPEG:
|
|
823
|
-
_FMT_GIF:
|
|
888
|
+
_FMT_PNG: "image/png",
|
|
889
|
+
_FMT_JPEG: "image/jpeg",
|
|
890
|
+
_FMT_GIF: "image/gif",
|
|
891
|
+
_FMT_WEBP: "image/webp",
|
|
824
892
|
}
|
|
825
893
|
|
|
826
894
|
def __init__(
|
|
@@ -837,7 +905,7 @@ class Image(DisplayObject):
|
|
|
837
905
|
metadata=None,
|
|
838
906
|
alt=None,
|
|
839
907
|
):
|
|
840
|
-
"""Create a PNG/JPEG/GIF image object given raw data.
|
|
908
|
+
"""Create a PNG/JPEG/GIF/WEBP image object given raw data.
|
|
841
909
|
|
|
842
910
|
When this object is returned by an input cell or passed to the
|
|
843
911
|
display function, it will result in the image being displayed
|
|
@@ -858,7 +926,7 @@ class Image(DisplayObject):
|
|
|
858
926
|
Images from a file are always embedded.
|
|
859
927
|
|
|
860
928
|
format : unicode
|
|
861
|
-
The format of the image data (png/jpeg/jpg/gif). If a filename or URL is given
|
|
929
|
+
The format of the image data (png/jpeg/jpg/gif/webp). If a filename or URL is given
|
|
862
930
|
for format will be inferred from the filename extension.
|
|
863
931
|
|
|
864
932
|
embed : bool
|
|
@@ -942,6 +1010,8 @@ class Image(DisplayObject):
|
|
|
942
1010
|
format = self._FMT_PNG
|
|
943
1011
|
elif ext == u'gif':
|
|
944
1012
|
format = self._FMT_GIF
|
|
1013
|
+
elif ext == "webp":
|
|
1014
|
+
format = self._FMT_WEBP
|
|
945
1015
|
else:
|
|
946
1016
|
format = ext.lower()
|
|
947
1017
|
elif isinstance(data, bytes):
|
|
@@ -949,6 +1019,12 @@ class Image(DisplayObject):
|
|
|
949
1019
|
# only if format has not been specified.
|
|
950
1020
|
if data[:2] == _JPEG:
|
|
951
1021
|
format = self._FMT_JPEG
|
|
1022
|
+
elif data[:8] == _PNG:
|
|
1023
|
+
format = self._FMT_PNG
|
|
1024
|
+
elif data[8:12] == _WEBP:
|
|
1025
|
+
format = self._FMT_WEBP
|
|
1026
|
+
elif data[:6] == _GIF1 or data[:6] == _GIF2:
|
|
1027
|
+
format = self._FMT_GIF
|
|
952
1028
|
|
|
953
1029
|
# failed to detect format, default png
|
|
954
1030
|
if format is None:
|
|
@@ -132,7 +132,7 @@ def _get_external(module_name: str, access_path: Sequence[str]):
|
|
|
132
132
|
|
|
133
133
|
Raises:
|
|
134
134
|
* `KeyError` if module is removed not found, and
|
|
135
|
-
* `AttributeError` if
|
|
135
|
+
* `AttributeError` if access path does not match an exported object
|
|
136
136
|
"""
|
|
137
137
|
member_type = sys.modules[module_name]
|
|
138
138
|
for attr in access_path:
|
|
@@ -235,7 +235,7 @@ class SelectivePolicy(EvaluationPolicy):
|
|
|
235
235
|
accept = has_original_attr and has_original_attribute
|
|
236
236
|
|
|
237
237
|
if accept:
|
|
238
|
-
# We still need to check for
|
|
238
|
+
# We still need to check for overridden properties.
|
|
239
239
|
|
|
240
240
|
value_class = type(value)
|
|
241
241
|
if not hasattr(value_class, attr):
|
|
@@ -332,7 +332,7 @@ class EvaluationContext(NamedTuple):
|
|
|
332
332
|
evaluation: Literal[
|
|
333
333
|
"forbidden", "minimal", "limited", "unsafe", "dangerous"
|
|
334
334
|
] = "forbidden"
|
|
335
|
-
#: Whether the
|
|
335
|
+
#: Whether the evaluation of code takes place inside of a subscript.
|
|
336
336
|
#: Useful for evaluating ``:-1, 'col'`` in ``df[:-1, 'col']``.
|
|
337
337
|
in_subscript: bool = False
|
|
338
338
|
|
|
@@ -373,7 +373,7 @@ def guarded_eval(code: str, context: EvaluationContext):
|
|
|
373
373
|
# getitem at all, for example it fails on simple `[0][1]`
|
|
374
374
|
|
|
375
375
|
if context.in_subscript:
|
|
376
|
-
#
|
|
376
|
+
# syntactic sugar for ellipsis (:) is only available in subscripts
|
|
377
377
|
# so we need to trick the ast parser into thinking that we have
|
|
378
378
|
# a subscript, but we need to be able to later recognise that we did
|
|
379
379
|
# it so we can ignore the actual __getitem__ operation
|
|
@@ -97,7 +97,7 @@ def num_ini_spaces(s):
|
|
|
97
97
|
"""
|
|
98
98
|
warnings.warn(
|
|
99
99
|
"`num_ini_spaces` is Pending Deprecation since IPython 8.17."
|
|
100
|
-
"It is considered
|
|
100
|
+
"It is considered for removal in in future version. "
|
|
101
101
|
"Please open an issue if you believe it should be kept.",
|
|
102
102
|
stacklevel=2,
|
|
103
103
|
category=PendingDeprecationWarning,
|
|
@@ -5,7 +5,7 @@ with ast-transformers it is not easy to directly manipulate ast.
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
IPython has pre-code and post-code hooks, but are ran from within the IPython
|
|
8
|
-
machinery so may be inappropriate, for example for performance
|
|
8
|
+
machinery so may be inappropriate, for example for performance measurement.
|
|
9
9
|
|
|
10
10
|
This module give you tools to simplify this, and expose 2 classes:
|
|
11
11
|
|
|
@@ -153,7 +153,9 @@ def strip_initial_indent(lines):
|
|
|
153
153
|
|
|
154
154
|
for line in it:
|
|
155
155
|
if line.startswith(indent):
|
|
156
|
-
yield line[len(indent):]
|
|
156
|
+
yield line[len(indent) :]
|
|
157
|
+
elif line in ("\n", "\r\n") or len(line) == 0:
|
|
158
|
+
yield line
|
|
157
159
|
else:
|
|
158
160
|
# Less indented than the first line - stop dedenting
|
|
159
161
|
yield line
|
|
@@ -195,12 +195,16 @@ class ExecutionMagics(Magics):
|
|
|
195
195
|
|
|
196
196
|
"""Run a statement through the python code profiler.
|
|
197
197
|
|
|
198
|
-
Usage, in line mode
|
|
198
|
+
**Usage, in line mode:**
|
|
199
|
+
|
|
199
200
|
%prun [options] statement
|
|
200
201
|
|
|
201
|
-
Usage, in cell mode
|
|
202
|
+
**Usage, in cell mode:**
|
|
203
|
+
|
|
202
204
|
%%prun [options] [statement]
|
|
205
|
+
|
|
203
206
|
code...
|
|
207
|
+
|
|
204
208
|
code...
|
|
205
209
|
|
|
206
210
|
In cell mode, the additional code lines are appended to the (possibly
|
|
@@ -1028,11 +1032,16 @@ class ExecutionMagics(Magics):
|
|
|
1028
1032
|
def timeit(self, line='', cell=None, local_ns=None):
|
|
1029
1033
|
"""Time execution of a Python statement or expression
|
|
1030
1034
|
|
|
1031
|
-
Usage, in line mode
|
|
1035
|
+
**Usage, in line mode:**
|
|
1036
|
+
|
|
1032
1037
|
%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
|
|
1033
|
-
|
|
1038
|
+
|
|
1039
|
+
**or in cell mode:**
|
|
1040
|
+
|
|
1034
1041
|
%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code
|
|
1042
|
+
|
|
1035
1043
|
code
|
|
1044
|
+
|
|
1036
1045
|
code...
|
|
1037
1046
|
|
|
1038
1047
|
Time execution of a Python statement or expression using the timeit
|
|
@@ -1046,6 +1055,7 @@ class ExecutionMagics(Magics):
|
|
|
1046
1055
|
body has access to any variables created in the setup code.
|
|
1047
1056
|
|
|
1048
1057
|
Options:
|
|
1058
|
+
|
|
1049
1059
|
-n<N>: execute the given statement <N> times in a loop. If <N> is not
|
|
1050
1060
|
provided, <N> is determined so as to get sufficient accuracy.
|
|
1051
1061
|
|
|
@@ -1066,7 +1076,7 @@ class ExecutionMagics(Magics):
|
|
|
1066
1076
|
-q: Quiet, do not print result.
|
|
1067
1077
|
|
|
1068
1078
|
-o: return a TimeitResult that can be stored in a variable to inspect
|
|
1069
|
-
|
|
1079
|
+
the result in more details.
|
|
1070
1080
|
|
|
1071
1081
|
.. versionchanged:: 7.3
|
|
1072
1082
|
User variables are no longer expanded,
|
|
@@ -162,3 +162,20 @@ class PackagingMagics(Magics):
|
|
|
162
162
|
"""
|
|
163
163
|
micromamba = _get_conda_like_executable("micromamba")
|
|
164
164
|
self._run_command(micromamba, line)
|
|
165
|
+
|
|
166
|
+
@line_magic
|
|
167
|
+
def uv(self, line):
|
|
168
|
+
"""Run the uv package manager within the current kernel.
|
|
169
|
+
|
|
170
|
+
Usage:
|
|
171
|
+
%uv pip install [pkgs]
|
|
172
|
+
"""
|
|
173
|
+
python = sys.executable
|
|
174
|
+
if sys.platform == "win32":
|
|
175
|
+
python = '"' + python + '"'
|
|
176
|
+
else:
|
|
177
|
+
python = shlex.quote(python)
|
|
178
|
+
|
|
179
|
+
self.shell.system(" ".join([python, "-m", "uv", line]))
|
|
180
|
+
|
|
181
|
+
print("Note: you may need to restart the kernel to use updated packages.")
|
|
@@ -460,7 +460,7 @@ class Inspector(Colorable):
|
|
|
460
460
|
|
|
461
461
|
mime_hooks = traitlets.Dict(
|
|
462
462
|
config=True,
|
|
463
|
-
help="dictionary of mime to callable to add
|
|
463
|
+
help="dictionary of mime to callable to add information into help mimebundle dict",
|
|
464
464
|
).tag(config=True)
|
|
465
465
|
|
|
466
466
|
def __init__(
|
|
@@ -125,7 +125,7 @@ def _detect_screen_size(screen_lines_def):
|
|
|
125
125
|
# print('***Screen size:',screen_lines_real,'lines x',
|
|
126
126
|
# screen_cols,'columns.') # dbg
|
|
127
127
|
|
|
128
|
-
def pager_page(strng, start=0, screen_lines=0, pager_cmd=None):
|
|
128
|
+
def pager_page(strng, start=0, screen_lines=0, pager_cmd=None) -> None:
|
|
129
129
|
"""Display a string, piping through a pager after a certain length.
|
|
130
130
|
|
|
131
131
|
strng can be a mime-bundle dict, supplying multiple representations,
|
|
@@ -239,7 +239,7 @@ def pager_page(strng, start=0, screen_lines=0, pager_cmd=None):
|
|
|
239
239
|
page_dumb(strng,screen_lines=screen_lines)
|
|
240
240
|
|
|
241
241
|
|
|
242
|
-
def page(data, start=0, screen_lines=0, pager_cmd=None):
|
|
242
|
+
def page(data, start: int = 0, screen_lines: int = 0, pager_cmd=None):
|
|
243
243
|
"""Display content in a pager, piping through a pager after a certain length.
|
|
244
244
|
|
|
245
245
|
data can be a mime-bundle dict, supplying multiple representations,
|
|
@@ -512,8 +512,10 @@ class AutocallChecker(PrefilterChecker):
|
|
|
512
512
|
callable(oinfo.obj)
|
|
513
513
|
and (not self.exclude_regexp.match(line_info.the_rest))
|
|
514
514
|
and self.function_name_regexp.match(line_info.ifun)
|
|
515
|
-
and
|
|
516
|
-
|
|
515
|
+
and (
|
|
516
|
+
line_info.raw_the_rest.startswith(" ")
|
|
517
|
+
or not line_info.raw_the_rest.strip()
|
|
518
|
+
)
|
|
517
519
|
):
|
|
518
520
|
return self.prefilter_manager.get_handler_by_name("auto")
|
|
519
521
|
else:
|
|
@@ -528,7 +528,7 @@ def _list_matplotlib_backends_and_gui_loops() -> list[str]:
|
|
|
528
528
|
|
|
529
529
|
|
|
530
530
|
# Matplotlib and IPython do not always use the same gui framework name.
|
|
531
|
-
# Always use the
|
|
531
|
+
# Always use the appropriate one of these conversion functions when passing a
|
|
532
532
|
# gui framework name to/from Matplotlib.
|
|
533
533
|
def _convert_gui_to_matplotlib(gui: str | None) -> str | None:
|
|
534
534
|
if gui and gui.lower() == "osx":
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# release. 'dev' as a _version_extra string means this is a development
|
|
17
17
|
# version
|
|
18
18
|
_version_major = 8
|
|
19
|
-
_version_minor =
|
|
19
|
+
_version_minor = 29
|
|
20
20
|
_version_patch = 0
|
|
21
21
|
_version_extra = ".dev"
|
|
22
22
|
# _version_extra = "rc1"
|
|
@@ -32,22 +32,13 @@ if _version_extra:
|
|
|
32
32
|
version = __version__ # backwards compatibility name
|
|
33
33
|
version_info = (_version_major, _version_minor, _version_patch, _version_extra)
|
|
34
34
|
|
|
35
|
-
# Change this when incrementing the kernel protocol version
|
|
36
|
-
kernel_protocol_version_info = (5, 0)
|
|
37
|
-
kernel_protocol_version = "%i.%i" % kernel_protocol_version_info
|
|
38
35
|
|
|
39
36
|
license = "BSD-3-Clause"
|
|
40
37
|
|
|
41
|
-
authors = {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
|
|
46
|
-
'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com'),
|
|
47
|
-
'Thomas' : ('Thomas A. Kluyver', 'takowl@gmail.com'),
|
|
48
|
-
'Jorgen' : ('Jorgen Stenarson', 'jorgen.stenarson@bostream.nu'),
|
|
49
|
-
'Matthias' : ('Matthias Bussonnier', 'bussonniermatthias@gmail.com'),
|
|
50
|
-
}
|
|
38
|
+
authors = {
|
|
39
|
+
"Fernando": ("Fernando Perez", "fperez.net@gmail.com"),
|
|
40
|
+
"M": ("M Bussonnier", "mbussonnier@gmail.com"),
|
|
41
|
+
}
|
|
51
42
|
|
|
52
43
|
author = 'The IPython Development Team'
|
|
53
44
|
|
|
@@ -204,7 +204,7 @@ def test_line_split():
|
|
|
204
204
|
# was at the end of part1. So an empty part2 represents someone hitting
|
|
205
205
|
# tab at the end of the line, the most common case.
|
|
206
206
|
t = [
|
|
207
|
-
("run some/
|
|
207
|
+
("run some/script", "", "some/script"),
|
|
208
208
|
("run scripts/er", "ror.py foo", "scripts/er"),
|
|
209
209
|
("echo $HOM", "", "HOM"),
|
|
210
210
|
("print sys.pa", "", "sys.pa"),
|
|
@@ -140,7 +140,7 @@ def test_image_filename_defaults():
|
|
|
140
140
|
format="badformat",
|
|
141
141
|
embed=True,
|
|
142
142
|
)
|
|
143
|
-
# check
|
|
143
|
+
# check both paths to allow packages to test at build and install time
|
|
144
144
|
imgfile = os.path.join(tpath, 'core/tests/2x2.png')
|
|
145
145
|
img = display.Image(filename=imgfile)
|
|
146
146
|
assert "png" == img.format
|
|
@@ -660,7 +660,7 @@ class TestSystemRaw(ExitCodeChecks):
|
|
|
660
660
|
@mock.patch('os.system', side_effect=KeyboardInterrupt)
|
|
661
661
|
def test_control_c(self, *mocks):
|
|
662
662
|
try:
|
|
663
|
-
self.system("sleep 1 #
|
|
663
|
+
self.system("sleep 1 # won't happen")
|
|
664
664
|
except KeyboardInterrupt: # pragma: no cove
|
|
665
665
|
self.fail(
|
|
666
666
|
"system call should intercept "
|
|
@@ -137,3 +137,13 @@ def test_autocall_should_support_unicode():
|
|
|
137
137
|
finally:
|
|
138
138
|
ip.run_line_magic("autocall", "0")
|
|
139
139
|
del ip.user_ns["π"]
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def test_autocall_regression_gh_14513():
|
|
143
|
+
ip.run_line_magic("autocall", "2")
|
|
144
|
+
ip.user_ns["foo"] = dict()
|
|
145
|
+
try:
|
|
146
|
+
assert ip.prefilter("foo") == "foo"
|
|
147
|
+
finally:
|
|
148
|
+
ip.run_line_magic("autocall", "0")
|
|
149
|
+
del ip.user_ns["foo"]
|
|
@@ -579,7 +579,7 @@ def test_run_tb():
|
|
|
579
579
|
def test_multiprocessing_run():
|
|
580
580
|
"""Set we can run mutiprocesgin without messing up up main namespace
|
|
581
581
|
|
|
582
|
-
Note that import `nose.tools as nt`
|
|
582
|
+
Note that import `nose.tools as nt` modify the values
|
|
583
583
|
sys.module['__mp_main__'] so we need to temporarily set it to None to test
|
|
584
584
|
the issue.
|
|
585
585
|
"""
|
|
@@ -158,14 +158,14 @@ class NestedGenExprTestCase(unittest.TestCase):
|
|
|
158
158
|
|
|
159
159
|
|
|
160
160
|
indentationerror_file = """if True:
|
|
161
|
-
|
|
161
|
+
zoom()
|
|
162
162
|
"""
|
|
163
163
|
|
|
164
164
|
class IndentationErrorTest(unittest.TestCase):
|
|
165
165
|
def test_indentationerror_shows_line(self):
|
|
166
166
|
# See issue gh-2398
|
|
167
167
|
with tt.AssertPrints("IndentationError"):
|
|
168
|
-
with tt.AssertPrints("
|
|
168
|
+
with tt.AssertPrints("zoom()", suppress=False):
|
|
169
169
|
ip.run_cell(indentationerror_file)
|
|
170
170
|
|
|
171
171
|
with TemporaryDirectory() as td:
|
|
@@ -174,7 +174,7 @@ class IndentationErrorTest(unittest.TestCase):
|
|
|
174
174
|
f.write(indentationerror_file)
|
|
175
175
|
|
|
176
176
|
with tt.AssertPrints("IndentationError"):
|
|
177
|
-
with tt.AssertPrints("
|
|
177
|
+
with tt.AssertPrints("zoom()", suppress=False):
|
|
178
178
|
ip.magic('run %s' % fname)
|
|
179
179
|
|
|
180
180
|
@skip_without("pandas")
|
|
@@ -541,7 +541,7 @@ class RawText:
|
|
|
541
541
|
class CallExpression:
|
|
542
542
|
""" Object which emits a line-wrapped call expression in the form `__name(*args, **kwargs)` """
|
|
543
543
|
def __init__(__self, __name, *args, **kwargs):
|
|
544
|
-
# dunders are to avoid clashes with kwargs, as python's name
|
|
544
|
+
# dunders are to avoid clashes with kwargs, as python's name managing
|
|
545
545
|
# will kick in.
|
|
546
546
|
self = __self
|
|
547
547
|
self.name = __name
|
|
@@ -555,7 +555,7 @@ class CallExpression:
|
|
|
555
555
|
return inner
|
|
556
556
|
|
|
557
557
|
def _repr_pretty_(self, p, cycle):
|
|
558
|
-
# dunders are to avoid clashes with kwargs, as python's name
|
|
558
|
+
# dunders are to avoid clashes with kwargs, as python's name managing
|
|
559
559
|
# will kick in.
|
|
560
560
|
|
|
561
561
|
started = False
|
|
@@ -724,8 +724,15 @@ class _ReFlags:
|
|
|
724
724
|
|
|
725
725
|
def _repr_pretty_(self, p, cycle):
|
|
726
726
|
done_one = False
|
|
727
|
-
for flag in (
|
|
728
|
-
|
|
727
|
+
for flag in (
|
|
728
|
+
"IGNORECASE",
|
|
729
|
+
"LOCALE",
|
|
730
|
+
"MULTILINE",
|
|
731
|
+
"DOTALL",
|
|
732
|
+
"UNICODE",
|
|
733
|
+
"VERBOSE",
|
|
734
|
+
"DEBUG",
|
|
735
|
+
):
|
|
729
736
|
if self.value & getattr(re, flag):
|
|
730
737
|
if done_one:
|
|
731
738
|
p.text('|')
|
|
@@ -77,7 +77,7 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
|
|
|
77
77
|
def connect(self, pt_app: PromptSession):
|
|
78
78
|
self._connected_apps.append(pt_app)
|
|
79
79
|
# note: `on_text_changed` could be used for a bit different behaviour
|
|
80
|
-
# on character deletion (i.e.
|
|
80
|
+
# on character deletion (i.e. resetting history position on backspace)
|
|
81
81
|
pt_app.default_buffer.on_text_insert.add_handler(self.reset_history_position)
|
|
82
82
|
pt_app.default_buffer.on_cursor_position_changed.add_handler(self._dismiss)
|
|
83
83
|
|
|
@@ -207,7 +207,7 @@ class PassThrough(Filter):
|
|
|
207
207
|
pass_through = PassThrough()
|
|
208
208
|
|
|
209
209
|
# these one is callable and re-used multiple times hence needs to be
|
|
210
|
-
# only defined once
|
|
210
|
+
# only defined once beforehand so that transforming back to human-readable
|
|
211
211
|
# names works well in the documentation.
|
|
212
212
|
default_buffer_focused = has_focus(DEFAULT_BUFFER)
|
|
213
213
|
|
|
@@ -32,7 +32,7 @@ def test_full_path_posix():
|
|
|
32
32
|
spath = "/foo"
|
|
33
33
|
result = tt.full_path(spath, ["a.txt", "b.txt"])
|
|
34
34
|
assert result, ["/a.txt" == "/b.txt"]
|
|
35
|
-
result = tt.full_path(spath, "a.txt")
|
|
35
|
+
result = tt.full_path(spath, ["a.txt"])
|
|
36
36
|
assert result == ["/a.txt"]
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,7 +44,7 @@ def test_full_path_win32():
|
|
|
44
44
|
spath = "c:\\foo"
|
|
45
45
|
result = tt.full_path(spath, ["a.txt", "b.txt"])
|
|
46
46
|
assert result, ["c:\\a.txt" == "c:\\b.txt"]
|
|
47
|
-
result = tt.full_path(spath, "a.txt")
|
|
47
|
+
result = tt.full_path(spath, ["a.txt"])
|
|
48
48
|
assert result == ["c:\\a.txt"]
|
|
49
49
|
|
|
50
50
|
|