ipython 8.27.0__tar.gz → 8.28.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.27.0 → ipython-8.28.0}/IPython/core/debugger.py +27 -4
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display.py +5 -1
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/packaging.py +15 -2
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/release.py +1 -1
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/ultratb.py +4 -4
- {ipython-8.27.0 → ipython-8.28.0}/IPython/external/qt_loaders.py +14 -2
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/terminal.py +7 -1
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_path.py +85 -88
- {ipython-8.27.0/ipython.egg-info → ipython-8.28.0}/PKG-INFO +1 -1
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version8.rst +56 -8
- {ipython-8.27.0 → ipython-8.28.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-8.27.0 → ipython-8.28.0}/.flake8 +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/.mailmap +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/COPYING.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/__main__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/conftest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/consoleapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/alias.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/application.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/autocall.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/completer.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/error.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/events.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/excolors.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/extensions.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/formatters.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/getipython.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/history.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/hooks.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/interactiveshell.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/logger.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/macro.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/page.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/payload.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/prompts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_completer.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_interactiveshell.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/core/usage.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/display.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/external/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/demo.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/display.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/paths.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/py.typed +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/console.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/interactiveshell.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tools.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/tests/cve.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/capture.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/data.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/docs.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/frame.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/generics.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/io.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/log.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/path.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/process.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/text.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/timing.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tz.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/version.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/LICENSE +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/MANIFEST.in +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/README.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/_build_meta.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/Makefile +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/README.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_api.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_config.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_magics.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/make.cmd +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/man/ipython.1 +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/requirements.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/history.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/api/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/conf.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/details.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/config.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/install.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/links.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/overview.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/Index.ipynb +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/animation.m4v +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/SOURCES.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/long_description.rst +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/pyproject.toml +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/scripts/ipython.ico +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/setup.cfg +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/setup.py +0 -0
- {ipython-8.27.0 → ipython-8.28.0}/setupbase.py +0 -0
|
@@ -14,14 +14,35 @@ Among other things, this subclass of PDB:
|
|
|
14
14
|
- hide frames in tracebacks based on `__tracebackhide__`
|
|
15
15
|
- allows to skip frames based on `__debuggerskip__`
|
|
16
16
|
|
|
17
|
+
|
|
18
|
+
Global Configuration
|
|
19
|
+
--------------------
|
|
20
|
+
|
|
21
|
+
The IPython debugger will by read the global ``~/.pdbrc`` file.
|
|
22
|
+
That is to say you can list all comands supported by ipdb in your `~/.pdbrc`
|
|
23
|
+
configuration file, to globally configure pdb.
|
|
24
|
+
|
|
25
|
+
Example::
|
|
26
|
+
|
|
27
|
+
# ~/.pdbrc
|
|
28
|
+
skip_predicates debuggerskip false
|
|
29
|
+
skip_hidden false
|
|
30
|
+
context 25
|
|
31
|
+
|
|
32
|
+
Features
|
|
33
|
+
--------
|
|
34
|
+
|
|
35
|
+
The IPython debugger can hide and skip frames when printing or moving through
|
|
36
|
+
the stack. This can have a performance impact, so can be configures.
|
|
37
|
+
|
|
17
38
|
The skipping and hiding frames are configurable via the `skip_predicates`
|
|
18
39
|
command.
|
|
19
40
|
|
|
20
41
|
By default, frames from readonly files will be hidden, frames containing
|
|
21
|
-
``__tracebackhide__=True`` will be hidden.
|
|
42
|
+
``__tracebackhide__ = True`` will be hidden.
|
|
22
43
|
|
|
23
|
-
Frames containing ``__debuggerskip__`` will be stepped over, frames
|
|
24
|
-
frames value of ``__debuggerskip__`` is ``True`` will be skipped.
|
|
44
|
+
Frames containing ``__debuggerskip__`` will be stepped over, frames whose parent
|
|
45
|
+
frames value of ``__debuggerskip__`` is ``True`` will also be skipped.
|
|
25
46
|
|
|
26
47
|
>>> def helpers_helper():
|
|
27
48
|
... pass
|
|
@@ -1070,7 +1091,9 @@ class Pdb(OldPdb):
|
|
|
1070
1091
|
raise ValueError()
|
|
1071
1092
|
self.context = new_context
|
|
1072
1093
|
except ValueError:
|
|
1073
|
-
self.error(
|
|
1094
|
+
self.error(
|
|
1095
|
+
f"The 'context' command requires a positive integer argument (current value {self.context})."
|
|
1096
|
+
)
|
|
1074
1097
|
|
|
1075
1098
|
|
|
1076
1099
|
class InterruptiblePdb(Pdb):
|
|
@@ -41,7 +41,11 @@ from warnings import warn
|
|
|
41
41
|
|
|
42
42
|
def __getattr__(name):
|
|
43
43
|
if name in _deprecated_names:
|
|
44
|
-
warn(
|
|
44
|
+
warn(
|
|
45
|
+
f"Importing {name} from IPython.core.display is deprecated since IPython 7.14, please import from IPython.display",
|
|
46
|
+
DeprecationWarning,
|
|
47
|
+
stacklevel=2,
|
|
48
|
+
)
|
|
45
49
|
return getattr(display_functions, name)
|
|
46
50
|
|
|
47
51
|
if name in globals().keys():
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#-----------------------------------------------------------------------------
|
|
10
10
|
|
|
11
11
|
import functools
|
|
12
|
+
import os
|
|
12
13
|
import re
|
|
13
14
|
import shlex
|
|
14
15
|
import sys
|
|
@@ -41,6 +42,16 @@ def _get_conda_like_executable(command):
|
|
|
41
42
|
executable: string
|
|
42
43
|
Value should be: conda, mamba or micromamba
|
|
43
44
|
"""
|
|
45
|
+
# Check for a environment variable bound to the base executable, both conda and mamba
|
|
46
|
+
# set these when activating an environment.
|
|
47
|
+
base_executable = "CONDA_EXE"
|
|
48
|
+
if "mamba" in command.lower():
|
|
49
|
+
base_executable = "MAMBA_EXE"
|
|
50
|
+
if base_executable in os.environ:
|
|
51
|
+
executable = Path(os.environ[base_executable])
|
|
52
|
+
if executable.is_file():
|
|
53
|
+
return str(executable.resolve())
|
|
54
|
+
|
|
44
55
|
# Check if there is a conda executable in the same directory as the Python executable.
|
|
45
56
|
# This is the case within conda's root environment.
|
|
46
57
|
executable = Path(sys.executable).parent / command
|
|
@@ -48,10 +59,12 @@ def _get_conda_like_executable(command):
|
|
|
48
59
|
return str(executable)
|
|
49
60
|
|
|
50
61
|
# Otherwise, attempt to extract the executable from conda history.
|
|
51
|
-
# This applies in any conda environment.
|
|
62
|
+
# This applies in any conda environment. Parsing this way is error prone because
|
|
63
|
+
# different versions of conda and mamba include differing cmd values such as
|
|
64
|
+
# `conda`, `conda-script.py`, or `path/to/conda`, here use the raw command provided.
|
|
52
65
|
history = Path(sys.prefix, "conda-meta", "history").read_text(encoding="utf-8")
|
|
53
66
|
match = re.search(
|
|
54
|
-
rf"^#\s*cmd:\s*(?P<command>.*{
|
|
67
|
+
rf"^#\s*cmd:\s*(?P<command>.*{command})\s[create|install]",
|
|
55
68
|
history,
|
|
56
69
|
flags=re.MULTILINE,
|
|
57
70
|
)
|
|
@@ -830,8 +830,8 @@ class VerboseTB(TBTools):
|
|
|
830
830
|
traceback, to be used with alternate interpreters (because their own code
|
|
831
831
|
would appear in the traceback)."""
|
|
832
832
|
|
|
833
|
-
|
|
834
|
-
|
|
833
|
+
tb_highlight = "bg:ansiyellow"
|
|
834
|
+
tb_highlight_style = "default"
|
|
835
835
|
|
|
836
836
|
def __init__(
|
|
837
837
|
self,
|
|
@@ -1133,8 +1133,8 @@ class VerboseTB(TBTools):
|
|
|
1133
1133
|
after = context // 2
|
|
1134
1134
|
before = context - after
|
|
1135
1135
|
if self.has_colors:
|
|
1136
|
-
style = get_style_by_name(self.
|
|
1137
|
-
style = stack_data.style_with_executing_node(style, self.
|
|
1136
|
+
style = get_style_by_name(self.tb_highlight_style)
|
|
1137
|
+
style = stack_data.style_with_executing_node(style, self.tb_highlight)
|
|
1138
1138
|
formatter = Terminal256Formatter(style=style)
|
|
1139
1139
|
else:
|
|
1140
1140
|
formatter = None
|
|
@@ -302,13 +302,25 @@ def import_pyside6():
|
|
|
302
302
|
|
|
303
303
|
ImportErrors raised within this function are non-recoverable
|
|
304
304
|
"""
|
|
305
|
+
|
|
306
|
+
def get_attrs(module):
|
|
307
|
+
return {
|
|
308
|
+
name: getattr(module, name)
|
|
309
|
+
for name in dir(module)
|
|
310
|
+
if not name.startswith("_")
|
|
311
|
+
}
|
|
312
|
+
|
|
305
313
|
from PySide6 import QtGui, QtCore, QtSvg, QtWidgets, QtPrintSupport
|
|
306
314
|
|
|
307
315
|
# Join QtGui and QtWidgets for Qt4 compatibility.
|
|
308
316
|
QtGuiCompat = types.ModuleType("QtGuiCompat")
|
|
309
317
|
QtGuiCompat.__dict__.update(QtGui.__dict__)
|
|
310
|
-
|
|
311
|
-
|
|
318
|
+
if QtCore.__version_info__ < (6, 7):
|
|
319
|
+
QtGuiCompat.__dict__.update(QtWidgets.__dict__)
|
|
320
|
+
QtGuiCompat.__dict__.update(QtPrintSupport.__dict__)
|
|
321
|
+
else:
|
|
322
|
+
QtGuiCompat.__dict__.update(get_attrs(QtWidgets))
|
|
323
|
+
QtGuiCompat.__dict__.update(get_attrs(QtPrintSupport))
|
|
312
324
|
|
|
313
325
|
return QtCore, QtGuiCompat, QtSvg, QT_API_PYSIDE6
|
|
314
326
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# GENERATED BY setup.py
|
|
2
|
-
commit = "
|
|
2
|
+
commit = "a9c7369d7"
|
|
@@ -80,7 +80,13 @@ def _set_term_title_xterm(title):
|
|
|
80
80
|
def _restore_term_title_xterm():
|
|
81
81
|
# Make sure the restore has at least one accompanying set.
|
|
82
82
|
global _xterm_term_title_saved
|
|
83
|
-
|
|
83
|
+
if not _xterm_term_title_saved:
|
|
84
|
+
warnings.warn(
|
|
85
|
+
"Expecting xterm_term_title_saved to be True, but is not; will not restore terminal title.",
|
|
86
|
+
stacklevel=1,
|
|
87
|
+
)
|
|
88
|
+
return
|
|
89
|
+
|
|
84
90
|
sys.stdout.write('\033[23;0t')
|
|
85
91
|
_xterm_term_title_saved = False
|
|
86
92
|
|
|
@@ -75,20 +75,29 @@ def teardown_module():
|
|
|
75
75
|
shutil.rmtree(TMP_TEST_DIR)
|
|
76
76
|
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
and other things that we need to stub in some test functions.
|
|
82
|
-
This needs to be done on a function level and not module level because
|
|
83
|
-
each testfunction needs a pristine environment.
|
|
84
|
-
"""
|
|
78
|
+
# Build decorator that uses the setup_environment/setup_environment
|
|
79
|
+
@pytest.fixture
|
|
80
|
+
def environment():
|
|
85
81
|
global oldstuff, platformstuff
|
|
86
|
-
oldstuff = (
|
|
82
|
+
oldstuff = (
|
|
83
|
+
env.copy(),
|
|
84
|
+
os.name,
|
|
85
|
+
sys.platform,
|
|
86
|
+
path.get_home_dir,
|
|
87
|
+
IPython.__file__,
|
|
88
|
+
os.getcwd(),
|
|
89
|
+
)
|
|
87
90
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
yield
|
|
92
|
+
|
|
93
|
+
(
|
|
94
|
+
oldenv,
|
|
95
|
+
os.name,
|
|
96
|
+
sys.platform,
|
|
97
|
+
path.get_home_dir,
|
|
98
|
+
IPython.__file__,
|
|
99
|
+
old_wd,
|
|
100
|
+
) = oldstuff
|
|
92
101
|
os.chdir(old_wd)
|
|
93
102
|
reload(path)
|
|
94
103
|
|
|
@@ -96,16 +105,7 @@ def teardown_environment():
|
|
|
96
105
|
if key not in oldenv:
|
|
97
106
|
del env[key]
|
|
98
107
|
env.update(oldenv)
|
|
99
|
-
|
|
100
|
-
del sys.frozen
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
# Build decorator that uses the setup_environment/setup_environment
|
|
104
|
-
@pytest.fixture
|
|
105
|
-
def environment():
|
|
106
|
-
setup_environment()
|
|
107
|
-
yield
|
|
108
|
-
teardown_environment()
|
|
108
|
+
assert not hasattr(sys, "frozen")
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
with_environment = pytest.mark.usefixtures("environment")
|
|
@@ -113,11 +113,11 @@ with_environment = pytest.mark.usefixtures("environment")
|
|
|
113
113
|
|
|
114
114
|
@skip_if_not_win32
|
|
115
115
|
@with_environment
|
|
116
|
-
def test_get_home_dir_1():
|
|
116
|
+
def test_get_home_dir_1(monkeypatch):
|
|
117
117
|
"""Testcase for py2exe logic, un-compressed lib
|
|
118
118
|
"""
|
|
119
119
|
unfrozen = path.get_home_dir()
|
|
120
|
-
sys
|
|
120
|
+
monkeypatch.setattr(sys, "frozen", True, raising=False)
|
|
121
121
|
|
|
122
122
|
#fake filename for IPython.__init__
|
|
123
123
|
IPython.__file__ = abspath(join(HOME_TEST_DIR, "Lib/IPython/__init__.py"))
|
|
@@ -128,13 +128,15 @@ def test_get_home_dir_1():
|
|
|
128
128
|
|
|
129
129
|
@skip_if_not_win32
|
|
130
130
|
@with_environment
|
|
131
|
-
def test_get_home_dir_2():
|
|
131
|
+
def test_get_home_dir_2(monkeypatch):
|
|
132
132
|
"""Testcase for py2exe logic, compressed lib
|
|
133
133
|
"""
|
|
134
134
|
unfrozen = path.get_home_dir()
|
|
135
|
-
sys
|
|
136
|
-
#fake filename for IPython.__init__
|
|
137
|
-
IPython.__file__ = abspath(
|
|
135
|
+
monkeypatch.setattr(sys, "frozen", True, raising=False)
|
|
136
|
+
# fake filename for IPython.__init__
|
|
137
|
+
IPython.__file__ = abspath(
|
|
138
|
+
join(HOME_TEST_DIR, "Library.zip/IPython/__init__.py")
|
|
139
|
+
).lower()
|
|
138
140
|
|
|
139
141
|
home_dir = path.get_home_dir(True)
|
|
140
142
|
assert home_dir == unfrozen
|
|
@@ -160,22 +162,22 @@ def test_get_home_dir_4():
|
|
|
160
162
|
|
|
161
163
|
@skip_win32
|
|
162
164
|
@with_environment
|
|
163
|
-
def test_get_home_dir_5():
|
|
165
|
+
def test_get_home_dir_5(monkeypatch):
|
|
164
166
|
"""raise HomeDirError if $HOME is specified, but not a writable dir"""
|
|
165
167
|
env['HOME'] = abspath(HOME_TEST_DIR+'garbage')
|
|
166
168
|
# set os.name = posix, to prevent My Documents fallback on Windows
|
|
167
|
-
os
|
|
169
|
+
monkeypatch.setattr(os, "name", "posix")
|
|
168
170
|
pytest.raises(path.HomeDirError, path.get_home_dir, True)
|
|
169
171
|
|
|
170
172
|
# Should we stub wreg fully so we can run the test on all platforms?
|
|
171
173
|
@skip_if_not_win32
|
|
172
174
|
@with_environment
|
|
173
|
-
def test_get_home_dir_8():
|
|
175
|
+
def test_get_home_dir_8(monkeypatch):
|
|
174
176
|
"""Using registry hack for 'My Documents', os=='nt'
|
|
175
177
|
|
|
176
178
|
HOMESHARE, HOMEDRIVE, HOMEPATH, USERPROFILE and others are missing.
|
|
177
179
|
"""
|
|
178
|
-
os
|
|
180
|
+
monkeypatch.setattr(os, "name", "nt")
|
|
179
181
|
# Remove from stub environment all keys that may be set
|
|
180
182
|
for key in ['HOME', 'HOMESHARE', 'HOMEDRIVE', 'HOMEPATH', 'USERPROFILE']:
|
|
181
183
|
env.pop(key, None)
|
|
@@ -194,13 +196,12 @@ def test_get_home_dir_8():
|
|
|
194
196
|
assert home_dir == abspath(HOME_TEST_DIR)
|
|
195
197
|
|
|
196
198
|
@with_environment
|
|
197
|
-
def test_get_xdg_dir_0():
|
|
199
|
+
def test_get_xdg_dir_0(monkeypatch):
|
|
198
200
|
"""test_get_xdg_dir_0, check xdg_dir"""
|
|
199
|
-
|
|
200
|
-
path
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
sys.platform = "linux2"
|
|
201
|
+
monkeypatch.setattr(path, "_writable_dir", lambda path: True)
|
|
202
|
+
monkeypatch.setattr(path, "get_home_dir", lambda: "somewhere")
|
|
203
|
+
monkeypatch.setattr(os, "name", "posix")
|
|
204
|
+
monkeypatch.setattr(sys, "platform", "linux2")
|
|
204
205
|
env.pop('IPYTHON_DIR', None)
|
|
205
206
|
env.pop('IPYTHONDIR', None)
|
|
206
207
|
env.pop('XDG_CONFIG_HOME', None)
|
|
@@ -209,44 +210,41 @@ def test_get_xdg_dir_0():
|
|
|
209
210
|
|
|
210
211
|
|
|
211
212
|
@with_environment
|
|
212
|
-
def test_get_xdg_dir_1():
|
|
213
|
+
def test_get_xdg_dir_1(monkeypatch):
|
|
213
214
|
"""test_get_xdg_dir_1, check nonexistent xdg_dir"""
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
env.pop(
|
|
219
|
-
env.pop(
|
|
220
|
-
env.pop('XDG_CONFIG_HOME', None)
|
|
215
|
+
monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
|
|
216
|
+
monkeypatch.setattr(os, "name", "posix")
|
|
217
|
+
monkeypatch.setattr(sys, "platform", "linux2")
|
|
218
|
+
env.pop("IPYTHON_DIR", None)
|
|
219
|
+
env.pop("IPYTHONDIR", None)
|
|
220
|
+
env.pop("XDG_CONFIG_HOME", None)
|
|
221
221
|
assert path.get_xdg_dir() is None
|
|
222
222
|
|
|
223
223
|
@with_environment
|
|
224
|
-
def test_get_xdg_dir_2():
|
|
224
|
+
def test_get_xdg_dir_2(monkeypatch):
|
|
225
225
|
"""test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
env.pop(
|
|
231
|
-
env.pop(
|
|
232
|
-
|
|
233
|
-
cfgdir=os.path.join(path.get_home_dir(), '.config')
|
|
226
|
+
monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
|
|
227
|
+
monkeypatch.setattr(os, "name", "posix")
|
|
228
|
+
monkeypatch.setattr(sys, "platform", "linux2")
|
|
229
|
+
env.pop("IPYTHON_DIR", None)
|
|
230
|
+
env.pop("IPYTHONDIR", None)
|
|
231
|
+
env.pop("XDG_CONFIG_HOME", None)
|
|
232
|
+
cfgdir = os.path.join(path.get_home_dir(), ".config")
|
|
234
233
|
if not os.path.exists(cfgdir):
|
|
235
234
|
os.makedirs(cfgdir)
|
|
236
235
|
|
|
237
236
|
assert path.get_xdg_dir() == cfgdir
|
|
238
237
|
|
|
239
238
|
@with_environment
|
|
240
|
-
def test_get_xdg_dir_3():
|
|
239
|
+
def test_get_xdg_dir_3(monkeypatch):
|
|
241
240
|
"""test_get_xdg_dir_3, check xdg_dir not used on non-posix systems"""
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
env.pop(
|
|
247
|
-
env.pop(
|
|
248
|
-
|
|
249
|
-
cfgdir=os.path.join(path.get_home_dir(), '.config')
|
|
241
|
+
monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
|
|
242
|
+
monkeypatch.setattr(os, "name", "nt")
|
|
243
|
+
monkeypatch.setattr(sys, "platform", "win32")
|
|
244
|
+
env.pop("IPYTHON_DIR", None)
|
|
245
|
+
env.pop("IPYTHONDIR", None)
|
|
246
|
+
env.pop("XDG_CONFIG_HOME", None)
|
|
247
|
+
cfgdir = os.path.join(path.get_home_dir(), ".config")
|
|
250
248
|
os.makedirs(cfgdir, exist_ok=True)
|
|
251
249
|
|
|
252
250
|
assert path.get_xdg_dir() is None
|
|
@@ -281,31 +279,30 @@ def test_get_long_path_name():
|
|
|
281
279
|
assert p == "/usr/local"
|
|
282
280
|
|
|
283
281
|
|
|
284
|
-
|
|
282
|
+
@dec.skip_win32 # can't create not-user-writable dir on win
|
|
283
|
+
@with_environment
|
|
284
|
+
def test_not_writable_ipdir():
|
|
285
|
+
tmpdir = tempfile.mkdtemp()
|
|
286
|
+
os.name = "posix"
|
|
287
|
+
env.pop("IPYTHON_DIR", None)
|
|
288
|
+
env.pop("IPYTHONDIR", None)
|
|
289
|
+
env.pop("XDG_CONFIG_HOME", None)
|
|
290
|
+
env["HOME"] = tmpdir
|
|
291
|
+
ipdir = os.path.join(tmpdir, ".ipython")
|
|
292
|
+
os.mkdir(ipdir, 0o555)
|
|
293
|
+
try:
|
|
294
|
+
open(os.path.join(ipdir, "_foo_"), "w", encoding="utf-8").close()
|
|
295
|
+
except IOError:
|
|
296
|
+
pass
|
|
297
|
+
else:
|
|
298
|
+
# I can still write to an unwritable dir,
|
|
299
|
+
# assume I'm root and skip the test
|
|
300
|
+
pytest.skip("I can't create directories that I can't write to")
|
|
301
|
+
|
|
302
|
+
with pytest.warns(UserWarning, match="is not a writable location"):
|
|
303
|
+
ipdir = paths.get_ipython_dir()
|
|
304
|
+
env.pop("IPYTHON_DIR", None)
|
|
285
305
|
|
|
286
|
-
@dec.skip_win32 # can't create not-user-writable dir on win
|
|
287
|
-
@with_environment
|
|
288
|
-
def test_not_writable_ipdir(self):
|
|
289
|
-
tmpdir = tempfile.mkdtemp()
|
|
290
|
-
os.name = "posix"
|
|
291
|
-
env.pop('IPYTHON_DIR', None)
|
|
292
|
-
env.pop('IPYTHONDIR', None)
|
|
293
|
-
env.pop('XDG_CONFIG_HOME', None)
|
|
294
|
-
env['HOME'] = tmpdir
|
|
295
|
-
ipdir = os.path.join(tmpdir, '.ipython')
|
|
296
|
-
os.mkdir(ipdir, 0o555)
|
|
297
|
-
try:
|
|
298
|
-
open(os.path.join(ipdir, "_foo_"), "w", encoding="utf-8").close()
|
|
299
|
-
except IOError:
|
|
300
|
-
pass
|
|
301
|
-
else:
|
|
302
|
-
# I can still write to an unwritable dir,
|
|
303
|
-
# assume I'm root and skip the test
|
|
304
|
-
pytest.skip("I can't create directories that I can't write to")
|
|
305
|
-
|
|
306
|
-
with self.assertWarnsRegex(UserWarning, 'is not a writable location'):
|
|
307
|
-
ipdir = paths.get_ipython_dir()
|
|
308
|
-
env.pop('IPYTHON_DIR', None)
|
|
309
306
|
|
|
310
307
|
@with_environment
|
|
311
308
|
def test_get_py_filename():
|
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
============
|
|
2
2
|
8.x Series
|
|
3
3
|
============
|
|
4
|
+
.. _version 8.28:
|
|
5
|
+
|
|
6
|
+
IPython 8.28
|
|
7
|
+
============
|
|
8
|
+
|
|
9
|
+
Slight delay of this September release as I was busy at Pydata Paris last week.
|
|
10
|
+
Not many user visible changes for this release, a couple of bug fixes and
|
|
11
|
+
workaround:
|
|
12
|
+
|
|
13
|
+
- :ghpull:`14480` AssertionError: assert _xterm_term_title_saved in WSL – It is
|
|
14
|
+
unclear why the terminal title is not saved in WSL, if you've WSL experience
|
|
15
|
+
we'd love your feedback and help to not just ignore an error
|
|
16
|
+
- :ghpull:`14510` Fix use of pyside6 >= 6.7.0
|
|
17
|
+
- :ghpull:`14518` Make values public (_tb_highlight & _tb_highlight_style)
|
|
18
|
+
- :ghpull:`14515` Use environment variable to identify conda / mamba
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
As usual you can find the full list of PRs on GitHub under `the 8.28
|
|
22
|
+
<https://github.com/ipython/ipython/milestone/135?closed=1>`__ milestone.
|
|
23
|
+
|
|
24
|
+
For something completely different
|
|
25
|
+
----------------------------------
|
|
26
|
+
|
|
27
|
+
One of the first works of Science Fiction (`Frankenstein
|
|
28
|
+
<https://en.wikipedia.org/wiki/Frankenstein>`__), was written by `Mary Shelley
|
|
29
|
+
<https://en.wikipedia.org/wiki/Mary_Shelley>`__ when she was 18, before being
|
|
30
|
+
published in London on 1 January 1818 when she was 20. This is often overlooked,
|
|
31
|
+
and the role of founders of science fiction attribute to Edgar Allan Poe and
|
|
32
|
+
Jules Verne despite being published later.
|
|
33
|
+
|
|
34
|
+
Thanks
|
|
35
|
+
------
|
|
36
|
+
|
|
37
|
+
Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
|
|
38
|
+
work on IPython and related libraries.
|
|
39
|
+
|
|
40
|
+
|
|
4
41
|
.. _version 8.27:
|
|
5
42
|
|
|
6
43
|
IPython 8.27
|
|
@@ -392,16 +429,27 @@ Reverted in 8.17.1:
|
|
|
392
429
|
|
|
393
430
|
- :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
|
|
394
431
|
|
|
395
|
-
Mamba and Micromamba magic
|
|
396
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
397
432
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
433
|
+
Mamba and Micromamba magic commands
|
|
434
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
435
|
+
|
|
436
|
+
In addition to the ``%conda`` magic command for calling ``conda`` in IPython,
|
|
437
|
+
the ``%mamba`` and ``%micromamba`` magic commands now
|
|
438
|
+
call ``mamba`` and ``micromamba`` if they are on ``sys.path``.
|
|
439
|
+
|
|
440
|
+
.. code::
|
|
441
|
+
|
|
442
|
+
%mamba install pkgname
|
|
443
|
+
%micromamba install pkgname
|
|
444
|
+
%conda install pkgname
|
|
445
|
+
%pip install pkgname
|
|
446
|
+
|
|
447
|
+
%mamba --help
|
|
448
|
+
%micromamba --help
|
|
449
|
+
%conda --help
|
|
450
|
+
%pip --help # works w/ JupyterLite
|
|
451
|
+
!pip --help
|
|
402
452
|
|
|
403
|
-
These two magic require to have the corresponding commands available
|
|
404
|
-
either in the conda environment or system wide.
|
|
405
453
|
|
|
406
454
|
:ghpull:`14191`
|
|
407
455
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|