ipython 8.25.0__tar.gz → 8.26.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.25.0 → ipython-8.26.0}/IPython/core/async_helpers.py +0 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/interactiveshell.py +1 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/release.py +1 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_autocall.py +1 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_completer.py +11 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_debugger.py +5 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_formatters.py +37 -22
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_interactiveshell.py +67 -47
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_oinspect.py +21 -11
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/test_autoreload.py +1 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/pretty.py +10 -2
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/interactiveshell.py +5 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/asyncio.py +1 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/decorators.py +7 -4
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_emscripten.py +0 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/io.py +2 -0
- {ipython-8.25.0/ipython.egg-info → ipython-8.26.0}/PKG-INFO +2 -1
- {ipython-8.25.0 → ipython-8.26.0}/README.rst +0 -52
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version8.rst +22 -0
- {ipython-8.25.0 → ipython-8.26.0/ipython.egg-info}/PKG-INFO +2 -1
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/SOURCES.txt +2 -0
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/requires.txt +1 -0
- {ipython-8.25.0 → ipython-8.26.0}/pyproject.toml +7 -0
- {ipython-8.25.0 → ipython-8.26.0}/.flake8 +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/.mailmap +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/COPYING.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/__main__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/conftest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/consoleapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/alias.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/application.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/autocall.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/completer.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/debugger.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/error.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/events.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/excolors.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/extensions.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/formatters.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/getipython.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/history.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/hooks.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/logger.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/macro.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/page.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/payload.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/prompts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/core/usage.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/external/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/demo.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/paths.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/py.typed +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/console.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tools.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/tests/cve.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/capture.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/data.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/docs.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/frame.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/generics.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/log.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/path.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/process.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/text.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/timing.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tz.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/version.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/LICENSE +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/MANIFEST.in +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/_build_meta.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/Makefile +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/README.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_api.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_config.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_magics.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/make.cmd +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/man/ipython.1 +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/requirements.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/history.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/api/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/conf.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/details.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/config.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/install.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/links.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/overview.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/Index.ipynb +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/animation.m4v +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/long_description.rst +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/scripts/ipython.ico +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/setup.cfg +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/setup.py +0 -0
- {ipython-8.25.0 → ipython-8.26.0}/setupbase.py +0 -0
|
@@ -2033,7 +2033,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
2033
2033
|
print(self.InteractiveTB.stb2text(stb))
|
|
2034
2034
|
print("The original exception:")
|
|
2035
2035
|
stb = self.InteractiveTB.structured_traceback(
|
|
2036
|
-
|
|
2036
|
+
etype, value, tb, tb_offset=tb_offset
|
|
2037
2037
|
)
|
|
2038
2038
|
return stb
|
|
2039
2039
|
|
|
@@ -5,6 +5,7 @@ directory, which we are removing. For now putting this here ensures at least
|
|
|
5
5
|
we do run the test, though ultimately this functionality should all be tested
|
|
6
6
|
with better-isolated tests that don't rely on the global instance in iptest.
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
from IPython.core.splitinput import LineInfo
|
|
9
10
|
from IPython.core.prefilter import AutocallChecker
|
|
10
11
|
|
|
@@ -10,6 +10,9 @@ import sys
|
|
|
10
10
|
import textwrap
|
|
11
11
|
import unittest
|
|
12
12
|
|
|
13
|
+
from importlib.metadata import version
|
|
14
|
+
|
|
15
|
+
|
|
13
16
|
from contextlib import contextmanager
|
|
14
17
|
|
|
15
18
|
from traitlets.config.loader import Config
|
|
@@ -30,6 +33,9 @@ from IPython.core.completer import (
|
|
|
30
33
|
CompletionContext,
|
|
31
34
|
)
|
|
32
35
|
|
|
36
|
+
from packaging.version import parse
|
|
37
|
+
|
|
38
|
+
|
|
33
39
|
# -----------------------------------------------------------------------------
|
|
34
40
|
# Test functions
|
|
35
41
|
# -----------------------------------------------------------------------------
|
|
@@ -531,7 +537,11 @@ class TestCompleter(unittest.TestCase):
|
|
|
531
537
|
c = next(completions) # should be `%time` or similar
|
|
532
538
|
assert c.type == "magic", "Type of magic was not assigned by completer"
|
|
533
539
|
|
|
534
|
-
@pytest.mark.xfail(
|
|
540
|
+
@pytest.mark.xfail(
|
|
541
|
+
parse(version("jedi")) <= parse("0.18.0"),
|
|
542
|
+
reason="Known failure on jedi<=0.18.0",
|
|
543
|
+
strict=True,
|
|
544
|
+
)
|
|
535
545
|
def test_deduplicate_completions(self):
|
|
536
546
|
"""
|
|
537
547
|
Test that completions are correctly deduplicated (even if ranges are not the same)
|
|
@@ -447,6 +447,11 @@ def test_decorator_skip_disabled():
|
|
|
447
447
|
child.close()
|
|
448
448
|
|
|
449
449
|
|
|
450
|
+
@pytest.mark.xfail(
|
|
451
|
+
sys.version_info.releaselevel not in ("final", "candidate"),
|
|
452
|
+
reason="fails on 3.13.dev",
|
|
453
|
+
strict=True,
|
|
454
|
+
)
|
|
450
455
|
@pytest.mark.skipif(platform.python_implementation() == "PyPy", reason="issues on PyPy")
|
|
451
456
|
@skip_win32
|
|
452
457
|
def test_decorator_skip_with_breakpoint():
|
|
@@ -103,7 +103,7 @@ def test_bad_precision():
|
|
|
103
103
|
|
|
104
104
|
def test_for_type():
|
|
105
105
|
f = PlainTextFormatter()
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
# initial return, None
|
|
108
108
|
assert f.for_type(C, foo_printer) is None
|
|
109
109
|
# no func queries
|
|
@@ -116,9 +116,9 @@ def test_for_type():
|
|
|
116
116
|
|
|
117
117
|
def test_for_type_string():
|
|
118
118
|
f = PlainTextFormatter()
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
type_str = '%s.%s' % (C.__module__, 'C')
|
|
121
|
-
|
|
121
|
+
|
|
122
122
|
# initial return, None
|
|
123
123
|
assert f.for_type(type_str, foo_printer) is None
|
|
124
124
|
# no func queries
|
|
@@ -130,9 +130,9 @@ def test_for_type_string():
|
|
|
130
130
|
|
|
131
131
|
def test_for_type_by_name():
|
|
132
132
|
f = PlainTextFormatter()
|
|
133
|
-
|
|
133
|
+
|
|
134
134
|
mod = C.__module__
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
# initial return, None
|
|
137
137
|
assert f.for_type_by_name(mod, "C", foo_printer) is None
|
|
138
138
|
# no func queries
|
|
@@ -146,7 +146,7 @@ def test_for_type_by_name():
|
|
|
146
146
|
|
|
147
147
|
def test_lookup():
|
|
148
148
|
f = PlainTextFormatter()
|
|
149
|
-
|
|
149
|
+
|
|
150
150
|
f.for_type(C, foo_printer)
|
|
151
151
|
assert f.lookup(C()) is foo_printer
|
|
152
152
|
with pytest.raises(KeyError):
|
|
@@ -155,7 +155,7 @@ def test_lookup():
|
|
|
155
155
|
def test_lookup_string():
|
|
156
156
|
f = PlainTextFormatter()
|
|
157
157
|
type_str = '%s.%s' % (C.__module__, 'C')
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
f.for_type(type_str, foo_printer)
|
|
160
160
|
assert f.lookup(C()) is foo_printer
|
|
161
161
|
# should move from deferred to imported dict
|
|
@@ -173,16 +173,16 @@ def test_lookup_by_type_string():
|
|
|
173
173
|
f = PlainTextFormatter()
|
|
174
174
|
type_str = '%s.%s' % (C.__module__, 'C')
|
|
175
175
|
f.for_type(type_str, foo_printer)
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
# verify insertion
|
|
178
178
|
assert _mod_name_key(C) in f.deferred_printers
|
|
179
179
|
assert C not in f.type_printers
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
assert f.lookup_by_type(type_str) is foo_printer
|
|
182
182
|
# lookup by string doesn't cause import
|
|
183
183
|
assert _mod_name_key(C) in f.deferred_printers
|
|
184
184
|
assert C not in f.type_printers
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
assert f.lookup_by_type(C) is foo_printer
|
|
187
187
|
# should move from deferred to imported dict
|
|
188
188
|
assert _mod_name_key(C) not in f.deferred_printers
|
|
@@ -220,10 +220,10 @@ def test_pop():
|
|
|
220
220
|
def test_pop_string():
|
|
221
221
|
f = PlainTextFormatter()
|
|
222
222
|
type_str = '%s.%s' % (C.__module__, 'C')
|
|
223
|
-
|
|
223
|
+
|
|
224
224
|
with pytest.raises(KeyError):
|
|
225
225
|
f.pop(type_str)
|
|
226
|
-
|
|
226
|
+
|
|
227
227
|
f.for_type(type_str, foo_printer)
|
|
228
228
|
f.pop(type_str)
|
|
229
229
|
with pytest.raises(KeyError):
|
|
@@ -238,7 +238,7 @@ def test_pop_string():
|
|
|
238
238
|
with pytest.raises(KeyError):
|
|
239
239
|
f.pop(type_str)
|
|
240
240
|
assert f.pop(type_str, None) is None
|
|
241
|
-
|
|
241
|
+
|
|
242
242
|
|
|
243
243
|
def test_error_method():
|
|
244
244
|
f = HTMLFormatter()
|
|
@@ -341,14 +341,14 @@ def test_print_method_weird():
|
|
|
341
341
|
assert text_hat._repr_html_ == "_repr_html_"
|
|
342
342
|
with capture_output() as captured:
|
|
343
343
|
result = f(text_hat)
|
|
344
|
-
|
|
344
|
+
|
|
345
345
|
assert result is None
|
|
346
346
|
assert "FormatterWarning" not in captured.stderr
|
|
347
347
|
|
|
348
348
|
class CallableMagicHat(object):
|
|
349
349
|
def __getattr__(self, key):
|
|
350
350
|
return lambda : key
|
|
351
|
-
|
|
351
|
+
|
|
352
352
|
call_hat = CallableMagicHat()
|
|
353
353
|
with capture_output() as captured:
|
|
354
354
|
result = f(call_hat)
|
|
@@ -358,11 +358,11 @@ def test_print_method_weird():
|
|
|
358
358
|
class BadReprArgs(object):
|
|
359
359
|
def _repr_html_(self, extra, args):
|
|
360
360
|
return "html"
|
|
361
|
-
|
|
361
|
+
|
|
362
362
|
bad = BadReprArgs()
|
|
363
363
|
with capture_output() as captured:
|
|
364
364
|
result = f(bad)
|
|
365
|
-
|
|
365
|
+
|
|
366
366
|
assert result is None
|
|
367
367
|
assert "FormatterWarning" not in captured.stderr
|
|
368
368
|
|
|
@@ -406,13 +406,13 @@ def test_ipython_display_formatter():
|
|
|
406
406
|
class NotSelfDisplaying(object):
|
|
407
407
|
def __repr__(self):
|
|
408
408
|
return "NotSelfDisplaying"
|
|
409
|
-
|
|
409
|
+
|
|
410
410
|
def _ipython_display_(self):
|
|
411
411
|
raise NotImplementedError
|
|
412
|
-
|
|
412
|
+
|
|
413
413
|
save_enabled = f.ipython_display_formatter.enabled
|
|
414
414
|
f.ipython_display_formatter.enabled = True
|
|
415
|
-
|
|
415
|
+
|
|
416
416
|
yes = SelfDisplaying()
|
|
417
417
|
no = NotSelfDisplaying()
|
|
418
418
|
|
|
@@ -444,7 +444,7 @@ def test_repr_mime():
|
|
|
444
444
|
return 'should-be-overwritten'
|
|
445
445
|
def _repr_html_(self):
|
|
446
446
|
return '<b>hi!</b>'
|
|
447
|
-
|
|
447
|
+
|
|
448
448
|
f = get_ipython().display_formatter
|
|
449
449
|
html_f = f.formatters['text/html']
|
|
450
450
|
save_enabled = html_f.enabled
|
|
@@ -507,7 +507,7 @@ def test_repr_mime_meta():
|
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
509
|
return (data, metadata)
|
|
510
|
-
|
|
510
|
+
|
|
511
511
|
f = get_ipython().display_formatter
|
|
512
512
|
obj = HasReprMimeMeta()
|
|
513
513
|
d, md = f.format(obj)
|
|
@@ -529,3 +529,18 @@ def test_repr_mime_failure():
|
|
|
529
529
|
obj = BadReprMime()
|
|
530
530
|
d, md = f.format(obj)
|
|
531
531
|
assert "text/plain" in d
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
def test_custom_repr_namedtuple_partialmethod():
|
|
535
|
+
from functools import partialmethod
|
|
536
|
+
from typing import NamedTuple
|
|
537
|
+
|
|
538
|
+
class Foo(NamedTuple):
|
|
539
|
+
...
|
|
540
|
+
|
|
541
|
+
Foo.__repr__ = partialmethod(lambda obj: "Hello World")
|
|
542
|
+
foo = Foo()
|
|
543
|
+
|
|
544
|
+
f = PlainTextFormatter()
|
|
545
|
+
assert f.pprint
|
|
546
|
+
assert f(foo) == "Hello World"
|
|
@@ -27,7 +27,11 @@ from IPython.core.inputtransformer import InputTransformer
|
|
|
27
27
|
from IPython.core import interactiveshell
|
|
28
28
|
from IPython.core.oinspect import OInfo
|
|
29
29
|
from IPython.testing.decorators import (
|
|
30
|
-
skipif,
|
|
30
|
+
skipif,
|
|
31
|
+
skip_win32,
|
|
32
|
+
onlyif_unicode_paths,
|
|
33
|
+
onlyif_cmds_exist,
|
|
34
|
+
skip_if_not_osx,
|
|
31
35
|
)
|
|
32
36
|
from IPython.testing import tools as tt
|
|
33
37
|
from IPython.utils.process import find_cmd
|
|
@@ -124,16 +128,16 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
124
128
|
newlen = len(ip.user_ns['In'])
|
|
125
129
|
self.assertEqual(oldlen+1, newlen)
|
|
126
130
|
self.assertEqual(ip.user_ns['In'][-1],'1;')
|
|
127
|
-
|
|
131
|
+
|
|
128
132
|
def test_magic_names_in_string(self):
|
|
129
133
|
ip.run_cell('a = """\n%exit\n"""')
|
|
130
134
|
self.assertEqual(ip.user_ns['a'], '\n%exit\n')
|
|
131
|
-
|
|
135
|
+
|
|
132
136
|
def test_trailing_newline(self):
|
|
133
137
|
"""test that running !(command) does not raise a SyntaxError"""
|
|
134
138
|
ip.run_cell('!(true)\n', False)
|
|
135
139
|
ip.run_cell('!(true)\n\n\n', False)
|
|
136
|
-
|
|
140
|
+
|
|
137
141
|
def test_gh_597(self):
|
|
138
142
|
"""Pretty-printing lists of objects with non-ascii reprs may cause
|
|
139
143
|
problems."""
|
|
@@ -142,8 +146,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
142
146
|
return "\xe9"*50
|
|
143
147
|
import IPython.core.formatters
|
|
144
148
|
f = IPython.core.formatters.PlainTextFormatter()
|
|
145
|
-
f([Spam(),Spam()])
|
|
146
|
-
|
|
149
|
+
f([Spam(), Spam()])
|
|
147
150
|
|
|
148
151
|
def test_future_flags(self):
|
|
149
152
|
"""Check that future flags are used for parsing code (gh-777)"""
|
|
@@ -163,9 +166,9 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
163
166
|
" def __init__(self,x=[]):\n"
|
|
164
167
|
" list.__init__(self,x)"))
|
|
165
168
|
ip.run_cell("w=Mylist([1,2,3])")
|
|
166
|
-
|
|
169
|
+
|
|
167
170
|
from pickle import dumps
|
|
168
|
-
|
|
171
|
+
|
|
169
172
|
# We need to swap in our main module - this is only necessary
|
|
170
173
|
# inside the test framework, because IPython puts the interactive module
|
|
171
174
|
# in place (but the test framework undoes this).
|
|
@@ -176,7 +179,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
176
179
|
finally:
|
|
177
180
|
sys.modules['__main__'] = _main
|
|
178
181
|
self.assertTrue(isinstance(res, bytes))
|
|
179
|
-
|
|
182
|
+
|
|
180
183
|
def test_global_ns(self):
|
|
181
184
|
"Code in functions must be able to access variables outside them."
|
|
182
185
|
ip = get_ipython()
|
|
@@ -222,13 +225,13 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
222
225
|
self.assertEqual(ip.var_expand(u'echo {f}'), u'echo Ca\xf1o')
|
|
223
226
|
self.assertEqual(ip.var_expand(u'echo {f[:-1]}'), u'echo Ca\xf1')
|
|
224
227
|
self.assertEqual(ip.var_expand(u'echo {1*2}'), u'echo 2')
|
|
225
|
-
|
|
228
|
+
|
|
226
229
|
self.assertEqual(ip.var_expand(u"grep x | awk '{print $1}'"), u"grep x | awk '{print $1}'")
|
|
227
230
|
|
|
228
231
|
ip.user_ns['f'] = b'Ca\xc3\xb1o'
|
|
229
232
|
# This should not raise any exception:
|
|
230
233
|
ip.var_expand(u'echo $f')
|
|
231
|
-
|
|
234
|
+
|
|
232
235
|
def test_var_expand_local(self):
|
|
233
236
|
"""Test local variable expansion in !system and %magic calls"""
|
|
234
237
|
# !system
|
|
@@ -253,7 +256,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
253
256
|
|
|
254
257
|
def test_var_expand_self(self):
|
|
255
258
|
"""Test variable expansion with the name 'self', which was failing.
|
|
256
|
-
|
|
259
|
+
|
|
257
260
|
See https://github.com/ipython/ipython/issues/1878#issuecomment-7698218
|
|
258
261
|
"""
|
|
259
262
|
ip.run_cell(
|
|
@@ -273,7 +276,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
273
276
|
self.assertEqual(ip.var_expand(u"{asdf}"), u"{asdf}")
|
|
274
277
|
# ZeroDivisionError
|
|
275
278
|
self.assertEqual(ip.var_expand(u"{1/0}"), u"{1/0}")
|
|
276
|
-
|
|
279
|
+
|
|
277
280
|
def test_silent_postexec(self):
|
|
278
281
|
"""run_cell(silent=True) doesn't invoke pre/post_run_cell callbacks"""
|
|
279
282
|
pre_explicit = mock.Mock()
|
|
@@ -281,12 +284,12 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
281
284
|
post_explicit = mock.Mock()
|
|
282
285
|
post_always = mock.Mock()
|
|
283
286
|
all_mocks = [pre_explicit, pre_always, post_explicit, post_always]
|
|
284
|
-
|
|
287
|
+
|
|
285
288
|
ip.events.register('pre_run_cell', pre_explicit)
|
|
286
289
|
ip.events.register('pre_execute', pre_always)
|
|
287
290
|
ip.events.register('post_run_cell', post_explicit)
|
|
288
291
|
ip.events.register('post_execute', post_always)
|
|
289
|
-
|
|
292
|
+
|
|
290
293
|
try:
|
|
291
294
|
ip.run_cell("1", silent=True)
|
|
292
295
|
assert pre_always.called
|
|
@@ -317,29 +320,29 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
317
320
|
ip.events.unregister('pre_execute', pre_always)
|
|
318
321
|
ip.events.unregister('post_run_cell', post_explicit)
|
|
319
322
|
ip.events.unregister('post_execute', post_always)
|
|
320
|
-
|
|
323
|
+
|
|
321
324
|
def test_silent_noadvance(self):
|
|
322
325
|
"""run_cell(silent=True) doesn't advance execution_count"""
|
|
323
326
|
ec = ip.execution_count
|
|
324
327
|
# silent should force store_history=False
|
|
325
328
|
ip.run_cell("1", store_history=True, silent=True)
|
|
326
|
-
|
|
329
|
+
|
|
327
330
|
self.assertEqual(ec, ip.execution_count)
|
|
328
331
|
# double-check that non-silent exec did what we expected
|
|
329
332
|
# silent to avoid
|
|
330
333
|
ip.run_cell("1", store_history=True)
|
|
331
334
|
self.assertEqual(ec+1, ip.execution_count)
|
|
332
|
-
|
|
335
|
+
|
|
333
336
|
def test_silent_nodisplayhook(self):
|
|
334
337
|
"""run_cell(silent=True) doesn't trigger displayhook"""
|
|
335
338
|
d = dict(called=False)
|
|
336
|
-
|
|
339
|
+
|
|
337
340
|
trap = ip.display_trap
|
|
338
341
|
save_hook = trap.hook
|
|
339
|
-
|
|
342
|
+
|
|
340
343
|
def failing_hook(*args, **kwargs):
|
|
341
344
|
d['called'] = True
|
|
342
|
-
|
|
345
|
+
|
|
343
346
|
try:
|
|
344
347
|
trap.hook = failing_hook
|
|
345
348
|
res = ip.run_cell("1", silent=True)
|
|
@@ -354,7 +357,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
354
357
|
|
|
355
358
|
def test_ofind_line_magic(self):
|
|
356
359
|
from IPython.core.magic import register_line_magic
|
|
357
|
-
|
|
360
|
+
|
|
358
361
|
@register_line_magic
|
|
359
362
|
def lmagic(line):
|
|
360
363
|
"A line magic"
|
|
@@ -370,10 +373,10 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
370
373
|
parent=None,
|
|
371
374
|
)
|
|
372
375
|
self.assertEqual(lfind, info)
|
|
373
|
-
|
|
376
|
+
|
|
374
377
|
def test_ofind_cell_magic(self):
|
|
375
378
|
from IPython.core.magic import register_cell_magic
|
|
376
|
-
|
|
379
|
+
|
|
377
380
|
@register_cell_magic
|
|
378
381
|
def cmagic(line, cell):
|
|
379
382
|
"A cell magic"
|
|
@@ -490,7 +493,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
490
493
|
def my_handler(shell, etype, value, tb, tb_offset=None):
|
|
491
494
|
called.append(etype)
|
|
492
495
|
shell.showtraceback((etype, value, tb), tb_offset=tb_offset)
|
|
493
|
-
|
|
496
|
+
|
|
494
497
|
ip.set_custom_exc((ValueError,), my_handler)
|
|
495
498
|
try:
|
|
496
499
|
res = ip.run_cell("raise ValueError('test')")
|
|
@@ -501,7 +504,7 @@ class InteractiveShellTestCase(unittest.TestCase):
|
|
|
501
504
|
finally:
|
|
502
505
|
# Reset the custom exception hook
|
|
503
506
|
ip.set_custom_exc((), None)
|
|
504
|
-
|
|
507
|
+
|
|
505
508
|
@mock.patch("builtins.print")
|
|
506
509
|
def test_showtraceback_with_surrogates(self, mocked_print):
|
|
507
510
|
values = []
|
|
@@ -618,7 +621,7 @@ class ExitCodeChecks(tt.TempFileMixin):
|
|
|
618
621
|
def test_exit_code_error(self):
|
|
619
622
|
self.system('exit 1')
|
|
620
623
|
self.assertEqual(ip.user_ns['_exit_code'], 1)
|
|
621
|
-
|
|
624
|
+
|
|
622
625
|
@skipif(not hasattr(signal, 'SIGALRM'))
|
|
623
626
|
def test_exit_code_signal(self):
|
|
624
627
|
self.mktmp("import signal, time\n"
|
|
@@ -626,7 +629,7 @@ class ExitCodeChecks(tt.TempFileMixin):
|
|
|
626
629
|
"time.sleep(1)\n")
|
|
627
630
|
self.system("%s %s" % (sys.executable, self.fname))
|
|
628
631
|
self.assertEqual(ip.user_ns['_exit_code'], -signal.SIGALRM)
|
|
629
|
-
|
|
632
|
+
|
|
630
633
|
@onlyif_cmds_exist("csh")
|
|
631
634
|
def test_exit_code_signal_csh(self): # pragma: no cover
|
|
632
635
|
SHELL = os.environ.get("SHELL", None)
|
|
@@ -730,7 +733,7 @@ class TestAstTransform(unittest.TestCase):
|
|
|
730
733
|
def setUp(self):
|
|
731
734
|
self.negator = Negator()
|
|
732
735
|
ip.ast_transformers.append(self.negator)
|
|
733
|
-
|
|
736
|
+
|
|
734
737
|
def tearDown(self):
|
|
735
738
|
ip.ast_transformers.remove(self.negator)
|
|
736
739
|
|
|
@@ -752,7 +755,7 @@ class TestAstTransform(unittest.TestCase):
|
|
|
752
755
|
def f(x):
|
|
753
756
|
called.add(x)
|
|
754
757
|
ip.push({'f':f})
|
|
755
|
-
|
|
758
|
+
|
|
756
759
|
with tt.AssertPrints("std. dev. of"):
|
|
757
760
|
ip.run_line_magic("timeit", "-n1 f(1)")
|
|
758
761
|
self.assertEqual(called, {-1})
|
|
@@ -761,29 +764,29 @@ class TestAstTransform(unittest.TestCase):
|
|
|
761
764
|
with tt.AssertPrints("std. dev. of"):
|
|
762
765
|
ip.run_cell_magic("timeit", "-n1 f(2)", "f(3)")
|
|
763
766
|
self.assertEqual(called, {-2, -3})
|
|
764
|
-
|
|
767
|
+
|
|
765
768
|
def test_time(self):
|
|
766
769
|
called = []
|
|
767
770
|
def f(x):
|
|
768
771
|
called.append(x)
|
|
769
772
|
ip.push({'f':f})
|
|
770
|
-
|
|
773
|
+
|
|
771
774
|
# Test with an expression
|
|
772
775
|
with tt.AssertPrints("Wall time: "):
|
|
773
776
|
ip.run_line_magic("time", "f(5+9)")
|
|
774
777
|
self.assertEqual(called, [-14])
|
|
775
778
|
called[:] = []
|
|
776
|
-
|
|
779
|
+
|
|
777
780
|
# Test with a statement (different code path)
|
|
778
781
|
with tt.AssertPrints("Wall time: "):
|
|
779
782
|
ip.run_line_magic("time", "a = f(-3 + -2)")
|
|
780
783
|
self.assertEqual(called, [5])
|
|
781
|
-
|
|
784
|
+
|
|
782
785
|
def test_macro(self):
|
|
783
786
|
ip.push({'a':10})
|
|
784
787
|
# The AST transformation makes this do a+=-1
|
|
785
788
|
ip.define_macro("amacro", "a+=1\nprint(a)")
|
|
786
|
-
|
|
789
|
+
|
|
787
790
|
with tt.AssertPrints("9"):
|
|
788
791
|
ip.run_cell("amacro")
|
|
789
792
|
with tt.AssertPrints("8"):
|
|
@@ -836,21 +839,21 @@ class TestAstTransform2(unittest.TestCase):
|
|
|
836
839
|
def setUp(self):
|
|
837
840
|
self.intwrapper = IntegerWrapper()
|
|
838
841
|
ip.ast_transformers.append(self.intwrapper)
|
|
839
|
-
|
|
842
|
+
|
|
840
843
|
self.calls = []
|
|
841
844
|
def Integer(*args):
|
|
842
845
|
self.calls.append(args)
|
|
843
846
|
return args
|
|
844
847
|
ip.push({"Integer": Integer})
|
|
845
|
-
|
|
848
|
+
|
|
846
849
|
def tearDown(self):
|
|
847
850
|
ip.ast_transformers.remove(self.intwrapper)
|
|
848
851
|
del ip.user_ns['Integer']
|
|
849
|
-
|
|
852
|
+
|
|
850
853
|
def test_run_cell(self):
|
|
851
854
|
ip.run_cell("n = 2")
|
|
852
855
|
self.assertEqual(self.calls, [(2,)])
|
|
853
|
-
|
|
856
|
+
|
|
854
857
|
# This shouldn't throw an error
|
|
855
858
|
ip.run_cell("o = 2.0")
|
|
856
859
|
self.assertEqual(ip.user_ns['o'], 2.0)
|
|
@@ -887,10 +890,10 @@ class TestAstTransformError(unittest.TestCase):
|
|
|
887
890
|
def test_unregistering(self):
|
|
888
891
|
err_transformer = ErrorTransformer()
|
|
889
892
|
ip.ast_transformers.append(err_transformer)
|
|
890
|
-
|
|
893
|
+
|
|
891
894
|
with self.assertWarnsRegex(UserWarning, "It will be unregistered"):
|
|
892
895
|
ip.run_cell("1 + 2")
|
|
893
|
-
|
|
896
|
+
|
|
894
897
|
# This should have been removed.
|
|
895
898
|
self.assertNotIn(err_transformer, ip.ast_transformers)
|
|
896
899
|
|
|
@@ -901,7 +904,7 @@ class StringRejector(ast.NodeTransformer):
|
|
|
901
904
|
Used to verify that NodeTransformers can signal that a piece of code should
|
|
902
905
|
not be executed by throwing an InputRejected.
|
|
903
906
|
"""
|
|
904
|
-
|
|
907
|
+
|
|
905
908
|
def visit_Constant(self, node):
|
|
906
909
|
if isinstance(node.value, str):
|
|
907
910
|
raise InputRejected("test")
|
|
@@ -941,18 +944,18 @@ def test__IPYTHON__():
|
|
|
941
944
|
class DummyRepr(object):
|
|
942
945
|
def __repr__(self):
|
|
943
946
|
return "DummyRepr"
|
|
944
|
-
|
|
947
|
+
|
|
945
948
|
def _repr_html_(self):
|
|
946
949
|
return "<b>dummy</b>"
|
|
947
|
-
|
|
950
|
+
|
|
948
951
|
def _repr_javascript_(self):
|
|
949
952
|
return "console.log('hi');", {'key': 'value'}
|
|
950
|
-
|
|
953
|
+
|
|
951
954
|
|
|
952
955
|
def test_user_variables():
|
|
953
956
|
# enable all formatters
|
|
954
957
|
ip.display_formatter.active_types = ip.display_formatter.format_types
|
|
955
|
-
|
|
958
|
+
|
|
956
959
|
ip.user_ns['dummy'] = d = DummyRepr()
|
|
957
960
|
keys = {'dummy', 'doesnotexist'}
|
|
958
961
|
r = ip.user_expressions({ key:key for key in keys})
|
|
@@ -974,7 +977,7 @@ def test_user_variables():
|
|
|
974
977
|
|
|
975
978
|
# back to text only
|
|
976
979
|
ip.display_formatter.active_types = ['text/plain']
|
|
977
|
-
|
|
980
|
+
|
|
978
981
|
def test_user_expression():
|
|
979
982
|
# enable all formatters
|
|
980
983
|
ip.display_formatter.active_types = ip.display_formatter.format_types
|
|
@@ -1199,3 +1202,20 @@ class TestShowTracebackAttack(unittest.TestCase):
|
|
|
1199
1202
|
assert result.result is None
|
|
1200
1203
|
assert isinstance(result.error_in_exec, AssertionError)
|
|
1201
1204
|
assert str(result.error_in_exec) == "This should not raise an exception"
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
@skip_if_not_osx
|
|
1208
|
+
def test_enable_gui_osx():
|
|
1209
|
+
simple_prompt = ip.simple_prompt
|
|
1210
|
+
ip.simple_prompt = False
|
|
1211
|
+
|
|
1212
|
+
ip.enable_gui("osx")
|
|
1213
|
+
assert ip.active_eventloop == "osx"
|
|
1214
|
+
ip.enable_gui()
|
|
1215
|
+
|
|
1216
|
+
# The following line fails for IPython <= 8.25.0
|
|
1217
|
+
ip.enable_gui("macosx")
|
|
1218
|
+
assert ip.active_eventloop == "osx"
|
|
1219
|
+
ip.enable_gui()
|
|
1220
|
+
|
|
1221
|
+
ip.simple_prompt = simple_prompt
|
|
@@ -488,7 +488,12 @@ def test_pinfo_docstring_if_detail_and_no_source():
|
|
|
488
488
|
ip._inspect('pinfo', 'foo.bar', detail_level=1)
|
|
489
489
|
|
|
490
490
|
|
|
491
|
-
|
|
491
|
+
@pytest.mark.xfail(
|
|
492
|
+
sys.version_info.releaselevel not in ("final", "candidate"),
|
|
493
|
+
reason="fails on 3.13.dev",
|
|
494
|
+
strict=True,
|
|
495
|
+
)
|
|
496
|
+
def test_pinfo_docstring_dynamic(capsys):
|
|
492
497
|
obj_def = """class Bar:
|
|
493
498
|
__custom_documentations__ = {
|
|
494
499
|
"prop" : "cdoc for prop",
|
|
@@ -509,20 +514,25 @@ def test_pinfo_docstring_dynamic():
|
|
|
509
514
|
|
|
510
515
|
ip.run_cell("b = Bar()")
|
|
511
516
|
|
|
512
|
-
|
|
513
|
-
|
|
517
|
+
ip.run_line_magic("pinfo", "b.prop")
|
|
518
|
+
captured = capsys.readouterr()
|
|
519
|
+
assert "Docstring: cdoc for prop" in captured.out
|
|
514
520
|
|
|
515
|
-
|
|
516
|
-
|
|
521
|
+
ip.run_line_magic("pinfo", "b.non_exist")
|
|
522
|
+
captured = capsys.readouterr()
|
|
523
|
+
assert "Docstring: cdoc for non_exist" in captured.out
|
|
517
524
|
|
|
518
|
-
|
|
519
|
-
|
|
525
|
+
ip.run_cell("b.prop?")
|
|
526
|
+
captured = capsys.readouterr()
|
|
527
|
+
assert "Docstring: cdoc for prop" in captured.out
|
|
520
528
|
|
|
521
|
-
|
|
522
|
-
|
|
529
|
+
ip.run_cell("b.non_exist?")
|
|
530
|
+
captured = capsys.readouterr()
|
|
531
|
+
assert "Docstring: cdoc for non_exist" in captured.out
|
|
523
532
|
|
|
524
|
-
|
|
525
|
-
|
|
533
|
+
ip.run_cell("b.undefined?")
|
|
534
|
+
captured = capsys.readouterr()
|
|
535
|
+
assert "Docstring: <no docstring>" in captured.out
|
|
526
536
|
|
|
527
537
|
|
|
528
538
|
def test_pinfo_magic():
|