ipython 8.28.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.28.0 → ipython-8.30.0}/IPython/core/completer.py +5 -5
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/completerlib.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/crashhandler.py +33 -21
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/debugger.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display.py +103 -24
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/formatters.py +92 -33
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/guarded_eval.py +10 -13
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputsplitter.py +2 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputtransformer2.py +4 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/interactiveshell.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/ast_mod.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/basic.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/code.py +3 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/execution.py +15 -5
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/logging.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/packaging.py +17 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/oinspect.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/page.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/prefilter.py +4 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/prompts.py +3 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/pylabtools.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/release.py +5 -14
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/nonascii2.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_completer.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_display.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_formatters.py +1 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2.py +1 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_interactiveshell.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_logger.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_paths.py +10 -8
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_prefilter.py +10 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_run.py +4 -4
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_ultratb.py +7 -6
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/test_storemagic.py +29 -24
- {ipython-8.28.0 → ipython-8.30.0}/IPython/external/qt_loaders.py +1 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/__init__.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/clipboard.py +1 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/latextools.py +4 -4
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/pretty.py +11 -4
- {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/custom_doctests.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/ipython_directive.py +16 -14
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/interactiveshell.py +21 -12
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/__init__.py +8 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_match.py +1 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_suggest.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/filters.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/__init__.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_tools.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tools.py +3 -8
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_cli.py +3 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_win32.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/dir2.py +2 -2
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/frame.py +5 -3
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/sysinfo.py +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/text.py +95 -37
- {ipython-8.28.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.28.0 → ipython-8.30.0}/docs/source/conf.py +1 -2
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/inputtransforms.rst +1 -1
- {ipython-8.28.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.28.0 → ipython-8.30.0}/docs/source/interactive/magics.rst +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/tutorial.rst +1 -2
- 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.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.9.rst +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version7.rst +7 -7
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version8.rst +141 -55
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +1 -1
- ipython-8.30.0/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/SOURCES.txt +124 -0
- {ipython-8.28.0 → ipython-8.30.0}/pyproject.toml +27 -5
- {ipython-8.28.0 → ipython-8.30.0}/setupbase.py +29 -43
- {ipython-8.28.0 → ipython-8.30.0}/.flake8 +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/.mailmap +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/COPYING.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/__main__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/conftest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/consoleapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/alias.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/application.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/autocall.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/error.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/events.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/excolors.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/extensions.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/getipython.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/history.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/hooks.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputtransformer.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/logger.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/macro.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magic.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/payload.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/core/usage.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/display.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/external/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/demo.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/display.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/paths.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/py.typed +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/console.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/tests/cve.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/capture.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/data.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/docs.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/generics.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/io.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/log.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/path.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/process.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/timing.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tz.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/version.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/LICENSE +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/MANIFEST.in +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/README.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/_build_meta.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/Makefile +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/README.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_api.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_config.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_magics.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/make.cmd +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/man/ipython.1 +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/requirements.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/history.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/api/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/details.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/intro.rst +0 -0
- /ipython-8.28.0/examples/IPython Kernel/nbpackage/__init__.py → /ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/config.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/install.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/links.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/overview.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.28.0/examples/IPython Kernel/nbpackage/nbs → ipython-8.30.0/examples/IPython Kernel/nbpackage}/__init__.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/Index.ipynb +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/animation.m4v +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/long_description.rst +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/scripts/ipython.ico +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/setup.cfg +0 -0
- {ipython-8.28.0 → ipython-8.30.0}/setup.py +0 -0
|
@@ -159,7 +159,7 @@ By default results from all matchers are combined, in the order determined by
|
|
|
159
159
|
their priority. Matchers can request to suppress results from subsequent
|
|
160
160
|
matchers by setting ``suppress`` to ``True`` in the ``MatcherResult``.
|
|
161
161
|
|
|
162
|
-
When multiple matchers simultaneously request
|
|
162
|
+
When multiple matchers simultaneously request suppression, the results from of
|
|
163
163
|
the matcher with higher priority will be returned.
|
|
164
164
|
|
|
165
165
|
Sometimes it is desirable to suppress most but not all other matchers;
|
|
@@ -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.
|
|
@@ -2651,7 +2651,7 @@ class IPCompleter(Completer):
|
|
|
2651
2651
|
)
|
|
2652
2652
|
can_close_quote = can_close_quote and self.auto_close_dict_keys
|
|
2653
2653
|
|
|
2654
|
-
# fast path if closing
|
|
2654
|
+
# fast path if closing quote should be appended but not suffix is allowed
|
|
2655
2655
|
if not can_close_quote and not can_close_bracket and closing_quote:
|
|
2656
2656
|
return [leading + k for k in matches]
|
|
2657
2657
|
|
|
@@ -167,7 +167,7 @@ def is_possible_submodule(module, attr):
|
|
|
167
167
|
try:
|
|
168
168
|
obj = getattr(module, attr)
|
|
169
169
|
except AttributeError:
|
|
170
|
-
# Is
|
|
170
|
+
# Is possibly an unimported submodule
|
|
171
171
|
return True
|
|
172
172
|
except TypeError:
|
|
173
173
|
# https://github.com/ipython/ipython/issues/9678
|
|
@@ -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
|
|
|
@@ -19,7 +19,7 @@ Global Configuration
|
|
|
19
19
|
--------------------
|
|
20
20
|
|
|
21
21
|
The IPython debugger will by read the global ``~/.pdbrc`` file.
|
|
22
|
-
That is to say you can list all
|
|
22
|
+
That is to say you can list all commands supported by ipdb in your `~/.pdbrc`
|
|
23
23
|
configuration file, to globally configure pdb.
|
|
24
24
|
|
|
25
25
|
Example::
|
|
@@ -177,7 +177,7 @@ def BdbQuit_excepthook(et, ev, tb, excepthook=None):
|
|
|
177
177
|
parameter.
|
|
178
178
|
"""
|
|
179
179
|
raise ValueError(
|
|
180
|
-
"`BdbQuit_excepthook` is deprecated since version 5.1. It is still
|
|
180
|
+
"`BdbQuit_excepthook` is deprecated since version 5.1. It is still around only because it is still imported by ipdb.",
|
|
181
181
|
)
|
|
182
182
|
|
|
183
183
|
|
|
@@ -16,18 +16,41 @@ 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
|
|
|
23
24
|
|
|
24
|
-
__all__ = [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
__all__ = [
|
|
26
|
+
"display_pretty",
|
|
27
|
+
"display_html",
|
|
28
|
+
"display_markdown",
|
|
29
|
+
"display_svg",
|
|
30
|
+
"display_png",
|
|
31
|
+
"display_jpeg",
|
|
32
|
+
"display_webp",
|
|
33
|
+
"display_latex",
|
|
34
|
+
"display_json",
|
|
35
|
+
"display_javascript",
|
|
36
|
+
"display_pdf",
|
|
37
|
+
"DisplayObject",
|
|
38
|
+
"TextDisplayObject",
|
|
39
|
+
"Pretty",
|
|
40
|
+
"HTML",
|
|
41
|
+
"Markdown",
|
|
42
|
+
"Math",
|
|
43
|
+
"Latex",
|
|
44
|
+
"SVG",
|
|
45
|
+
"ProgressBar",
|
|
46
|
+
"JSON",
|
|
47
|
+
"GeoJSON",
|
|
48
|
+
"Javascript",
|
|
49
|
+
"Image",
|
|
50
|
+
"set_matplotlib_formats",
|
|
51
|
+
"set_matplotlib_close",
|
|
52
|
+
"Video",
|
|
53
|
+
]
|
|
31
54
|
|
|
32
55
|
_deprecated_names = ["display", "clear_output", "publish_display_data", "update_display", "DisplayHandle"]
|
|
33
56
|
|
|
@@ -200,6 +223,23 @@ def display_jpeg(*objs, **kwargs):
|
|
|
200
223
|
_display_mimetype('image/jpeg', objs, **kwargs)
|
|
201
224
|
|
|
202
225
|
|
|
226
|
+
def display_webp(*objs, **kwargs):
|
|
227
|
+
"""Display the WEBP representation of an object.
|
|
228
|
+
|
|
229
|
+
Parameters
|
|
230
|
+
----------
|
|
231
|
+
*objs : object
|
|
232
|
+
The Python objects to display, or if raw=True raw JPEG data to
|
|
233
|
+
display.
|
|
234
|
+
raw : bool
|
|
235
|
+
Are the data objects raw data or Python objects that need to be
|
|
236
|
+
formatted before display? [default: False]
|
|
237
|
+
metadata : dict (optional)
|
|
238
|
+
Metadata to be associated with the specific mimetype output.
|
|
239
|
+
"""
|
|
240
|
+
_display_mimetype("image/webp", objs, **kwargs)
|
|
241
|
+
|
|
242
|
+
|
|
203
243
|
def display_latex(*objs, **kwargs):
|
|
204
244
|
"""Display the LaTeX representation of an object.
|
|
205
245
|
|
|
@@ -479,7 +519,7 @@ class SVG(DisplayObject):
|
|
|
479
519
|
_read_flags = 'rb'
|
|
480
520
|
# wrap data in a property, which extracts the <svg> tag, discarding
|
|
481
521
|
# document headers
|
|
482
|
-
_data = None
|
|
522
|
+
_data: Optional[str] = None
|
|
483
523
|
|
|
484
524
|
@property
|
|
485
525
|
def data(self):
|
|
@@ -501,8 +541,10 @@ class SVG(DisplayObject):
|
|
|
501
541
|
# fallback on the input, trust the user
|
|
502
542
|
# but this is probably an error.
|
|
503
543
|
pass
|
|
504
|
-
|
|
505
|
-
|
|
544
|
+
if isinstance(svg, bytes):
|
|
545
|
+
self._data = svg.decode(errors="replace")
|
|
546
|
+
else:
|
|
547
|
+
self._data = svg
|
|
506
548
|
|
|
507
549
|
def _repr_svg_(self):
|
|
508
550
|
return self._data_and_metadata()
|
|
@@ -776,9 +818,14 @@ class Javascript(TextDisplayObject):
|
|
|
776
818
|
r += _lib_t2*len(self.lib)
|
|
777
819
|
return r
|
|
778
820
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
821
|
+
|
|
822
|
+
# constants for identifying png/jpeg/gif/webp data
|
|
823
|
+
_PNG = b"\x89PNG\r\n\x1a\n"
|
|
824
|
+
_JPEG = b"\xff\xd8"
|
|
825
|
+
_GIF1 = b"GIF87a"
|
|
826
|
+
_GIF2 = b"GIF89a"
|
|
827
|
+
_WEBP = b"WEBP"
|
|
828
|
+
|
|
782
829
|
|
|
783
830
|
def _pngxy(data):
|
|
784
831
|
"""read the (width, height) from a PNG header"""
|
|
@@ -786,6 +833,7 @@ def _pngxy(data):
|
|
|
786
833
|
# next 8 bytes are width/height
|
|
787
834
|
return struct.unpack('>ii', data[ihdr+4:ihdr+12])
|
|
788
835
|
|
|
836
|
+
|
|
789
837
|
def _jpegxy(data):
|
|
790
838
|
"""read the (width, height) from a JPEG header"""
|
|
791
839
|
# adapted from http://www.64lines.com/jpeg-width-height
|
|
@@ -805,22 +853,45 @@ def _jpegxy(data):
|
|
|
805
853
|
h, w = struct.unpack('>HH', data[iSOF+5:iSOF+9])
|
|
806
854
|
return w, h
|
|
807
855
|
|
|
856
|
+
|
|
808
857
|
def _gifxy(data):
|
|
809
858
|
"""read the (width, height) from a GIF header"""
|
|
810
859
|
return struct.unpack('<HH', data[6:10])
|
|
811
860
|
|
|
812
861
|
|
|
862
|
+
def _webpxy(data):
|
|
863
|
+
"""read the (width, height) from a WEBP header"""
|
|
864
|
+
if data[12:16] == b"VP8 ":
|
|
865
|
+
width, height = struct.unpack("<HH", data[24:30])
|
|
866
|
+
width = width & 0x3FFF
|
|
867
|
+
height = height & 0x3FFF
|
|
868
|
+
return (width, height)
|
|
869
|
+
elif data[12:16] == b"VP8L":
|
|
870
|
+
size_info = struct.unpack("<I", data[21:25])[0]
|
|
871
|
+
width = 1 + ((size_info & 0x3F) << 8) | (size_info >> 24)
|
|
872
|
+
height = 1 + (
|
|
873
|
+
(((size_info >> 8) & 0xF) << 10)
|
|
874
|
+
| (((size_info >> 14) & 0x3FC) << 2)
|
|
875
|
+
| ((size_info >> 22) & 0x3)
|
|
876
|
+
)
|
|
877
|
+
return (width, height)
|
|
878
|
+
else:
|
|
879
|
+
raise ValueError("Not a valid WEBP header")
|
|
880
|
+
|
|
881
|
+
|
|
813
882
|
class Image(DisplayObject):
|
|
814
883
|
|
|
815
|
-
_read_flags =
|
|
816
|
-
_FMT_JPEG =
|
|
817
|
-
_FMT_PNG =
|
|
818
|
-
_FMT_GIF =
|
|
819
|
-
|
|
884
|
+
_read_flags = "rb"
|
|
885
|
+
_FMT_JPEG = "jpeg"
|
|
886
|
+
_FMT_PNG = "png"
|
|
887
|
+
_FMT_GIF = "gif"
|
|
888
|
+
_FMT_WEBP = "webp"
|
|
889
|
+
_ACCEPTABLE_EMBEDDINGS = [_FMT_JPEG, _FMT_PNG, _FMT_GIF, _FMT_WEBP]
|
|
820
890
|
_MIMETYPES = {
|
|
821
|
-
_FMT_PNG:
|
|
822
|
-
_FMT_JPEG:
|
|
823
|
-
_FMT_GIF:
|
|
891
|
+
_FMT_PNG: "image/png",
|
|
892
|
+
_FMT_JPEG: "image/jpeg",
|
|
893
|
+
_FMT_GIF: "image/gif",
|
|
894
|
+
_FMT_WEBP: "image/webp",
|
|
824
895
|
}
|
|
825
896
|
|
|
826
897
|
def __init__(
|
|
@@ -837,7 +908,7 @@ class Image(DisplayObject):
|
|
|
837
908
|
metadata=None,
|
|
838
909
|
alt=None,
|
|
839
910
|
):
|
|
840
|
-
"""Create a PNG/JPEG/GIF image object given raw data.
|
|
911
|
+
"""Create a PNG/JPEG/GIF/WEBP image object given raw data.
|
|
841
912
|
|
|
842
913
|
When this object is returned by an input cell or passed to the
|
|
843
914
|
display function, it will result in the image being displayed
|
|
@@ -858,7 +929,7 @@ class Image(DisplayObject):
|
|
|
858
929
|
Images from a file are always embedded.
|
|
859
930
|
|
|
860
931
|
format : unicode
|
|
861
|
-
The format of the image data (png/jpeg/jpg/gif). If a filename or URL is given
|
|
932
|
+
The format of the image data (png/jpeg/jpg/gif/webp). If a filename or URL is given
|
|
862
933
|
for format will be inferred from the filename extension.
|
|
863
934
|
|
|
864
935
|
embed : bool
|
|
@@ -942,6 +1013,8 @@ class Image(DisplayObject):
|
|
|
942
1013
|
format = self._FMT_PNG
|
|
943
1014
|
elif ext == u'gif':
|
|
944
1015
|
format = self._FMT_GIF
|
|
1016
|
+
elif ext == "webp":
|
|
1017
|
+
format = self._FMT_WEBP
|
|
945
1018
|
else:
|
|
946
1019
|
format = ext.lower()
|
|
947
1020
|
elif isinstance(data, bytes):
|
|
@@ -949,6 +1022,12 @@ class Image(DisplayObject):
|
|
|
949
1022
|
# only if format has not been specified.
|
|
950
1023
|
if data[:2] == _JPEG:
|
|
951
1024
|
format = self._FMT_JPEG
|
|
1025
|
+
elif data[:8] == _PNG:
|
|
1026
|
+
format = self._FMT_PNG
|
|
1027
|
+
elif data[8:12] == _WEBP:
|
|
1028
|
+
format = self._FMT_WEBP
|
|
1029
|
+
elif data[:6] == _GIF1 or data[:6] == _GIF2:
|
|
1030
|
+
format = self._FMT_GIF
|
|
952
1031
|
|
|
953
1032
|
# failed to detect format, default png
|
|
954
1033
|
if format is None:
|