ipython 8.29.0__tar.gz → 8.30.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.29.0 → ipython-8.30.0}/IPython/core/completer.py +3 -3
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/crashhandler.py +33 -21
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display.py +7 -4
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/formatters.py +92 -33
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/guarded_eval.py +6 -9
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputsplitter.py +1 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputtransformer2.py +4 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/basic.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/logging.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/prompts.py +3 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/release.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/nonascii2.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_formatters.py +1 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2.py +1 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_interactiveshell.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_logger.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_paths.py +10 -8
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_run.py +3 -3
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_ultratb.py +4 -3
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/test_storemagic.py +29 -24
- {ipython-8.29.0 → ipython-8.30.0}/IPython/external/qt_loaders.py +1 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/__init__.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/clipboard.py +1 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/latextools.py +4 -4
- {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/custom_doctests.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/ipython_directive.py +16 -14
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/interactiveshell.py +21 -12
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/__init__.py +8 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_match.py +1 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/__init__.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_cli.py +3 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_win32.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/dir2.py +2 -2
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/sysinfo.py +1 -1
- {ipython-8.29.0/ipython.egg-info → ipython-8.30.0}/PKG-INFO +1 -1
- ipython-8.30.0/docs/source/api/generated/IPython.conftest.rst +28 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.alias.rst +36 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.application.rst +20 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.async_helpers.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.autocall.rst +24 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.builtin_trap.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.compilerop.rst +25 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.completer.rst +113 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.completerlib.rst +43 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.crashhandler.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.debugger.rst +38 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.error.rst +30 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.events.rst +34 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.excolors.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.extensions.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.formatters.rst +83 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.getipython.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.guarded_eval.rst +31 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.history.rst +44 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.historyapp.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.hooks.rst +34 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputsplitter.rst +58 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer.rst +74 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +88 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.interactiveshell.rst +59 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.logger.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.macro.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magic.rst +59 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magic_arguments.rst +62 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.auto.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.basic.rst +24 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.code.rst +38 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.display.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.execution.rst +38 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.extension.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.history.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.logging.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.namespace.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.osm.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.packaging.rst +20 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.pylab.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.script.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.oinspect.rst +52 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.page.rst +37 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.payload.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.payloadpage.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.prefilter.rst +88 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.profileapp.rst +35 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.profiledir.rst +18 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.prompts.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.pylabtools.rst +40 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.shellapp.rst +20 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.splitinput.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.core.ultratb.rst +72 -0
- ipython-8.30.0/docs/source/api/generated/IPython.display.rst +187 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +34 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.clipboard.rst +29 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.deepreload.rst +37 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.demo.rst +53 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.editorhooks.rst +43 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.guisupport.rst +28 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.latextools.rst +35 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.lexers.rst +38 -0
- ipython-8.30.0/docs/source/api/generated/IPython.lib.pretty.rst +83 -0
- ipython-8.30.0/docs/source/api/generated/IPython.paths.rst +25 -0
- ipython-8.30.0/docs/source/api/generated/IPython.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.debugger.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.embed.rst +30 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +34 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.ipapp.rst +30 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.magics.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.prompts.rst +24 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +46 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +67 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +58 -0
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +76 -0
- ipython-8.30.0/docs/source/api/generated/IPython.testing.decorators.rst +28 -0
- ipython-8.30.0/docs/source/api/generated/IPython.testing.globalipapp.rst +19 -0
- ipython-8.30.0/docs/source/api/generated/IPython.testing.ipunittest.rst +31 -0
- ipython-8.30.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.testing.tools.rst +66 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.PyColorize.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.capture.rst +28 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.colorable.rst +14 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.coloransi.rst +40 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.contexts.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.data.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.decorators.rst +19 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.dir2.rst +19 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.encoding.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.frame.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.generics.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.importstring.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.io.rst +25 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.ipstruct.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.module_paths.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.openpy.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.path.rst +62 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.process.rst +23 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.sentinel.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.shimmodule.rst +26 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.strdispatch.rst +16 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.sysinfo.rst +25 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tempdir.rst +20 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.terminal.rst +25 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.text.rst +69 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.timing.rst +31 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tokenutil.rst +22 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tz.rst +20 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.ulinecache.rst +13 -0
- ipython-8.30.0/docs/source/api/generated/IPython.utils.wildcard.rst +28 -0
- ipython-8.30.0/docs/source/api/generated/gen.txt +119 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/inputtransforms.rst +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/integrating.rst +4 -2
- ipython-8.30.0/docs/source/config/options/kernel.rst +1554 -0
- ipython-8.30.0/docs/source/config/options/terminal.rst +1975 -0
- ipython-8.30.0/docs/source/config/shortcuts/table.tsv +79 -0
- ipython-8.30.0/docs/source/interactive/magics-generated.txt +2506 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/magics.rst +1 -1
- ipython-8.30.0/docs/source/savefig/hist_simple.png +0 -0
- ipython-8.30.0/docs/source/savefig/hist_with_text.png +0 -0
- ipython-8.30.0/docs/source/savefig/plot_simple.png +0 -0
- ipython-8.30.0/docs/source/savefig/plot_simple_python.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version8.rst +91 -50
- ipython-8.30.0/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/SOURCES.txt +124 -0
- {ipython-8.29.0 → ipython-8.30.0}/pyproject.toml +17 -5
- {ipython-8.29.0 → ipython-8.30.0}/.flake8 +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/.mailmap +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/COPYING.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/__main__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/conftest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/consoleapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/alias.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/application.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/autocall.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/debugger.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/error.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/events.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/excolors.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/extensions.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/getipython.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/history.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/hooks.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/interactiveshell.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/logger.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/macro.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magic.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/page.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/payload.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_completer.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/core/usage.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/display.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/external/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/demo.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/display.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/paths.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/py.typed +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/console.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tools.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/tests/cve.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/capture.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/data.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/docs.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/frame.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/generics.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/io.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/log.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/path.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/process.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/text.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/timing.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tz.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/version.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/LICENSE +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/MANIFEST.in +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/README.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/_build_meta.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/Makefile +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/README.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_api.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_config.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_magics.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/make.cmd +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/man/ipython.1 +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/requirements.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/history.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/api/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/conf.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/details.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/intro.rst +0 -0
- /ipython-8.29.0/examples/IPython Kernel/nbpackage/__init__.py → /ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/config.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/install.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/links.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/overview.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.29.0/examples/IPython Kernel/nbpackage/nbs → ipython-8.30.0/examples/IPython Kernel/nbpackage}/__init__.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/Index.ipynb +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/animation.m4v +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/long_description.rst +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/scripts/ipython.ico +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/setup.cfg +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/setup.py +0 -0
- {ipython-8.29.0 → ipython-8.30.0}/setupbase.py +0 -0
|
@@ -1362,9 +1362,9 @@ def match_dict_keys(
|
|
|
1362
1362
|
# All checks passed!
|
|
1363
1363
|
return True
|
|
1364
1364
|
|
|
1365
|
-
filtered_key_is_final: Dict[
|
|
1366
|
-
|
|
1367
|
-
|
|
1365
|
+
filtered_key_is_final: Dict[Union[str, bytes, int, float], _DictKeyState] = (
|
|
1366
|
+
defaultdict(lambda: _DictKeyState.BASELINE)
|
|
1367
|
+
)
|
|
1368
1368
|
|
|
1369
1369
|
for k in keys:
|
|
1370
1370
|
# If at least one of the matches is not final, mark as undetermined.
|
|
@@ -24,14 +24,17 @@ import traceback
|
|
|
24
24
|
from pprint import pformat
|
|
25
25
|
from pathlib import Path
|
|
26
26
|
|
|
27
|
+
import builtins as builtin_mod
|
|
28
|
+
|
|
27
29
|
from IPython.core import ultratb
|
|
30
|
+
from IPython.core.application import Application
|
|
28
31
|
from IPython.core.release import author_email
|
|
29
32
|
from IPython.utils.sysinfo import sys_info
|
|
30
|
-
from IPython.utils.py3compat import input
|
|
31
33
|
|
|
32
34
|
from IPython.core.release import __version__ as version
|
|
33
35
|
|
|
34
|
-
from typing import Optional
|
|
36
|
+
from typing import Optional, Dict
|
|
37
|
+
import types
|
|
35
38
|
|
|
36
39
|
#-----------------------------------------------------------------------------
|
|
37
40
|
# Code
|
|
@@ -84,7 +87,7 @@ Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
|
|
|
84
87
|
"""
|
|
85
88
|
|
|
86
89
|
|
|
87
|
-
class CrashHandler
|
|
90
|
+
class CrashHandler:
|
|
88
91
|
"""Customizable crash handlers for IPython applications.
|
|
89
92
|
|
|
90
93
|
Instances of this class provide a :meth:`__call__` method which can be
|
|
@@ -95,10 +98,11 @@ class CrashHandler(object):
|
|
|
95
98
|
|
|
96
99
|
message_template = _default_message_template
|
|
97
100
|
section_sep = '\n\n'+'*'*75+'\n\n'
|
|
101
|
+
info: Dict[str, Optional[str]]
|
|
98
102
|
|
|
99
103
|
def __init__(
|
|
100
104
|
self,
|
|
101
|
-
app,
|
|
105
|
+
app: Application,
|
|
102
106
|
contact_name: Optional[str] = None,
|
|
103
107
|
contact_email: Optional[str] = None,
|
|
104
108
|
bug_tracker: Optional[str] = None,
|
|
@@ -142,10 +146,14 @@ class CrashHandler(object):
|
|
|
142
146
|
bug_tracker = bug_tracker,
|
|
143
147
|
crash_report_fname = self.crash_report_fname)
|
|
144
148
|
|
|
145
|
-
|
|
146
|
-
|
|
149
|
+
def __call__(
|
|
150
|
+
self,
|
|
151
|
+
etype: type[BaseException],
|
|
152
|
+
evalue: BaseException,
|
|
153
|
+
etb: types.TracebackType,
|
|
154
|
+
) -> None:
|
|
147
155
|
"""Handle an exception, call for compatible with sys.excepthook"""
|
|
148
|
-
|
|
156
|
+
|
|
149
157
|
# do not allow the crash handler to be called twice without reinstalling it
|
|
150
158
|
# this prevents unlikely errors in the crash handling from entering an
|
|
151
159
|
# infinite loop.
|
|
@@ -155,21 +163,23 @@ class CrashHandler(object):
|
|
|
155
163
|
color_scheme = 'NoColor'
|
|
156
164
|
|
|
157
165
|
# Use this ONLY for developer debugging (keep commented out for release)
|
|
158
|
-
#color_scheme = 'Linux' # dbg
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
# color_scheme = 'Linux' # dbg
|
|
167
|
+
ipython_dir = getattr(self.app, "ipython_dir", None)
|
|
168
|
+
if ipython_dir is not None:
|
|
169
|
+
assert isinstance(ipython_dir, str)
|
|
170
|
+
rptdir = Path(ipython_dir)
|
|
171
|
+
else:
|
|
162
172
|
rptdir = Path.cwd()
|
|
163
|
-
if
|
|
173
|
+
if not rptdir.is_dir():
|
|
164
174
|
rptdir = Path.cwd()
|
|
165
175
|
report_name = rptdir / self.crash_report_fname
|
|
166
176
|
# write the report filename into the instance dict so it can get
|
|
167
177
|
# properly expanded out in the user message template
|
|
168
|
-
self.crash_report_fname = report_name
|
|
169
|
-
self.info[
|
|
178
|
+
self.crash_report_fname = str(report_name)
|
|
179
|
+
self.info["crash_report_fname"] = str(report_name)
|
|
170
180
|
TBhandler = ultratb.VerboseTB(
|
|
171
181
|
color_scheme=color_scheme,
|
|
172
|
-
long_header=
|
|
182
|
+
long_header=True,
|
|
173
183
|
call_pdb=self.call_pdb,
|
|
174
184
|
)
|
|
175
185
|
if self.call_pdb:
|
|
@@ -195,11 +205,11 @@ class CrashHandler(object):
|
|
|
195
205
|
print(self.message_template.format(**self.info), file=sys.stderr)
|
|
196
206
|
|
|
197
207
|
# Construct report on disk
|
|
198
|
-
report.write(self.make_report(traceback))
|
|
208
|
+
report.write(self.make_report(str(traceback)))
|
|
199
209
|
|
|
200
|
-
input("Hit <Enter> to quit (your terminal may close):")
|
|
210
|
+
builtin_mod.input("Hit <Enter> to quit (your terminal may close):")
|
|
201
211
|
|
|
202
|
-
def make_report(self,traceback):
|
|
212
|
+
def make_report(self, traceback: str) -> str:
|
|
203
213
|
"""Return a string containing a crash report."""
|
|
204
214
|
|
|
205
215
|
sec_sep = self.section_sep
|
|
@@ -211,8 +221,8 @@ class CrashHandler(object):
|
|
|
211
221
|
try:
|
|
212
222
|
config = pformat(self.app.config)
|
|
213
223
|
rpt_add(sec_sep)
|
|
214
|
-
rpt_add(
|
|
215
|
-
rpt_add(
|
|
224
|
+
rpt_add("Application name: %s\n\n" % self.app.name)
|
|
225
|
+
rpt_add("Current user configuration structure:\n\n")
|
|
216
226
|
rpt_add(config)
|
|
217
227
|
except:
|
|
218
228
|
pass
|
|
@@ -221,7 +231,9 @@ class CrashHandler(object):
|
|
|
221
231
|
return ''.join(report)
|
|
222
232
|
|
|
223
233
|
|
|
224
|
-
def crash_handler_lite(
|
|
234
|
+
def crash_handler_lite(
|
|
235
|
+
etype: type[BaseException], evalue: BaseException, tb: types.TracebackType
|
|
236
|
+
) -> None:
|
|
225
237
|
"""a light excepthook, adding a small message to the usual traceback"""
|
|
226
238
|
traceback.print_exception(etype, evalue, tb)
|
|
227
239
|
|
|
@@ -16,7 +16,8 @@ from copy import deepcopy
|
|
|
16
16
|
from os.path import splitext
|
|
17
17
|
from pathlib import Path, PurePath
|
|
18
18
|
|
|
19
|
-
from
|
|
19
|
+
from typing import Optional
|
|
20
|
+
|
|
20
21
|
from IPython.testing.skipdoctest import skip_doctest
|
|
21
22
|
from . import display_functions
|
|
22
23
|
|
|
@@ -518,7 +519,7 @@ class SVG(DisplayObject):
|
|
|
518
519
|
_read_flags = 'rb'
|
|
519
520
|
# wrap data in a property, which extracts the <svg> tag, discarding
|
|
520
521
|
# document headers
|
|
521
|
-
_data = None
|
|
522
|
+
_data: Optional[str] = None
|
|
522
523
|
|
|
523
524
|
@property
|
|
524
525
|
def data(self):
|
|
@@ -540,8 +541,10 @@ class SVG(DisplayObject):
|
|
|
540
541
|
# fallback on the input, trust the user
|
|
541
542
|
# but this is probably an error.
|
|
542
543
|
pass
|
|
543
|
-
|
|
544
|
-
|
|
544
|
+
if isinstance(svg, bytes):
|
|
545
|
+
self._data = svg.decode(errors="replace")
|
|
546
|
+
else:
|
|
547
|
+
self._data = svg
|
|
545
548
|
|
|
546
549
|
def _repr_svg_(self):
|
|
547
550
|
return self._data_and_metadata()
|
|
@@ -1,6 +1,61 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""Display formatters.
|
|
3
3
|
|
|
4
|
+
This module defines the base instances in order to implement custom
|
|
5
|
+
formatters/mimetypes
|
|
6
|
+
got objects:
|
|
7
|
+
|
|
8
|
+
As we want to see internal IPython working we are going to use the following
|
|
9
|
+
function to diaply objects instead of the normal print or display method:
|
|
10
|
+
|
|
11
|
+
>>> ip = get_ipython()
|
|
12
|
+
>>> ip.display_formatter.format(...)
|
|
13
|
+
({'text/plain': 'Ellipsis'}, {})
|
|
14
|
+
|
|
15
|
+
This return a tuple with the mimebumdle for the current object, and the
|
|
16
|
+
associated metadata.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
We can now define our own formatter and register it:
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
>>> from IPython.core.formatters import BaseFormatter, FormatterABC
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
>>> class LLMFormatter(BaseFormatter):
|
|
26
|
+
...
|
|
27
|
+
... format_type = 'x-vendor/llm'
|
|
28
|
+
... print_method = '_repr_llm_'
|
|
29
|
+
... _return_type = (dict, str)
|
|
30
|
+
|
|
31
|
+
>>> llm_formatter = LLMFormatter(parent=ip.display_formatter)
|
|
32
|
+
|
|
33
|
+
>>> ip.display_formatter.formatters[LLMFormatter.format_type] = llm_formatter
|
|
34
|
+
|
|
35
|
+
Now any class that define `_repr_llm_` will return a x-vendor/llm as part of
|
|
36
|
+
it's display data:
|
|
37
|
+
|
|
38
|
+
>>> class A:
|
|
39
|
+
...
|
|
40
|
+
... def _repr_llm_(self, *kwargs):
|
|
41
|
+
... return 'This a A'
|
|
42
|
+
...
|
|
43
|
+
|
|
44
|
+
>>> ip.display_formatter.format(A())
|
|
45
|
+
({'text/plain': '<IPython.core.formatters.A at ...>', 'x-vendor/llm': 'This a A'}, {})
|
|
46
|
+
|
|
47
|
+
As usual, you can register methods for third party types (see
|
|
48
|
+
:ref:`third_party_formatting`)
|
|
49
|
+
|
|
50
|
+
>>> def llm_int(obj):
|
|
51
|
+
... return 'This is the integer %s, in between %s and %s'%(obj, obj-1, obj+1)
|
|
52
|
+
|
|
53
|
+
>>> llm_formatter.for_type(int, llm_int)
|
|
54
|
+
|
|
55
|
+
>>> ip.display_formatter.format(42)
|
|
56
|
+
({'text/plain': '42', 'x-vendor/llm': 'This is the integer 42, in between 41 and 43'}, {})
|
|
57
|
+
|
|
58
|
+
|
|
4
59
|
Inheritance diagram:
|
|
5
60
|
|
|
6
61
|
.. inheritance-diagram:: IPython.core.formatters
|
|
@@ -37,9 +92,10 @@ class DisplayFormatter(Configurable):
|
|
|
37
92
|
active_types = List(Unicode(),
|
|
38
93
|
help="""List of currently active mime-types to display.
|
|
39
94
|
You can use this to set a white-list for formats to display.
|
|
40
|
-
|
|
95
|
+
|
|
41
96
|
Most users will not need to change this value.
|
|
42
|
-
"""
|
|
97
|
+
""",
|
|
98
|
+
).tag(config=True)
|
|
43
99
|
|
|
44
100
|
@default('active_types')
|
|
45
101
|
def _active_types_default(self):
|
|
@@ -144,7 +200,7 @@ class DisplayFormatter(Configurable):
|
|
|
144
200
|
"""
|
|
145
201
|
format_dict = {}
|
|
146
202
|
md_dict = {}
|
|
147
|
-
|
|
203
|
+
|
|
148
204
|
if self.ipython_display_formatter(obj):
|
|
149
205
|
# object handled itself, don't proceed
|
|
150
206
|
return {}, {}
|
|
@@ -176,18 +232,18 @@ class DisplayFormatter(Configurable):
|
|
|
176
232
|
continue
|
|
177
233
|
if exclude and format_type in exclude:
|
|
178
234
|
continue
|
|
179
|
-
|
|
235
|
+
|
|
180
236
|
md = None
|
|
181
237
|
try:
|
|
182
238
|
data = formatter(obj)
|
|
183
239
|
except:
|
|
184
240
|
# FIXME: log the exception
|
|
185
241
|
raise
|
|
186
|
-
|
|
242
|
+
|
|
187
243
|
# formatters can return raw data or (data, metadata)
|
|
188
244
|
if isinstance(data, tuple) and len(data) == 2:
|
|
189
245
|
data, md = data
|
|
190
|
-
|
|
246
|
+
|
|
191
247
|
if data is not None:
|
|
192
248
|
format_dict[format_type] = data
|
|
193
249
|
if md is not None:
|
|
@@ -252,7 +308,7 @@ class FormatterABC(metaclass=abc.ABCMeta):
|
|
|
252
308
|
|
|
253
309
|
# Is the formatter enabled...
|
|
254
310
|
enabled = True
|
|
255
|
-
|
|
311
|
+
|
|
256
312
|
@abc.abstractmethod
|
|
257
313
|
def __call__(self, obj):
|
|
258
314
|
"""Return a JSON'able representation of the object.
|
|
@@ -278,12 +334,15 @@ def _get_type(obj):
|
|
|
278
334
|
return getattr(obj, '__class__', None) or type(obj)
|
|
279
335
|
|
|
280
336
|
|
|
281
|
-
_raise_key_error = Sentinel(
|
|
282
|
-
""
|
|
337
|
+
_raise_key_error = Sentinel(
|
|
338
|
+
"_raise_key_error",
|
|
339
|
+
__name__,
|
|
340
|
+
"""
|
|
283
341
|
Special value to raise a KeyError
|
|
284
342
|
|
|
285
343
|
Raise KeyError in `BaseFormatter.pop` if passed as the default value to `pop`
|
|
286
|
-
"""
|
|
344
|
+
""",
|
|
345
|
+
)
|
|
287
346
|
|
|
288
347
|
|
|
289
348
|
class BaseFormatter(Configurable):
|
|
@@ -329,7 +388,7 @@ class BaseFormatter(Configurable):
|
|
|
329
388
|
# The deferred-import type-specific printers.
|
|
330
389
|
# Map (modulename, classname) pairs to the format functions.
|
|
331
390
|
deferred_printers = Dict().tag(config=True)
|
|
332
|
-
|
|
391
|
+
|
|
333
392
|
@catch_format_error
|
|
334
393
|
def __call__(self, obj):
|
|
335
394
|
"""Compute the format for an object."""
|
|
@@ -348,7 +407,7 @@ class BaseFormatter(Configurable):
|
|
|
348
407
|
return None
|
|
349
408
|
else:
|
|
350
409
|
return None
|
|
351
|
-
|
|
410
|
+
|
|
352
411
|
def __contains__(self, typ):
|
|
353
412
|
"""map in to lookup_by_type"""
|
|
354
413
|
try:
|
|
@@ -357,7 +416,7 @@ class BaseFormatter(Configurable):
|
|
|
357
416
|
return False
|
|
358
417
|
else:
|
|
359
418
|
return True
|
|
360
|
-
|
|
419
|
+
|
|
361
420
|
def _check_return(self, r, obj):
|
|
362
421
|
"""Check that a return value is appropriate
|
|
363
422
|
|
|
@@ -372,7 +431,7 @@ class BaseFormatter(Configurable):
|
|
|
372
431
|
(self.format_type, type(r), self._return_type, _safe_repr(obj)),
|
|
373
432
|
FormatterWarning
|
|
374
433
|
)
|
|
375
|
-
|
|
434
|
+
|
|
376
435
|
def lookup(self, obj):
|
|
377
436
|
"""Look up the formatter for a given instance.
|
|
378
437
|
|
|
@@ -395,7 +454,7 @@ class BaseFormatter(Configurable):
|
|
|
395
454
|
return self.singleton_printers[obj_id]
|
|
396
455
|
# then lookup by type
|
|
397
456
|
return self.lookup_by_type(_get_type(obj))
|
|
398
|
-
|
|
457
|
+
|
|
399
458
|
def lookup_by_type(self, typ):
|
|
400
459
|
"""Look up the registered formatter for a type.
|
|
401
460
|
|
|
@@ -426,7 +485,7 @@ class BaseFormatter(Configurable):
|
|
|
426
485
|
for cls in pretty._get_mro(typ):
|
|
427
486
|
if cls in self.type_printers or self._in_deferred_types(cls):
|
|
428
487
|
return self.type_printers[cls]
|
|
429
|
-
|
|
488
|
+
|
|
430
489
|
# If we have reached here, the lookup failed.
|
|
431
490
|
raise KeyError("No registered printer for {0!r}".format(typ))
|
|
432
491
|
|
|
@@ -459,15 +518,15 @@ class BaseFormatter(Configurable):
|
|
|
459
518
|
if isinstance(typ, str):
|
|
460
519
|
type_module, type_name = typ.rsplit('.', 1)
|
|
461
520
|
return self.for_type_by_name(type_module, type_name, func)
|
|
462
|
-
|
|
521
|
+
|
|
463
522
|
try:
|
|
464
523
|
oldfunc = self.lookup_by_type(typ)
|
|
465
524
|
except KeyError:
|
|
466
525
|
oldfunc = None
|
|
467
|
-
|
|
526
|
+
|
|
468
527
|
if func is not None:
|
|
469
528
|
self.type_printers[typ] = func
|
|
470
|
-
|
|
529
|
+
|
|
471
530
|
return oldfunc
|
|
472
531
|
|
|
473
532
|
def for_type_by_name(self, type_module, type_name, func=None):
|
|
@@ -501,16 +560,16 @@ class BaseFormatter(Configurable):
|
|
|
501
560
|
this will be the previous value (to enable restoring later).
|
|
502
561
|
"""
|
|
503
562
|
key = (type_module, type_name)
|
|
504
|
-
|
|
563
|
+
|
|
505
564
|
try:
|
|
506
565
|
oldfunc = self.lookup_by_type("%s.%s" % key)
|
|
507
566
|
except KeyError:
|
|
508
567
|
oldfunc = None
|
|
509
|
-
|
|
568
|
+
|
|
510
569
|
if func is not None:
|
|
511
570
|
self.deferred_printers[key] = func
|
|
512
571
|
return oldfunc
|
|
513
|
-
|
|
572
|
+
|
|
514
573
|
def pop(self, typ, default=_raise_key_error):
|
|
515
574
|
"""Pop a formatter for the given type.
|
|
516
575
|
|
|
@@ -529,7 +588,7 @@ class BaseFormatter(Configurable):
|
|
|
529
588
|
------
|
|
530
589
|
KeyError if the type is not registered and default is not specified.
|
|
531
590
|
"""
|
|
532
|
-
|
|
591
|
+
|
|
533
592
|
if isinstance(typ, str):
|
|
534
593
|
typ_key = tuple(typ.rsplit('.',1))
|
|
535
594
|
if typ_key not in self.deferred_printers:
|
|
@@ -599,14 +658,14 @@ class PlainTextFormatter(BaseFormatter):
|
|
|
599
658
|
# This subclass ignores this attribute as it always need to return
|
|
600
659
|
# something.
|
|
601
660
|
enabled = Bool(True).tag(config=False)
|
|
602
|
-
|
|
661
|
+
|
|
603
662
|
max_seq_length = Integer(pretty.MAX_SEQ_LENGTH,
|
|
604
663
|
help="""Truncate large collections (lists, dicts, tuples, sets) to this size.
|
|
605
|
-
|
|
664
|
+
|
|
606
665
|
Set to 0 to disable truncation.
|
|
607
|
-
"""
|
|
666
|
+
""",
|
|
608
667
|
).tag(config=True)
|
|
609
|
-
|
|
668
|
+
|
|
610
669
|
# Look for a _repr_pretty_ methods to use for pretty printing.
|
|
611
670
|
print_method = ObjectName('_repr_pretty_')
|
|
612
671
|
|
|
@@ -775,7 +834,7 @@ class PNGFormatter(BaseFormatter):
|
|
|
775
834
|
format_type = Unicode('image/png')
|
|
776
835
|
|
|
777
836
|
print_method = ObjectName('_repr_png_')
|
|
778
|
-
|
|
837
|
+
|
|
779
838
|
_return_type = (bytes, str)
|
|
780
839
|
|
|
781
840
|
|
|
@@ -829,7 +888,7 @@ class JSONFormatter(BaseFormatter):
|
|
|
829
888
|
_return_type = (list, dict)
|
|
830
889
|
|
|
831
890
|
print_method = ObjectName('_repr_json_')
|
|
832
|
-
|
|
891
|
+
|
|
833
892
|
def _check_return(self, r, obj):
|
|
834
893
|
"""Check that a return value is appropriate
|
|
835
894
|
|
|
@@ -887,19 +946,19 @@ class PDFFormatter(BaseFormatter):
|
|
|
887
946
|
|
|
888
947
|
class IPythonDisplayFormatter(BaseFormatter):
|
|
889
948
|
"""An escape-hatch Formatter for objects that know how to display themselves.
|
|
890
|
-
|
|
949
|
+
|
|
891
950
|
To define the callables that compute the representation of your
|
|
892
951
|
objects, define a :meth:`_ipython_display_` method or use the :meth:`for_type`
|
|
893
952
|
or :meth:`for_type_by_name` methods to register functions that handle
|
|
894
953
|
this. Unlike mime-type displays, this method should not return anything,
|
|
895
954
|
instead calling any appropriate display methods itself.
|
|
896
|
-
|
|
955
|
+
|
|
897
956
|
This display formatter has highest priority.
|
|
898
957
|
If it fires, no other display formatter will be called.
|
|
899
958
|
|
|
900
959
|
Prior to IPython 6.1, `_ipython_display_` was the only way to display custom mime-types
|
|
901
960
|
without registering a new Formatter.
|
|
902
|
-
|
|
961
|
+
|
|
903
962
|
IPython 6.1 introduces `_repr_mimebundle_` for displaying custom mime-types,
|
|
904
963
|
so `_ipython_display_` should only be used for objects that require unusual
|
|
905
964
|
display patterns, such as multiple display calls.
|
|
@@ -943,7 +1002,7 @@ class MimeBundleFormatter(BaseFormatter):
|
|
|
943
1002
|
"""
|
|
944
1003
|
print_method = ObjectName('_repr_mimebundle_')
|
|
945
1004
|
_return_type = dict
|
|
946
|
-
|
|
1005
|
+
|
|
947
1006
|
def _check_return(self, r, obj):
|
|
948
1007
|
r = super(MimeBundleFormatter, self)._check_return(r, obj)
|
|
949
1008
|
# always return (data, metadata):
|
|
@@ -44,20 +44,17 @@ else:
|
|
|
44
44
|
|
|
45
45
|
@undoc
|
|
46
46
|
class HasGetItem(Protocol):
|
|
47
|
-
def __getitem__(self, key) -> None:
|
|
48
|
-
...
|
|
47
|
+
def __getitem__(self, key) -> None: ...
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
@undoc
|
|
52
51
|
class InstancesHaveGetItem(Protocol):
|
|
53
|
-
def __call__(self, *args, **kwargs) -> HasGetItem:
|
|
54
|
-
...
|
|
52
|
+
def __call__(self, *args, **kwargs) -> HasGetItem: ...
|
|
55
53
|
|
|
56
54
|
|
|
57
55
|
@undoc
|
|
58
56
|
class HasGetAttr(Protocol):
|
|
59
|
-
def __getattr__(self, key) -> None:
|
|
60
|
-
...
|
|
57
|
+
def __getattr__(self, key) -> None: ...
|
|
61
58
|
|
|
62
59
|
|
|
63
60
|
@undoc
|
|
@@ -329,9 +326,9 @@ class EvaluationContext(NamedTuple):
|
|
|
329
326
|
#: Global namespace
|
|
330
327
|
globals: dict
|
|
331
328
|
#: Evaluation policy identifier
|
|
332
|
-
evaluation: Literal[
|
|
333
|
-
"forbidden"
|
|
334
|
-
|
|
329
|
+
evaluation: Literal["forbidden", "minimal", "limited", "unsafe", "dangerous"] = (
|
|
330
|
+
"forbidden"
|
|
331
|
+
)
|
|
335
332
|
#: Whether the evaluation of code takes place inside of a subscript.
|
|
336
333
|
#: Useful for evaluating ``:-1, 'col'`` in ``df[:-1, 'col']``.
|
|
337
334
|
in_subscript: bool = False
|
|
@@ -395,7 +395,10 @@ def _tr_quote2(content):
|
|
|
395
395
|
|
|
396
396
|
def _tr_paren(content):
|
|
397
397
|
"Translate lines escaped with a slash: /"
|
|
398
|
-
name, _, args = content.partition(
|
|
398
|
+
name, _, args = content.partition(" ")
|
|
399
|
+
if name == "":
|
|
400
|
+
raise SyntaxError(f'"{ESC_SHELL}" must be followed by a callable name')
|
|
401
|
+
|
|
399
402
|
return '%s(%s)' % (name, ", ".join(args.split()))
|
|
400
403
|
|
|
401
404
|
tr = { ESC_SHELL : 'get_ipython().system({!r})'.format,
|
|
@@ -461,7 +461,7 @@ Currently the magic system has the following functions:""",
|
|
|
461
461
|
ptformatter.pprint = False
|
|
462
462
|
disp_formatter.active_types = ['text/plain']
|
|
463
463
|
|
|
464
|
-
shell.
|
|
464
|
+
shell.run_line_magic("xmode", "Plain")
|
|
465
465
|
else:
|
|
466
466
|
# turn off
|
|
467
467
|
shell.separate_in = dstore.rc_separate_in
|
|
@@ -472,7 +472,7 @@ Currently the magic system has the following functions:""",
|
|
|
472
472
|
ptformatter.pprint = dstore.rc_pprint
|
|
473
473
|
disp_formatter.active_types = dstore.rc_active_types
|
|
474
474
|
|
|
475
|
-
shell.
|
|
475
|
+
shell.run_line_magic("xmode", dstore.xmode)
|
|
476
476
|
|
|
477
477
|
# mode here is the state before we switch; switch_doctest_mode takes
|
|
478
478
|
# the mode we're switching to.
|
|
@@ -83,14 +83,14 @@ class LoggingMagics(Magics):
|
|
|
83
83
|
log 'raw' input. Normally, IPython's logs contain the processed
|
|
84
84
|
input, so that user lines are logged in their final form, converted
|
|
85
85
|
into valid Python. For example, %Exit is logged as
|
|
86
|
-
_ip.
|
|
86
|
+
_ip.run_line_magic("Exit"). If the -r flag is given, all input is logged
|
|
87
87
|
exactly as typed, with no transformations applied.
|
|
88
88
|
|
|
89
89
|
-t
|
|
90
90
|
put timestamps before each input line logged (these are put in
|
|
91
91
|
comments).
|
|
92
92
|
|
|
93
|
-
-q
|
|
93
|
+
-q
|
|
94
94
|
suppress output of logstate message when logging is invoked
|
|
95
95
|
"""
|
|
96
96
|
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
"""Being removed
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
class LazyEvaluate(object):
|
|
6
7
|
"""This is used for formatting strings with values that need to be updated
|
|
7
8
|
at that time, such as the current time or working directory."""
|
|
9
|
+
|
|
8
10
|
def __init__(self, func, *args, **kwargs):
|
|
9
11
|
self.func = func
|
|
10
12
|
self.args = args
|
|
@@ -16,6 +18,6 @@ class LazyEvaluate(object):
|
|
|
16
18
|
|
|
17
19
|
def __str__(self):
|
|
18
20
|
return str(self())
|
|
19
|
-
|
|
21
|
+
|
|
20
22
|
def __format__(self, format_spec):
|
|
21
23
|
return format(self(), format_spec)
|
|
@@ -535,8 +535,7 @@ def test_custom_repr_namedtuple_partialmethod():
|
|
|
535
535
|
from functools import partialmethod
|
|
536
536
|
from typing import NamedTuple
|
|
537
537
|
|
|
538
|
-
class Foo(NamedTuple):
|
|
539
|
-
...
|
|
538
|
+
class Foo(NamedTuple): ...
|
|
540
539
|
|
|
541
540
|
Foo.__repr__ = partialmethod(lambda obj: "Hello World")
|
|
542
541
|
foo = Foo()
|
|
@@ -21,7 +21,7 @@ def test_logstart_unicode():
|
|
|
21
21
|
logfname = os.path.join(tdir, "test_unicode.log")
|
|
22
22
|
_ip.run_cell("'abc€'")
|
|
23
23
|
try:
|
|
24
|
-
_ip.
|
|
24
|
+
_ip.run_line_magic("logstart", "-to %s" % logfname)
|
|
25
25
|
_ip.run_cell("'abc€'")
|
|
26
26
|
finally:
|
|
27
27
|
_ip.logger.logstop()
|
|
@@ -827,7 +827,7 @@ def test_prun_special_syntax():
|
|
|
827
827
|
@dec.skipif(execution.profile is None)
|
|
828
828
|
def test_prun_quotes():
|
|
829
829
|
"Test that prun does not clobber string escapes (GH #1302)"
|
|
830
|
-
_ip.
|
|
830
|
+
_ip.run_line_magic("prun", r"-q x = '\t'")
|
|
831
831
|
assert _ip.user_ns["x"] == "\t"
|
|
832
832
|
|
|
833
833
|
|
|
@@ -838,7 +838,7 @@ def test_extension():
|
|
|
838
838
|
print(' ', p)
|
|
839
839
|
print('CWD', os.getcwd())
|
|
840
840
|
|
|
841
|
-
pytest.raises(ImportError, _ip.
|
|
841
|
+
pytest.raises(ImportError, _ip.run_line_magic, "load_ext", "daft_extension")
|
|
842
842
|
daft_path = os.path.join(os.path.dirname(__file__), "daft_extension")
|
|
843
843
|
sys.path.insert(0, daft_path)
|
|
844
844
|
try:
|