ipython 9.0.0b2__tar.gz → 9.0.2__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-9.0.0b2 → ipython-9.0.2}/IPython/core/debugger.py +15 -3
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/inputtransformer2.py +3 -9
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/interactiveshell.py +11 -8
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magic.py +3 -2
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/code.py +1 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/oinspect.py +7 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/release.py +3 -3
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/tbtools.py +7 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/tips.py +9 -3
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/interactiveshell.py +6 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/qt.py +3 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/ptutils.py +3 -2
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/shortcuts/__init__.py +1 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/PyColorize.py +8 -2
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_sysinfo.py +1 -1
- ipython-9.0.2/IPython/utils/coloransi.py +9 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/PKG-INFO +1 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/details.rst +22 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/intro.rst +3 -3
- ipython-9.0.2/docs/source/whatsnew/version9.rst +166 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/Embedding/start_ipython_config.py +1 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/PKG-INFO +1 -1
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/SOURCES.txt +3 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/pyproject.toml +11 -1
- ipython-9.0.2/tests/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_inputtransformer2_line.py +25 -6
- ipython-9.0.2/tests/test_tips.py +12 -0
- ipython-9.0.0b2/docs/source/whatsnew/version9.rst +0 -123
- {ipython-9.0.0b2 → ipython-9.0.2}/.flake8 +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/.mailmap +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/.pre-commit-config.yaml +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/COPYING.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/__main__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/alias.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/application.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/async_helpers.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/autocall.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/builtin_trap.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/compilerop.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/completer.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/completerlib.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/crashhandler.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/display.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/display_functions.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/display_trap.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/displayhook.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/displaypub.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/doctb.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/error.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/events.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/extensions.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/formatters.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/getipython.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/guarded_eval.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/history.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/historyapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/hooks.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/latex_symbols.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/logger.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/macro.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magic_arguments.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/auto.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/basic.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/config.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/display.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/execution.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/extension.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/history.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/logging.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/namespace.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/osm.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/packaging.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/pylab.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/magics/script.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/page.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/payload.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/payloadpage.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/prefilter.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/profileapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/profiledir.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/pylabtools.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/shellapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/splitinput.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/ultratb.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/core/usage.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/display.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/autoreload.py +0 -0
- {ipython-9.0.0b2/IPython/sphinxext → ipython-9.0.2/IPython/extensions/deduperreload}/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/deduperreload/deduperreload.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/deduperreload/deduperreload_patching.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/storemagic.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/extensions/tests/test_deduperreload.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/external/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/external/pickleshare.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/external/qt_loaders.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/clipboard.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/deepreload.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/demo.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/display.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/editorhooks.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/guisupport.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/latextools.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/lexers.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/lib/pretty.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/paths.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/py.typed +0 -0
- {ipython-9.0.0b2/IPython/terminal → ipython-9.0.2/IPython/sphinxext}/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-9.0.0b2/IPython/testing/plugin → ipython-9.0.2/IPython/terminal}/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/debugger.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/embed.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/ipapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/magics.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/prompts.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/decorators.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/globalipapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/ipunittest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/Makefile +0 -0
- {ipython-9.0.0b2/IPython/utils → ipython-9.0.2/IPython/testing/plugin}/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/setup.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/simple.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/skipdoctest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/testing/tools.py +0 -0
- {ipython-9.0.0b2/tests → ipython-9.0.2/IPython/utils}/__init__.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_cli.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_common.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_posix.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_win32.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/capture.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/contexts.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/data.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/decorators.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/dir2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/docs.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/encoding.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/eventful.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/frame.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/generics.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/importstring.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/io.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/ipstruct.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/jsonutil.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/log.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/module_paths.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/openpy.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/path.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/process.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/py3compat.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/sentinel.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/strdispatch.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/sysinfo.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/syspathcontext.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/tempdir.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/terminal.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/text.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/timing.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/tokenutil.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/IPython/utils/wildcard.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/LICENSE +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/MANIFEST.in +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/README.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/_build_meta.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/Makefile +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/README.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/autogen_api.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/autogen_config.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/autogen_magics.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/autogen_shortcuts.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/make.cmd +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/man/ipython.1 +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/requirements.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/2.0/running.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/qtconsole.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_static/favicon.ico +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_static/logo.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/about/history.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/about/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/api/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/conf.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/callbacks.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/custommagics.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/eventloops.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/extensions/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/integrating.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/options/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/coredev/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/config.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/execution.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/kernels.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/messaging.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/pycompat.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/install/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/install/install.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/install/kernel_install.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/magics.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/plotting.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/reference.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/shell.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/tips.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/links.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/overview.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/parallel/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/sphinx.toml +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/sphinxext.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/development.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/index.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/source/whatsnew/version8.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/sphinxext/apigen.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/sphinxext/configtraits.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/sphinxext/github.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/docs/sphinxext/magics.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/Embedding/embed_function.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/auto_suggest_llm.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/utils/cwd_prompt.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/requires.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/ipython.egg-info/top_level.txt +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/long_description.rst +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/scripts/ipython.ico +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/scripts/ipython_nb.ico +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/setup.cfg +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/setup.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/setupbase.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/2x2.jpg +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/2x2.png +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/bad_all.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/conftest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/cve.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/fake_ext_dir/daft_extension.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/nonascii.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/nonascii2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/print_argv.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/refbug.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/simpleerr.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/tclass.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test.wav +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_alias.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_application.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_async_helpers.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_autocall.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_backgroundjobs.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_capture.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_clipboard.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_compilerop.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_completer.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_completerlib.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_debug_magic.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_debugger.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_decorators.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_decorators_2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_deepreload.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_dir2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_display.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_display_2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_displayhook.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_editorhooks.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_embed.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_events.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_extension.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_formatters.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_guarded_eval.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_handlers.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_help.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_history.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_hooks.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_imports.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_importstring.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_inputtransformer2.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_interactiveshell.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_interactivshell.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_io.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_iplib.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_ipunittest.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_latextools.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_logger.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_magic.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_magic_arguments.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_magic_terminal.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_module_paths.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_oinspect.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_openpy.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_page.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_path.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_paths.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_prefilter.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_pretty.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_process.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_profile.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_pt_inputhooks.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_pycolorize.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_pylabtools.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_qt_loaders.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_run.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_shellapp.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_shortcuts.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_splitinput.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_storemagic.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_sysinfo.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_tempdir.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_text.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_tokenutil.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_tools.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_ultratb.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_wildcard.py +0 -0
- {ipython-9.0.0b2 → ipython-9.0.2}/tests/test_zzz_autoreload.py +0 -0
|
@@ -228,7 +228,12 @@ class Pdb(OldPdb):
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
def __init__(
|
|
231
|
-
self,
|
|
231
|
+
self,
|
|
232
|
+
completekey=None,
|
|
233
|
+
stdin=None,
|
|
234
|
+
stdout=None,
|
|
235
|
+
context: int | None | str = 5,
|
|
236
|
+
**kwargs,
|
|
232
237
|
):
|
|
233
238
|
"""Create a new IPython debugger.
|
|
234
239
|
|
|
@@ -251,7 +256,11 @@ class Pdb(OldPdb):
|
|
|
251
256
|
The possibilities are python version dependent, see the python
|
|
252
257
|
docs for more info.
|
|
253
258
|
"""
|
|
254
|
-
|
|
259
|
+
# ipdb issue, see https://github.com/ipython/ipython/issues/14811
|
|
260
|
+
if context is None:
|
|
261
|
+
context = 5
|
|
262
|
+
if isinstance(context, str):
|
|
263
|
+
context = int(context)
|
|
255
264
|
self.context = context
|
|
256
265
|
|
|
257
266
|
# `kwargs` ensures full compatibility with stdlib's `pdb.Pdb`.
|
|
@@ -298,7 +307,10 @@ class Pdb(OldPdb):
|
|
|
298
307
|
return self._context
|
|
299
308
|
|
|
300
309
|
@context.setter
|
|
301
|
-
def context(self, value: int) -> None:
|
|
310
|
+
def context(self, value: int | str) -> None:
|
|
311
|
+
# ipdb issue see https://github.com/ipython/ipython/issues/14811
|
|
312
|
+
if not isinstance(value, int):
|
|
313
|
+
value = int(value)
|
|
302
314
|
assert isinstance(value, int)
|
|
303
315
|
assert value >= 0
|
|
304
316
|
self._context = value
|
|
@@ -17,6 +17,7 @@ import sys
|
|
|
17
17
|
import tokenize
|
|
18
18
|
from typing import List, Tuple, Optional, Any
|
|
19
19
|
import warnings
|
|
20
|
+
from textwrap import dedent
|
|
20
21
|
|
|
21
22
|
from IPython.utils import tokenutil
|
|
22
23
|
|
|
@@ -38,18 +39,11 @@ def leading_empty_lines(lines):
|
|
|
38
39
|
def leading_indent(lines):
|
|
39
40
|
"""Remove leading indentation.
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
removed from each following line in the cell.
|
|
42
|
+
Removes the minimum common leading indentation from all lines.
|
|
43
43
|
"""
|
|
44
44
|
if not lines:
|
|
45
45
|
return lines
|
|
46
|
-
|
|
47
|
-
if not m or lines[0].strip().startswith("#"):
|
|
48
|
-
return lines
|
|
49
|
-
space = m.group(0)
|
|
50
|
-
n = len(space)
|
|
51
|
-
return [l[n:] if l.startswith(space) else l
|
|
52
|
-
for l in lines]
|
|
46
|
+
return dedent("".join(lines)).splitlines(keepends=True)
|
|
53
47
|
|
|
54
48
|
class PromptStripper:
|
|
55
49
|
"""Remove matching input prompts from a block of input.
|
|
@@ -329,6 +329,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
329
329
|
|
|
330
330
|
_instance = None
|
|
331
331
|
_user_ns: dict
|
|
332
|
+
_sys_modules_keys: set[str, AnyType]
|
|
332
333
|
|
|
333
334
|
inspector: oinspect.Inspector
|
|
334
335
|
|
|
@@ -764,7 +765,9 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
764
765
|
if not new == new.lower():
|
|
765
766
|
warn(
|
|
766
767
|
f"`TerminalInteractiveShell.colors` is now lowercase: `{new.lower()}`,"
|
|
767
|
-
" non lowercase, may invalid in the future."
|
|
768
|
+
" non lowercase, may be invalid in the future.",
|
|
769
|
+
DeprecationWarning,
|
|
770
|
+
stacklevel=2,
|
|
768
771
|
)
|
|
769
772
|
return new.lower()
|
|
770
773
|
|
|
@@ -781,7 +784,8 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
781
784
|
)
|
|
782
785
|
|
|
783
786
|
try:
|
|
784
|
-
|
|
787
|
+
# Deprecation in 9.0, colors should always be lower
|
|
788
|
+
self.inspector.set_theme_name(self.colors.lower())
|
|
785
789
|
except Exception:
|
|
786
790
|
warn(
|
|
787
791
|
"Error changing object inspector color schemes.\n%s"
|
|
@@ -804,20 +808,19 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
804
808
|
|
|
805
809
|
self.dir_stack = []
|
|
806
810
|
|
|
807
|
-
def init_logger(self):
|
|
811
|
+
def init_logger(self) -> None:
|
|
808
812
|
self.logger = Logger(self.home_dir, logfname='ipython_log.py',
|
|
809
813
|
logmode='rotate')
|
|
810
814
|
|
|
811
|
-
def init_logstart(self):
|
|
815
|
+
def init_logstart(self) -> None:
|
|
812
816
|
"""Initialize logging in case it was requested at the command line.
|
|
813
817
|
"""
|
|
814
818
|
if self.logappend:
|
|
815
|
-
self.
|
|
819
|
+
self.run_line_magic("logstart", f"{self.logappend} append")
|
|
816
820
|
elif self.logfile:
|
|
817
|
-
self.
|
|
821
|
+
self.run_line_magic("logstart", self.logfile)
|
|
818
822
|
elif self.logstart:
|
|
819
|
-
self.
|
|
820
|
-
|
|
823
|
+
self.run_line_magic("logstart", "")
|
|
821
824
|
|
|
822
825
|
def init_builtins(self):
|
|
823
826
|
# A single, static flag that we set to True. Its presence indicates
|
|
@@ -672,10 +672,11 @@ class Magics(Configurable):
|
|
|
672
672
|
argv = arg_split(arg_str, posix, strict)
|
|
673
673
|
# Do regular option processing
|
|
674
674
|
try:
|
|
675
|
-
opts,args = getopt(argv, opt_str, long_opts)
|
|
675
|
+
opts, args = getopt(argv, opt_str, long_opts)
|
|
676
676
|
except GetoptError as e:
|
|
677
677
|
raise UsageError(
|
|
678
|
-
'%s (
|
|
678
|
+
'%s (allowed: "%s"%s)'
|
|
679
|
+
% (e.msg, opt_str, " ".join(("",) + long_opts) if long_opts else "")
|
|
679
680
|
) from e
|
|
680
681
|
for o, a in opts:
|
|
681
682
|
if mode == "string" and preserve_non_opts:
|
|
@@ -193,7 +193,7 @@ class CodeMagics(Magics):
|
|
|
193
193
|
|
|
194
194
|
-r: use 'raw' input. By default, the 'processed' history is used,
|
|
195
195
|
so that magics are loaded in their transformed version to valid
|
|
196
|
-
Python. If this option is given, the raw input as typed
|
|
196
|
+
Python. If this option is given, the raw input as typed at the
|
|
197
197
|
command line is used instead.
|
|
198
198
|
|
|
199
199
|
-f: force overwrite. If file exists, %save will prompt for overwrite
|
|
@@ -401,7 +401,13 @@ class Inspector(Configurable):
|
|
|
401
401
|
parent=None,
|
|
402
402
|
config=None,
|
|
403
403
|
):
|
|
404
|
-
|
|
404
|
+
if theme_name in ["Linux", "LightBG", "Neutral", "NoColor"]:
|
|
405
|
+
warnings.warn(
|
|
406
|
+
f"Theme names and color schemes are lowercase in IPython 9.0 use {theme_name.lower()} instead",
|
|
407
|
+
DeprecationWarning,
|
|
408
|
+
stacklevel=2,
|
|
409
|
+
)
|
|
410
|
+
theme_name = theme_name.lower()
|
|
405
411
|
self._theme_name = theme_name
|
|
406
412
|
super(Inspector, self).__init__(parent=parent, config=config)
|
|
407
413
|
self.parser = PyColorize.Parser(out="str", theme_name=theme_name)
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
# version
|
|
18
18
|
_version_major = 9
|
|
19
19
|
_version_minor = 0
|
|
20
|
-
_version_patch =
|
|
20
|
+
_version_patch = 2
|
|
21
21
|
_version_extra = ".dev"
|
|
22
|
-
_version_extra = "b2"
|
|
23
|
-
|
|
22
|
+
# _version_extra = "b2"
|
|
23
|
+
_version_extra = "" # Uncomment this for full releases
|
|
24
24
|
|
|
25
25
|
# Construct full version string from these.
|
|
26
26
|
_ver = [_version_major, _version_minor, _version_patch]
|
|
@@ -401,7 +401,13 @@ class TBTools:
|
|
|
401
401
|
stacklevel=2,
|
|
402
402
|
)
|
|
403
403
|
theme_name = color_scheme
|
|
404
|
-
|
|
404
|
+
if theme_name in ["Linux", "LightBG", "Neutral", "NoColor"]:
|
|
405
|
+
warnings.warn(
|
|
406
|
+
f"Theme names and color schemes are lowercase in IPython 9.0 use {theme_name.lower()} instead",
|
|
407
|
+
DeprecationWarning,
|
|
408
|
+
stacklevel=2,
|
|
409
|
+
)
|
|
410
|
+
theme_name = theme_name.lower()
|
|
405
411
|
# Whether to call the interactive pdb debugger after printing
|
|
406
412
|
# tracebacks or not
|
|
407
413
|
super().__init__()
|
|
@@ -71,12 +71,12 @@ _tips: Any = {
|
|
|
71
71
|
"Run your doctests from within IPython for development and debugging. The special %doctest_mode command toggles a mode where the prompt, output and exceptions display matches as closely as possible that of the default Python interpreter.",
|
|
72
72
|
"You can use `files = !ls *.png`",
|
|
73
73
|
"Use the IPython.lib.demo.Demo class to load any Python script as an interactive demo.",
|
|
74
|
-
"Put a
|
|
74
|
+
"Put a ';' at the end of a line to suppress the printing of output.",
|
|
75
75
|
"You can use Ctrl-O to force a new line in terminal IPython",
|
|
76
76
|
"Use `object?` to see the help on `object`, `object??` to view it's source",
|
|
77
77
|
"`?` alone on a line will brings up IPython's help",
|
|
78
78
|
"You can use `%hist` to view history, see the options with `%history?`",
|
|
79
|
-
"You can change the
|
|
79
|
+
"You can change the editing mode of IPython to behave more like vi, or emacs.",
|
|
80
80
|
"IPython 9.0+ have hooks to integrate AI/LLM completions.",
|
|
81
81
|
"Use `%timeit` or `%%timeit`, and the `-r`, `-n`, and `-o` options to easily profile your code.",
|
|
82
82
|
"Use `ipython --help-all | less` to view all the IPython configurations options.",
|
|
@@ -91,11 +91,17 @@ if os.name == "nt":
|
|
|
91
91
|
"We can't show you all tips on windows as sometime Unicode characters crash windows console, please help us debug it."
|
|
92
92
|
]
|
|
93
93
|
)
|
|
94
|
+
# unicode may crash windows console, so we filter out tips with non-ASCII characters.
|
|
95
|
+
_tips["every_year"] = {
|
|
96
|
+
k: v
|
|
97
|
+
for k, v in _tips["every_year"].items()
|
|
98
|
+
if all(ord(char) < 128 for char in v)
|
|
99
|
+
}
|
|
94
100
|
else:
|
|
95
101
|
_tips["random"].extend(
|
|
96
102
|
[
|
|
97
103
|
"You can use latex or unicode completion, `\\alpha<tab>` will insert the α symbol.",
|
|
98
|
-
"You can find how to type a
|
|
104
|
+
"You can find how to type a latex symbol by back completing it `\\θ<tab>` will expand to `\\theta`.",
|
|
99
105
|
"You can find how to type a unicode symbol by back completing it `\\Ⅷ<tab>` will expand to `\\ROMAN NUMERAL EIGHT`.",
|
|
100
106
|
"IPython support combining unicode identifiers, F\\vec<tab> will become F⃗, usefull for physics equations. Play with \\dot \\ddot and others.",
|
|
101
107
|
]
|
|
@@ -1030,6 +1030,12 @@ class TerminalInteractiveShell(InteractiveShell):
|
|
|
1030
1030
|
|
|
1031
1031
|
_inputhook = None
|
|
1032
1032
|
def inputhook(self, context):
|
|
1033
|
+
warn(
|
|
1034
|
+
"inputkook seem unused, and marked for deprecation/Removal as of IPython 9.0. "
|
|
1035
|
+
"Please open an issue if you are using it.",
|
|
1036
|
+
category=PendingDeprecationWarning,
|
|
1037
|
+
stacklevel=2,
|
|
1038
|
+
)
|
|
1033
1039
|
if self._inputhook is not None:
|
|
1034
1040
|
self._inputhook(context)
|
|
1035
1041
|
|
|
@@ -50,7 +50,6 @@ def inputhook(context):
|
|
|
50
50
|
except AttributeError: # Only for Qt>=5.14.
|
|
51
51
|
pass
|
|
52
52
|
_appref = app = QtGui.QApplication([" "])
|
|
53
|
-
_eventloop = QtCore.QEventLoop(app)
|
|
54
53
|
|
|
55
54
|
# "reclaim" IPython sys.excepthook after event loop starts
|
|
56
55
|
# without this, it defaults back to BaseIPythonApplication.excepthook
|
|
@@ -58,6 +57,9 @@ def inputhook(context):
|
|
|
58
57
|
# formatting and look like "bug in IPython".
|
|
59
58
|
QtCore.QTimer.singleShot(0, _reclaim_excepthook)
|
|
60
59
|
|
|
60
|
+
if _eventloop is None:
|
|
61
|
+
_eventloop = QtCore.QEventLoop(app)
|
|
62
|
+
|
|
61
63
|
if sys.platform == 'win32':
|
|
62
64
|
# The QSocketNotifier method doesn't appear to work on Windows.
|
|
63
65
|
# Use polling instead.
|
|
@@ -169,6 +169,7 @@ class IPythonPTCompleter(Completer):
|
|
|
169
169
|
adjusted_text = _adjust_completion_text_based_on_context(
|
|
170
170
|
c.text, body, offset
|
|
171
171
|
)
|
|
172
|
+
min_elide = 30 if self.shell is None else self.shell.min_elide
|
|
172
173
|
if c.type == "function":
|
|
173
174
|
yield Completion(
|
|
174
175
|
adjusted_text,
|
|
@@ -176,7 +177,7 @@ class IPythonPTCompleter(Completer):
|
|
|
176
177
|
display=_elide(
|
|
177
178
|
display_text + "()",
|
|
178
179
|
body[c.start : c.end],
|
|
179
|
-
min_elide=
|
|
180
|
+
min_elide=min_elide,
|
|
180
181
|
),
|
|
181
182
|
display_meta=c.type + c.signature,
|
|
182
183
|
)
|
|
@@ -187,7 +188,7 @@ class IPythonPTCompleter(Completer):
|
|
|
187
188
|
display=_elide(
|
|
188
189
|
display_text,
|
|
189
190
|
body[c.start : c.end],
|
|
190
|
-
min_elide=
|
|
191
|
+
min_elide=min_elide,
|
|
191
192
|
),
|
|
192
193
|
display_meta=c.type,
|
|
193
194
|
)
|
|
@@ -203,7 +203,7 @@ AUTO_SUGGEST_BINDINGS = [
|
|
|
203
203
|
Binding(
|
|
204
204
|
auto_suggest.accept,
|
|
205
205
|
["right"],
|
|
206
|
-
"has_suggestion & default_buffer_focused & emacs_like_insert_mode",
|
|
206
|
+
"has_suggestion & default_buffer_focused & emacs_like_insert_mode & is_cursor_at_the_end_of_line",
|
|
207
207
|
),
|
|
208
208
|
Binding(
|
|
209
209
|
auto_suggest.accept_word,
|
|
@@ -3,6 +3,7 @@ import os
|
|
|
3
3
|
import sys
|
|
4
4
|
import token
|
|
5
5
|
import tokenize
|
|
6
|
+
import warnings
|
|
6
7
|
from io import StringIO
|
|
7
8
|
from typing import TypeAlias
|
|
8
9
|
|
|
@@ -353,7 +354,6 @@ class Parser:
|
|
|
353
354
|
Call format() to process code.
|
|
354
355
|
"""
|
|
355
356
|
|
|
356
|
-
|
|
357
357
|
assert theme_name is not None
|
|
358
358
|
|
|
359
359
|
self.out = out
|
|
@@ -361,7 +361,13 @@ class Parser:
|
|
|
361
361
|
self.lines = None
|
|
362
362
|
self.raw = None
|
|
363
363
|
if theme_name is not None:
|
|
364
|
-
|
|
364
|
+
if theme_name in ["Linux", "LightBG", "Neutral", "NoColor"]:
|
|
365
|
+
warnings.warn(
|
|
366
|
+
f"Theme names and color schemes are lowercase in IPython 9.0 use {theme_name.lower()} instead",
|
|
367
|
+
DeprecationWarning,
|
|
368
|
+
stacklevel=2,
|
|
369
|
+
)
|
|
370
|
+
theme_name = theme_name.lower()
|
|
365
371
|
if not theme_name:
|
|
366
372
|
self.theme_name = "nocolor"
|
|
367
373
|
else:
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# GENERATED BY setup.py
|
|
2
|
-
commit = "
|
|
2
|
+
commit = "9970f5e4b"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Deprecated/should be removed, but we break older version of ipyparallel
|
|
2
|
+
# https://github.com/ipython/ipyparallel/pull/924
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# minimal subset of TermColors, removed from IPython
|
|
6
|
+
# not for public consumption, beyond ipyparallel.
|
|
7
|
+
class TermColors:
|
|
8
|
+
Normal = "\033[0m"
|
|
9
|
+
Red = "\033[0;31m"
|
|
@@ -95,6 +95,28 @@ Extra configuration may be needed by setting environment variables, this will
|
|
|
95
95
|
again depend on the provider you chose, and you will have to refer to the
|
|
96
96
|
provider documentation.
|
|
97
97
|
|
|
98
|
+
LLM Context
|
|
99
|
+
-----------
|
|
100
|
+
|
|
101
|
+
The option ``c.TerminalInteractiveShell.llm_prefix_from_history`` controls the
|
|
102
|
+
context the ``Provider`` gets when trying to complete. See the help of this
|
|
103
|
+
options (``ipython --help-all``)::
|
|
104
|
+
|
|
105
|
+
Fully Qualifed name of a function that takes an IPython history manager and
|
|
106
|
+
return a prefix to pass the llm provider in addition to the current buffer
|
|
107
|
+
text.
|
|
108
|
+
|
|
109
|
+
You can use:
|
|
110
|
+
|
|
111
|
+
- no_prefix
|
|
112
|
+
- input_history
|
|
113
|
+
|
|
114
|
+
As default value. `input_history` (default), will use all the input history
|
|
115
|
+
of current IPython session
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
98
120
|
|
|
99
121
|
|
|
100
122
|
.. _custom_prompts:
|
|
@@ -68,7 +68,7 @@ Example configuration file
|
|
|
68
68
|
'mycode.py',
|
|
69
69
|
'fancy.ipy'
|
|
70
70
|
]
|
|
71
|
-
c.InteractiveShell.colors = '
|
|
71
|
+
c.InteractiveShell.colors = 'lightbg'
|
|
72
72
|
c.InteractiveShell.xmode = 'Context'
|
|
73
73
|
c.TerminalInteractiveShell.confirm_exit = False
|
|
74
74
|
c.TerminalInteractiveShell.editor = 'nano'
|
|
@@ -92,7 +92,7 @@ hierarchy represents the value you would normally set on the ``c`` object of
|
|
|
92
92
|
|
|
93
93
|
{
|
|
94
94
|
"InteractiveShell": {
|
|
95
|
-
"colors": "
|
|
95
|
+
"colors": "lightbg",
|
|
96
96
|
},
|
|
97
97
|
"InteractiveShellApp": {
|
|
98
98
|
"extensions": [
|
|
@@ -106,7 +106,7 @@ hierarchy represents the value you would normally set on the ``c`` object of
|
|
|
106
106
|
|
|
107
107
|
Is equivalent to the following ``ipython_config.py``::
|
|
108
108
|
|
|
109
|
-
c.InteractiveShell.colors = '
|
|
109
|
+
c.InteractiveShell.colors = 'lightbg'
|
|
110
110
|
c.InteractiveShellApp.extensions = [
|
|
111
111
|
'myextension'
|
|
112
112
|
]
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
============
|
|
2
|
+
9.x Series
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
.. _version90:
|
|
6
|
+
|
|
7
|
+
IPython 9.0
|
|
8
|
+
===========
|
|
9
|
+
|
|
10
|
+
Welcome to IPython 9.0. As with any version of IPython before this release, it
|
|
11
|
+
should not be majorly different from the previous version, at least on the surface.
|
|
12
|
+
We still hope you can upgrade as soon as possible amd look forward to your feedback.
|
|
13
|
+
|
|
14
|
+
I take the opportunity of this new release to remind you that IPython is
|
|
15
|
+
governed by the `Jupyter code of conduct
|
|
16
|
+
<https://jupyter.org/governance/conduct/code_of_conduct.html>`_. And that even
|
|
17
|
+
beyond so we strive to be an inclusive, accepting and progressive community,
|
|
18
|
+
Here is a relevant extract from the COC.
|
|
19
|
+
|
|
20
|
+
We strive to be a community that welcomes and supports people of all backgrounds
|
|
21
|
+
and identities. This includes, but is not limited to, members of any race,
|
|
22
|
+
ethnicity, culture, national origin, color, immigration status, social and
|
|
23
|
+
economic class, educational level, sex, sexual orientation, gender identity and
|
|
24
|
+
expression, age, physical appearance, family status, technological or
|
|
25
|
+
professional choices, academic discipline, religion, mental ability, and
|
|
26
|
+
physical ability.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
As a short overview of the changes in 9.0, we have over 100 PRs merged since 8.x,
|
|
30
|
+
many of which are refactors, cleanups and simplifications.
|
|
31
|
+
|
|
32
|
+
- (optional) LLM integration in the CLI.
|
|
33
|
+
- Complete rewrite of color and theme handling, which now supports more colors and symbols.
|
|
34
|
+
- Move tests out of tree in the wheel with a massive reduction in file size.
|
|
35
|
+
- Tips at startup
|
|
36
|
+
- Removal of (almost) all deprecated functionalities and options.
|
|
37
|
+
- Stricter and more stable codebase.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Removal and deprecation
|
|
41
|
+
-----------------------
|
|
42
|
+
|
|
43
|
+
I am not going to list the removals and deprecations, but anything deprecated since before IPython 8.16 is gone,
|
|
44
|
+
including many shim modules and indirect imports that would just re-expose IPykernel, qtconsole, etc.
|
|
45
|
+
|
|
46
|
+
A number of new deprecations have been added (run your test suites with `-Werror`), as those will be removed in the future.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Color and theme rewrite
|
|
50
|
+
-----------------------
|
|
51
|
+
|
|
52
|
+
IPython's color handling had grown many options through the years, and it was
|
|
53
|
+
quite entrenched in the codebase, directly emitting ansi escape sequences deep
|
|
54
|
+
in traceback printing and other places.
|
|
55
|
+
|
|
56
|
+
This made developing new color schemes difficult, and limited us to the 16 colors
|
|
57
|
+
of the original ansi standard defined by your terminal.
|
|
58
|
+
|
|
59
|
+
Syntax highlighting was also inconsistent, and not all syntax elements were
|
|
60
|
+
always using the same theme.
|
|
61
|
+
|
|
62
|
+
Using (style, token) pairs
|
|
63
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
64
|
+
|
|
65
|
+
Starting with 9.0, the color and theme handling has been rewritten, and
|
|
66
|
+
internally all the printing is done by yielding pairs of Style and token objects
|
|
67
|
+
(compatible with pygments and prompt_toolkit), then as much as possible, IPython
|
|
68
|
+
formats these objects at the last moment, using the current theme.
|
|
69
|
+
|
|
70
|
+
256-bit colors and unicode symbols
|
|
71
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
72
|
+
|
|
73
|
+
This means that new themes can now use all of pygments's color names and
|
|
74
|
+
functionalities, and you can define for each token style, the foreground,
|
|
75
|
+
background, underline, bold, italic and likely a few other options.
|
|
76
|
+
|
|
77
|
+
In addition, themes now provide a number of `symbols`, that can be used when
|
|
78
|
+
rendering traceback or debugger prompts. This let you customize the appearance a
|
|
79
|
+
bit more. For example, instead of using dash and greater-than sign, The arrow
|
|
80
|
+
pointing the current frame can actually use horizontal line and right arrow
|
|
81
|
+
unicode symbol, for a more refined experience.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
New themes using colors and symbols
|
|
85
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
86
|
+
|
|
87
|
+
All the existing themes (Linux, LightBG, Neutral and NoColor) should not see any
|
|
88
|
+
changes, but I added two new *pride themes*, that show the use of 256bits colors
|
|
89
|
+
and unicode symbols. I'm not a designer, so feel free to suggest updates and new
|
|
90
|
+
themes to add.
|
|
91
|
+
|
|
92
|
+
Themes currently still require writing a bit of Python, but I hope to get
|
|
93
|
+
contributions for IPython to be able to load them from text files, for easier
|
|
94
|
+
redistribution.
|
|
95
|
+
|
|
96
|
+
Tips at startup
|
|
97
|
+
---------------
|
|
98
|
+
|
|
99
|
+
IPython now displays a few tips at startup (1 line), to help you discover new features.
|
|
100
|
+
All those are in the codebase, and can be displayed randomly or based on date.
|
|
101
|
+
You can disable it via a configuration option or the ``--no-tips`` flag.
|
|
102
|
+
|
|
103
|
+
Please contribute more tips by sending pull requests!
|
|
104
|
+
|
|
105
|
+
Out-of-tree tests
|
|
106
|
+
-----------------
|
|
107
|
+
|
|
108
|
+
And more generally I have changed the folder structure and what is packaged in
|
|
109
|
+
the wheel to reduce the file size. The wheel is down from 825kb to 590kb
|
|
110
|
+
(-235kb) which is about a 28% reduction. This should help when you run IPython
|
|
111
|
+
via Pyodide – when your browser needs to download it.
|
|
112
|
+
|
|
113
|
+
According to https://pypistats.org/packages/ipython, IPython is downloaded about
|
|
114
|
+
13 million times per week, so this should reduce PyPI bandwidth by about 2Tb each
|
|
115
|
+
week, which is small compared to the total download, but still, trying to reduce
|
|
116
|
+
resource usage is a worthy goal.
|
|
117
|
+
|
|
118
|
+
Integration with Jupyter-AI LLM
|
|
119
|
+
-------------------------------
|
|
120
|
+
|
|
121
|
+
This feature allow IPython CLI to make use of Jupyter-AI provider to use LLM for
|
|
122
|
+
suggestion, and completing the current text. Unlike many features
|
|
123
|
+
of IPython this is disabled by default, and need several configuration options to
|
|
124
|
+
be set to work:
|
|
125
|
+
|
|
126
|
+
- Choose a provider in ``jupyter-ai`` and set it as default one:
|
|
127
|
+
``c.TerminalInteractiveShell.llm_provider_class = <fully qualified path>``
|
|
128
|
+
You likely need to setup your provider with API key or other things.
|
|
129
|
+
- Choose and available shortcut (I'll take ``Ctrl-Q`` as an example) and bind
|
|
130
|
+
to trigger ``llm_autosuggestion`` only while typing.
|
|
131
|
+
|
|
132
|
+
.. code::
|
|
133
|
+
|
|
134
|
+
c.TerminalInteractiveShell.shortcuts = [
|
|
135
|
+
{
|
|
136
|
+
"new_keys": ["c-q"],
|
|
137
|
+
"command": "IPython:auto_suggest.llm_autosuggestion",
|
|
138
|
+
"new_filter": "navigable_suggestions & default_buffer_focused",
|
|
139
|
+
"create": True,
|
|
140
|
+
},
|
|
141
|
+
]
|
|
142
|
+
|
|
143
|
+
See :ref:`llm_suggestions` for more.
|
|
144
|
+
|
|
145
|
+
Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`_ for sponsoring
|
|
146
|
+
this work.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
For something completely different
|
|
150
|
+
----------------------------------
|
|
151
|
+
|
|
152
|
+
Ruth Bader Ginsburg 1933-2020 was an American lawyer and jurist who served on
|
|
153
|
+
the Supreme Court of the United States. Ginsburg spent much of her legal career
|
|
154
|
+
as an advocate for gender equality, women's rights, abortion rights, and religious
|
|
155
|
+
freedom.
|
|
156
|
+
|
|
157
|
+
Thanks
|
|
158
|
+
------
|
|
159
|
+
|
|
160
|
+
Thanks to everyone who helped with the 9.0 release and working toward 9.0.
|
|
161
|
+
|
|
162
|
+
As usual you can find the full list of PRs on GitHub under `the 9.0
|
|
163
|
+
<https://github.com/ipython/ipython/milestone/138?closed=1>`__ milestone.
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
@@ -84,6 +84,7 @@ IPython/core/profile/README_STARTUP
|
|
|
84
84
|
IPython/extensions/__init__.py
|
|
85
85
|
IPython/extensions/autoreload.py
|
|
86
86
|
IPython/extensions/storemagic.py
|
|
87
|
+
IPython/extensions/deduperreload/__init__.py
|
|
87
88
|
IPython/extensions/deduperreload/deduperreload.py
|
|
88
89
|
IPython/extensions/deduperreload/deduperreload_patching.py
|
|
89
90
|
IPython/extensions/tests/test_deduperreload.py
|
|
@@ -158,6 +159,7 @@ IPython/utils/_process_win32.py
|
|
|
158
159
|
IPython/utils/_process_win32_controller.py
|
|
159
160
|
IPython/utils/_sysinfo.py
|
|
160
161
|
IPython/utils/capture.py
|
|
162
|
+
IPython/utils/coloransi.py
|
|
161
163
|
IPython/utils/contexts.py
|
|
162
164
|
IPython/utils/data.py
|
|
163
165
|
IPython/utils/decorators.py
|
|
@@ -429,6 +431,7 @@ tests/test_storemagic.py
|
|
|
429
431
|
tests/test_sysinfo.py
|
|
430
432
|
tests/test_tempdir.py
|
|
431
433
|
tests/test_text.py
|
|
434
|
+
tests/test_tips.py
|
|
432
435
|
tests/test_tokenutil.py
|
|
433
436
|
tests/test_tools.py
|
|
434
437
|
tests/test_ultratb.py
|
|
@@ -165,6 +165,17 @@ disallow_incomplete_defs = false
|
|
|
165
165
|
check_untyped_defs = true
|
|
166
166
|
disallow_untyped_decorators = true
|
|
167
167
|
|
|
168
|
+
[[tool.mypy.overrides]]
|
|
169
|
+
module = [
|
|
170
|
+
"IPython.core.interactiveshell",
|
|
171
|
+
]
|
|
172
|
+
disallow_untyped_defs = false
|
|
173
|
+
ignore_errors = true
|
|
174
|
+
ignore_missing_imports = true
|
|
175
|
+
disallow_untyped_calls = false
|
|
176
|
+
disallow_incomplete_defs = true
|
|
177
|
+
check_untyped_defs = true
|
|
178
|
+
disallow_untyped_decorators = false
|
|
168
179
|
|
|
169
180
|
# gloabl ignore error
|
|
170
181
|
[[tool.mypy.overrides]]
|
|
@@ -192,7 +203,6 @@ module = [
|
|
|
192
203
|
"IPython.core.historyapp",
|
|
193
204
|
"IPython.core.hooks",
|
|
194
205
|
"IPython.core.inputtransformer2",
|
|
195
|
-
"IPython.core.interactiveshell",
|
|
196
206
|
"IPython.core.logger",
|
|
197
207
|
"IPython.core.macro",
|
|
198
208
|
"IPython.core.magic",
|
|
File without changes
|