ipython 9.1.0__tar.gz → 9.3.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-9.1.0 → ipython-9.3.0}/IPython/__init__.py +5 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/completer.py +93 -7
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/guarded_eval.py +23 -8
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/interactiveshell.py +23 -18
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/execution.py +27 -21
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/release.py +1 -1
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/interactiveshell.py +8 -5
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/shortcuts/auto_suggest.py +33 -17
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-9.1.0/ipython.egg-info → ipython-9.3.0}/PKG-INFO +1 -1
- ipython-9.3.0/docs/source/api/generated/IPython.core.alias.rst +36 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.application.rst +20 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.async_helpers.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.autocall.rst +24 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.builtin_trap.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.compilerop.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.completer.rst +107 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.completerlib.rst +43 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.crashhandler.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.debugger.rst +35 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.doctb.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.error.rst +30 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.events.rst +34 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.extensions.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.formatters.rst +83 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.getipython.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.guarded_eval.rst +34 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.history.rst +59 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.historyapp.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.hooks.rst +31 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +85 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.interactiveshell.rst +56 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.logger.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.macro.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magic.rst +59 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magic_arguments.rst +62 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.auto.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.basic.rst +24 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.code.rst +38 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.config.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.display.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.execution.rst +38 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.extension.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.history.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.logging.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.namespace.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.osm.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.packaging.rst +20 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.pylab.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.magics.script.rst +26 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.oinspect.rst +52 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.page.rst +37 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.payload.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.payloadpage.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.prefilter.rst +88 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.profileapp.rst +35 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.profiledir.rst +18 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.pylabtools.rst +37 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.shellapp.rst +20 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.splitinput.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.tbtools.rst +40 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.tips.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.core.ultratb.rst +42 -0
- ipython-9.3.0/docs/source/api/generated/IPython.display.rst +181 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +34 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.clipboard.rst +29 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.deepreload.rst +37 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.demo.rst +53 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.editorhooks.rst +43 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.guisupport.rst +28 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.latextools.rst +35 -0
- ipython-9.3.0/docs/source/api/generated/IPython.lib.pretty.rst +83 -0
- ipython-9.3.0/docs/source/api/generated/IPython.paths.rst +25 -0
- ipython-9.3.0/docs/source/api/generated/IPython.rst +19 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.debugger.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.embed.rst +30 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +34 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.ipapp.rst +30 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.magics.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.prompts.rst +24 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +46 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +67 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +58 -0
- ipython-9.3.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +76 -0
- ipython-9.3.0/docs/source/api/generated/IPython.testing.decorators.rst +25 -0
- ipython-9.3.0/docs/source/api/generated/IPython.testing.globalipapp.rst +19 -0
- ipython-9.3.0/docs/source/api/generated/IPython.testing.ipunittest.rst +31 -0
- ipython-9.3.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.testing.tools.rst +60 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.PyColorize.rst +26 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.capture.rst +28 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.coloransi.rst +14 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.contexts.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.data.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.decorators.rst +19 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.dir2.rst +19 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.encoding.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.frame.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.generics.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.importstring.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.io.rst +25 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.ipstruct.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.module_paths.rst +13 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.openpy.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.path.rst +56 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.process.rst +23 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.sentinel.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.strdispatch.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.sysinfo.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +16 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.tempdir.rst +20 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.terminal.rst +22 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.text.rst +54 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.timing.rst +31 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.tokenutil.rst +29 -0
- ipython-9.3.0/docs/source/api/generated/IPython.utils.wildcard.rst +28 -0
- ipython-9.3.0/docs/source/api/generated/gen.txt +113 -0
- ipython-9.3.0/docs/source/config/options/terminal.rst +2072 -0
- ipython-9.3.0/docs/source/config/shortcuts/table.tsv +79 -0
- ipython-9.3.0/docs/source/interactive/magics-generated.txt +2489 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/reference.rst +8 -3
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version8.rst +58 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version9.rst +41 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/auto_suggest_llm.py +2 -2
- {ipython-9.1.0 → ipython-9.3.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/SOURCES.txt +113 -0
- {ipython-9.1.0 → ipython-9.3.0}/pyproject.toml +10 -2
- ipython-9.3.0/tests/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/fake_llm.py +16 -2
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_completer.py +61 -1
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_guarded_eval.py +25 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_magic.py +20 -2
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_shortcuts.py +20 -3
- {ipython-9.1.0 → ipython-9.3.0}/.flake8 +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/.mailmap +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/.pre-commit-config.yaml +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/COPYING.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/__main__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/alias.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/application.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/async_helpers.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/autocall.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/compilerop.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/completerlib.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/crashhandler.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/debugger.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/display.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/display_functions.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/display_trap.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/displayhook.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/displaypub.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/doctb.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/error.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/events.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/extensions.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/formatters.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/getipython.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/history.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/historyapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/hooks.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/logger.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/macro.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magic.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/auto.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/basic.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/code.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/config.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/display.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/extension.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/history.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/logging.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/osm.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/magics/script.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/oinspect.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/page.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/payload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/payloadpage.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/prefilter.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/profileapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/profiledir.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/pylabtools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/shellapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/splitinput.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/tbtools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/tips.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/ultratb.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/core/usage.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/display.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/deduperreload/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/deduperreload/deduperreload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/deduperreload/deduperreload_patching.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/extensions/tests/test_deduperreload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/external/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/external/pickleshare.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/clipboard.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/deepreload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/demo.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/display.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/guisupport.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/latextools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/lexers.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/lib/pretty.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/paths.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/py.typed +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/debugger.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/embed.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/magics.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/prompts.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/decorators.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/testing/tools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/__init__.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_common.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/capture.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/coloransi.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/contexts.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/data.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/decorators.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/dir2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/docs.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/encoding.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/eventful.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/frame.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/generics.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/importstring.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/io.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/log.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/module_paths.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/openpy.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/path.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/process.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/py3compat.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/sentinel.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/tempdir.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/terminal.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/text.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/timing.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/IPython/utils/wildcard.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/LICENSE +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/MANIFEST.in +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/README.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/_build_meta.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/Makefile +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/README.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/autogen_api.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/autogen_config.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/autogen_magics.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/make.cmd +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/man/ipython.1 +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/requirements.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_static/logo.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/about/history.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/about/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/api/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/conf.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/details.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/inputtransforms.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/integrating.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/intro.rst +0 -0
- /ipython-9.1.0/tests/__init__.py → /ipython-9.3.0/docs/source/config/options/config-generated.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/options/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/coredev/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/config.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/execution.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/kernels.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/messaging.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/install/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/install/install.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/links.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/overview.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/parallel/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/sphinx.toml +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/sphinxext.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/sphinxext/github.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/docs/sphinxext/magics.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/long_description.rst +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/scripts/ipython.ico +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/scripts/ipython_nb.ico +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/setup.cfg +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/setup.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/setupbase.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/2x2.jpg +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/2x2.png +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/bad_all.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/conftest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/cve.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/fake_ext_dir/daft_extension.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/nonascii.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/nonascii2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/print_argv.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/refbug.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/simpleerr.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/tclass.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test.wav +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_alias.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_application.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_async_helpers.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_autocall.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_backgroundjobs.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_capture.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_clipboard.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_compilerop.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_completerlib.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_debug_magic.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_debugger.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_decorators.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_decorators_2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_deepreload.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_dir2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_display.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_display_2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_displayhook.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_editorhooks.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_embed.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_events.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_extension.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_formatters.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_handlers.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_help.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_history.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_hooks.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_imports.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_importstring.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_inputtransformer2.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_inputtransformer2_line.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_interactiveshell.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_interactivshell.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_io.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_iplib.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_ipunittest.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_latextools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_logger.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_magic_arguments.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_magic_terminal.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_module_paths.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_oinspect.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_openpy.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_page.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_path.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_paths.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_prefilter.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_pretty.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_process.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_profile.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_pt_inputhooks.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_pycolorize.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_pylabtools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_qt_loaders.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_run.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_shellapp.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_splitinput.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_storemagic.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_sysinfo.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_tempdir.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_text.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_tips.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_tokenutil.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_tools.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_ultratb.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_wildcard.py +0 -0
- {ipython-9.1.0 → ipython-9.3.0}/tests/test_zzz_autoreload.py +0 -0
|
@@ -80,6 +80,11 @@ def embed_kernel(module=None, local_ns=None, **kwargs):
|
|
|
80
80
|
and/or you want to load full IPython configuration,
|
|
81
81
|
you probably want `IPython.start_kernel()` instead.
|
|
82
82
|
|
|
83
|
+
This is a deprecated alias for `ipykernel.embed.embed_kernel()`,
|
|
84
|
+
to be removed in the future.
|
|
85
|
+
You should import directly from `ipykernel.embed`; this wrapper
|
|
86
|
+
fails anyway if you don't have `ipykernel` package installed.
|
|
87
|
+
|
|
83
88
|
Parameters
|
|
84
89
|
----------
|
|
85
90
|
module : types.ModuleType, optional
|
|
@@ -203,15 +203,11 @@ from types import SimpleNamespace
|
|
|
203
203
|
from typing import (
|
|
204
204
|
Iterable,
|
|
205
205
|
Iterator,
|
|
206
|
-
List,
|
|
207
|
-
Tuple,
|
|
208
206
|
Union,
|
|
209
207
|
Any,
|
|
210
208
|
Sequence,
|
|
211
|
-
Dict,
|
|
212
209
|
Optional,
|
|
213
210
|
TYPE_CHECKING,
|
|
214
|
-
Set,
|
|
215
211
|
Sized,
|
|
216
212
|
TypeVar,
|
|
217
213
|
Literal,
|
|
@@ -236,10 +232,12 @@ from traitlets import (
|
|
|
236
232
|
List as ListTrait,
|
|
237
233
|
Unicode,
|
|
238
234
|
Dict as DictTrait,
|
|
235
|
+
DottedObjectName,
|
|
239
236
|
Union as UnionTrait,
|
|
240
237
|
observe,
|
|
241
238
|
)
|
|
242
239
|
from traitlets.config.configurable import Configurable
|
|
240
|
+
from traitlets.utils.importstring import import_item
|
|
243
241
|
|
|
244
242
|
import __main__
|
|
245
243
|
|
|
@@ -987,7 +985,7 @@ class Completer(Configurable):
|
|
|
987
985
|
|
|
988
986
|
- ``forbidden``: no evaluation of code is permitted,
|
|
989
987
|
- ``minimal``: evaluation of literals and access to built-in namespace;
|
|
990
|
-
no item/attribute
|
|
988
|
+
no item/attribute evaluation, no access to locals/globals,
|
|
991
989
|
no evaluation of any operations or comparisons.
|
|
992
990
|
- ``limited``: access to all namespaces, evaluation of hard-coded methods
|
|
993
991
|
(for example: :any:`dict.keys`, :any:`object.__getattr__`,
|
|
@@ -995,7 +993,9 @@ class Completer(Configurable):
|
|
|
995
993
|
:any:`dict`, :any:`list`, :any:`tuple`, ``pandas.Series``),
|
|
996
994
|
- ``unsafe``: evaluation of all methods and function calls but not of
|
|
997
995
|
syntax with side-effects like `del x`,
|
|
998
|
-
- ``dangerous``: completely arbitrary evaluation.
|
|
996
|
+
- ``dangerous``: completely arbitrary evaluation; does not support auto-import.
|
|
997
|
+
|
|
998
|
+
To override specific elements of the policy, you can use ``policy_overrides`` trait.
|
|
999
999
|
""",
|
|
1000
1000
|
).tag(config=True)
|
|
1001
1001
|
|
|
@@ -1031,6 +1031,35 @@ class Completer(Configurable):
|
|
|
1031
1031
|
""",
|
|
1032
1032
|
).tag(config=True)
|
|
1033
1033
|
|
|
1034
|
+
policy_overrides = DictTrait(
|
|
1035
|
+
default_value={},
|
|
1036
|
+
key_trait=Unicode(),
|
|
1037
|
+
help="""Overrides for policy evaluation.
|
|
1038
|
+
|
|
1039
|
+
For example, to enable auto-import on completion specify:
|
|
1040
|
+
|
|
1041
|
+
.. code-block::
|
|
1042
|
+
|
|
1043
|
+
ipython --Completer.policy_overrides='{"allow_auto_import": True}' --Completer.use_jedi=False
|
|
1044
|
+
|
|
1045
|
+
""",
|
|
1046
|
+
).tag(config=True)
|
|
1047
|
+
|
|
1048
|
+
auto_import_method = DottedObjectName(
|
|
1049
|
+
default_value="importlib.import_module",
|
|
1050
|
+
allow_none=True,
|
|
1051
|
+
help="""\
|
|
1052
|
+
Provisional:
|
|
1053
|
+
This is a provisional API in IPython 9.3, it may change without warnings.
|
|
1054
|
+
|
|
1055
|
+
A fully qualified path to an auto-import method for use by completer.
|
|
1056
|
+
The function should take a single string and return `ModuleType` and
|
|
1057
|
+
can raise `ImportError` exception if module is not found.
|
|
1058
|
+
|
|
1059
|
+
The default auto-import implementation does not populate the user namespace with the imported module.
|
|
1060
|
+
""",
|
|
1061
|
+
).tag(config=True)
|
|
1062
|
+
|
|
1034
1063
|
def __init__(self, namespace=None, global_namespace=None, **kwargs):
|
|
1035
1064
|
"""Create a new completer for the command line.
|
|
1036
1065
|
|
|
@@ -1134,6 +1163,48 @@ class Completer(Configurable):
|
|
|
1134
1163
|
# we simple attribute matching with normal identifiers.
|
|
1135
1164
|
_ATTR_MATCH_RE = re.compile(r"(.+)\.(\w*)$")
|
|
1136
1165
|
|
|
1166
|
+
def _strip_code_before_operator(self, code: str) -> str:
|
|
1167
|
+
o_parens = {"(", "[", "{"}
|
|
1168
|
+
c_parens = {")", "]", "}"}
|
|
1169
|
+
|
|
1170
|
+
# Dry-run tokenize to catch errors
|
|
1171
|
+
try:
|
|
1172
|
+
_ = list(tokenize.generate_tokens(iter(code.splitlines()).__next__))
|
|
1173
|
+
except tokenize.TokenError:
|
|
1174
|
+
# Try trimming the expression and retrying
|
|
1175
|
+
trimmed_code = self._trim_expr(code)
|
|
1176
|
+
try:
|
|
1177
|
+
_ = list(
|
|
1178
|
+
tokenize.generate_tokens(iter(trimmed_code.splitlines()).__next__)
|
|
1179
|
+
)
|
|
1180
|
+
code = trimmed_code
|
|
1181
|
+
except tokenize.TokenError:
|
|
1182
|
+
return code
|
|
1183
|
+
|
|
1184
|
+
tokens = _parse_tokens(code)
|
|
1185
|
+
encountered_operator = False
|
|
1186
|
+
after_operator = []
|
|
1187
|
+
nesting_level = 0
|
|
1188
|
+
|
|
1189
|
+
for t in tokens:
|
|
1190
|
+
if t.type == tokenize.OP:
|
|
1191
|
+
if t.string in o_parens:
|
|
1192
|
+
nesting_level += 1
|
|
1193
|
+
elif t.string in c_parens:
|
|
1194
|
+
nesting_level -= 1
|
|
1195
|
+
elif t.string != "." and nesting_level == 0:
|
|
1196
|
+
encountered_operator = True
|
|
1197
|
+
after_operator = []
|
|
1198
|
+
continue
|
|
1199
|
+
|
|
1200
|
+
if encountered_operator:
|
|
1201
|
+
after_operator.append(t.string)
|
|
1202
|
+
|
|
1203
|
+
if encountered_operator:
|
|
1204
|
+
return "".join(after_operator)
|
|
1205
|
+
else:
|
|
1206
|
+
return code
|
|
1207
|
+
|
|
1137
1208
|
def _attr_matches(
|
|
1138
1209
|
self, text: str, include_prefix: bool = True
|
|
1139
1210
|
) -> tuple[Sequence[str], str]:
|
|
@@ -1141,9 +1212,12 @@ class Completer(Configurable):
|
|
|
1141
1212
|
if not m2:
|
|
1142
1213
|
return [], ""
|
|
1143
1214
|
expr, attr = m2.group(1, 2)
|
|
1215
|
+
try:
|
|
1216
|
+
expr = self._strip_code_before_operator(expr)
|
|
1217
|
+
except tokenize.TokenError:
|
|
1218
|
+
pass
|
|
1144
1219
|
|
|
1145
1220
|
obj = self._evaluate_expr(expr)
|
|
1146
|
-
|
|
1147
1221
|
if obj is not_found:
|
|
1148
1222
|
return [], ""
|
|
1149
1223
|
|
|
@@ -1234,6 +1308,8 @@ class Completer(Configurable):
|
|
|
1234
1308
|
globals=self.global_namespace,
|
|
1235
1309
|
locals=self.namespace,
|
|
1236
1310
|
evaluation=self.evaluation,
|
|
1311
|
+
auto_import=self._auto_import,
|
|
1312
|
+
policy_overrides=self.policy_overrides,
|
|
1237
1313
|
),
|
|
1238
1314
|
)
|
|
1239
1315
|
done = True
|
|
@@ -1247,6 +1323,14 @@ class Completer(Configurable):
|
|
|
1247
1323
|
expr = self._trim_expr(expr)
|
|
1248
1324
|
return obj
|
|
1249
1325
|
|
|
1326
|
+
@property
|
|
1327
|
+
def _auto_import(self):
|
|
1328
|
+
if self.auto_import_method is None:
|
|
1329
|
+
return None
|
|
1330
|
+
if not hasattr(self, "_auto_import_func"):
|
|
1331
|
+
self._auto_import_func = import_item(self.auto_import_method)
|
|
1332
|
+
return self._auto_import_func
|
|
1333
|
+
|
|
1250
1334
|
def get__all__entries(obj):
|
|
1251
1335
|
"""returns the strings in the __all__ attribute"""
|
|
1252
1336
|
try:
|
|
@@ -2787,6 +2871,8 @@ class IPCompleter(Completer):
|
|
|
2787
2871
|
locals=self.namespace,
|
|
2788
2872
|
evaluation=self.evaluation, # type: ignore
|
|
2789
2873
|
in_subscript=True,
|
|
2874
|
+
auto_import=self._auto_import,
|
|
2875
|
+
policy_overrides=self.policy_overrides,
|
|
2790
2876
|
),
|
|
2791
2877
|
)
|
|
2792
2878
|
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
+
from copy import copy
|
|
1
2
|
from inspect import isclass, signature, Signature
|
|
2
|
-
from pygments.formatters.terminal256 import Terminal256Formatter
|
|
3
3
|
from typing import (
|
|
4
4
|
Annotated,
|
|
5
5
|
AnyStr,
|
|
6
6
|
Callable,
|
|
7
|
-
Dict,
|
|
8
7
|
Literal,
|
|
9
8
|
NamedTuple,
|
|
10
9
|
NewType,
|
|
11
10
|
Optional,
|
|
12
11
|
Protocol,
|
|
13
|
-
Set,
|
|
14
12
|
Sequence,
|
|
15
|
-
Tuple,
|
|
16
|
-
Type,
|
|
17
13
|
TypeGuard,
|
|
18
14
|
Union,
|
|
19
15
|
get_args,
|
|
@@ -97,6 +93,7 @@ class EvaluationPolicy:
|
|
|
97
93
|
allow_builtins_access: bool = False
|
|
98
94
|
allow_all_operations: bool = False
|
|
99
95
|
allow_any_calls: bool = False
|
|
96
|
+
allow_auto_import: bool = False
|
|
100
97
|
allowed_calls: set[Callable] = field(default_factory=set)
|
|
101
98
|
|
|
102
99
|
def can_get_item(self, value, item):
|
|
@@ -330,6 +327,10 @@ class EvaluationContext(NamedTuple):
|
|
|
330
327
|
#: Whether the evaluation of code takes place inside of a subscript.
|
|
331
328
|
#: Useful for evaluating ``:-1, 'col'`` in ``df[:-1, 'col']``.
|
|
332
329
|
in_subscript: bool = False
|
|
330
|
+
#: Auto import method
|
|
331
|
+
auto_import: Callable[list[str], ModuleType] | None = None
|
|
332
|
+
#: Overrides for evaluation policy
|
|
333
|
+
policy_overrides: dict = {}
|
|
333
334
|
|
|
334
335
|
|
|
335
336
|
class _IdentitySubscript:
|
|
@@ -463,6 +464,17 @@ def _find_dunder(node_op, dunders) -> Union[tuple[str, ...], None]:
|
|
|
463
464
|
return dunder
|
|
464
465
|
|
|
465
466
|
|
|
467
|
+
def get_policy(context: EvaluationContext) -> EvaluationPolicy:
|
|
468
|
+
policy = copy(EVALUATION_POLICIES[context.evaluation])
|
|
469
|
+
|
|
470
|
+
for key, value in context.policy_overrides.items():
|
|
471
|
+
if hasattr(policy, key):
|
|
472
|
+
setattr(policy, key, value)
|
|
473
|
+
else:
|
|
474
|
+
print(f"Incorrect policy override key: {key}")
|
|
475
|
+
return policy
|
|
476
|
+
|
|
477
|
+
|
|
466
478
|
def eval_node(node: Union[ast.AST, None], context: EvaluationContext):
|
|
467
479
|
"""Evaluate AST node in provided context.
|
|
468
480
|
|
|
@@ -490,7 +502,8 @@ def eval_node(node: Union[ast.AST, None], context: EvaluationContext):
|
|
|
490
502
|
The purpose of this function is to guard against unwanted side-effects;
|
|
491
503
|
it does not give guarantees on protection from malicious code execution.
|
|
492
504
|
"""
|
|
493
|
-
policy =
|
|
505
|
+
policy = get_policy(context)
|
|
506
|
+
|
|
494
507
|
if node is None:
|
|
495
508
|
return None
|
|
496
509
|
if isinstance(node, ast.Expression):
|
|
@@ -711,7 +724,7 @@ def _resolve_annotation(
|
|
|
711
724
|
|
|
712
725
|
|
|
713
726
|
def _eval_node_name(node_id: str, context: EvaluationContext):
|
|
714
|
-
policy =
|
|
727
|
+
policy = get_policy(context)
|
|
715
728
|
if policy.allow_locals_access and node_id in context.locals:
|
|
716
729
|
return context.locals[node_id]
|
|
717
730
|
if policy.allow_globals_access and node_id in context.globals:
|
|
@@ -719,6 +732,8 @@ def _eval_node_name(node_id: str, context: EvaluationContext):
|
|
|
719
732
|
if policy.allow_builtins_access and hasattr(builtins, node_id):
|
|
720
733
|
# note: do not use __builtins__, it is implementation detail of cPython
|
|
721
734
|
return getattr(builtins, node_id)
|
|
735
|
+
if policy.allow_auto_import and context.auto_import:
|
|
736
|
+
return context.auto_import(node_id)
|
|
722
737
|
if not policy.allow_globals_access and not policy.allow_locals_access:
|
|
723
738
|
raise GuardRejection(
|
|
724
739
|
f"Namespace access not allowed in {context.evaluation} mode"
|
|
@@ -728,7 +743,7 @@ def _eval_node_name(node_id: str, context: EvaluationContext):
|
|
|
728
743
|
|
|
729
744
|
|
|
730
745
|
def _eval_or_create_duck(duck_type, node: ast.Call, context: EvaluationContext):
|
|
731
|
-
policy =
|
|
746
|
+
policy = get_policy(context)
|
|
732
747
|
# if allow-listed builtin is on type annotation, instantiate it
|
|
733
748
|
if policy.can_call(duck_type) and not node.keywords:
|
|
734
749
|
args = [eval_node(arg, context) for arg in node.args]
|
|
@@ -290,7 +290,7 @@ class ExecutionResult:
|
|
|
290
290
|
"""
|
|
291
291
|
|
|
292
292
|
execution_count: Optional[int] = None
|
|
293
|
-
error_before_exec: Optional[
|
|
293
|
+
error_before_exec: Optional[BaseException] = None
|
|
294
294
|
error_in_exec: Optional[BaseException] = None
|
|
295
295
|
info = None
|
|
296
296
|
result = None
|
|
@@ -314,6 +314,7 @@ class ExecutionResult:
|
|
|
314
314
|
return '<%s object at %x, execution_count=%s error_before_exec=%s error_in_exec=%s info=%s result=%s>' %\
|
|
315
315
|
(name, id(self), self.execution_count, self.error_before_exec, self.error_in_exec, repr(self.info), repr(self.result))
|
|
316
316
|
|
|
317
|
+
|
|
317
318
|
@functools.wraps(io_open)
|
|
318
319
|
def _modified_open(file, *args, **kwargs):
|
|
319
320
|
if file in {0, 1, 2}:
|
|
@@ -331,7 +332,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
331
332
|
|
|
332
333
|
_instance = None
|
|
333
334
|
_user_ns: dict
|
|
334
|
-
_sys_modules_keys: set[str
|
|
335
|
+
_sys_modules_keys: set[str]
|
|
335
336
|
|
|
336
337
|
inspector: oinspect.Inspector
|
|
337
338
|
|
|
@@ -1572,7 +1573,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
1572
1573
|
if isinstance(variables, str):
|
|
1573
1574
|
vlist = variables.split()
|
|
1574
1575
|
else:
|
|
1575
|
-
vlist = variables
|
|
1576
|
+
vlist = list(variables)
|
|
1576
1577
|
vdict = {}
|
|
1577
1578
|
cf = sys._getframe(1)
|
|
1578
1579
|
for name in vlist:
|
|
@@ -1887,11 +1888,12 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
1887
1888
|
with self.builtin_trap:
|
|
1888
1889
|
info = self._object_find(oname)
|
|
1889
1890
|
if info.found:
|
|
1890
|
-
|
|
1891
|
-
sphinxify
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1891
|
+
if self.sphinxify_docstring:
|
|
1892
|
+
if sphinxify is None:
|
|
1893
|
+
raise ImportError("Module ``docrepr`` required but missing")
|
|
1894
|
+
docformat = sphinxify(self.object_inspect(oname))
|
|
1895
|
+
else:
|
|
1896
|
+
docformat = None
|
|
1895
1897
|
return self.inspector._get_info(
|
|
1896
1898
|
info.obj,
|
|
1897
1899
|
oname,
|
|
@@ -2196,7 +2198,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
2196
2198
|
except KeyboardInterrupt:
|
|
2197
2199
|
print('\n' + self.get_exception_only(), file=sys.stderr)
|
|
2198
2200
|
|
|
2199
|
-
def _showtraceback(self, etype, evalue, stb: str):
|
|
2201
|
+
def _showtraceback(self, etype, evalue, stb: list[str]):
|
|
2200
2202
|
"""Actually show a traceback.
|
|
2201
2203
|
|
|
2202
2204
|
Subclasses may override this method to put the traceback on a different
|
|
@@ -3152,14 +3154,17 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
3152
3154
|
try:
|
|
3153
3155
|
result = runner(coro)
|
|
3154
3156
|
except BaseException as e:
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3157
|
+
try:
|
|
3158
|
+
info = ExecutionInfo(
|
|
3159
|
+
raw_cell, store_history, silent, shell_futures, cell_id
|
|
3160
|
+
)
|
|
3161
|
+
result = ExecutionResult(info)
|
|
3162
|
+
result.error_in_exec = e
|
|
3163
|
+
self.showtraceback(running_compiled_code=True)
|
|
3164
|
+
except:
|
|
3165
|
+
pass
|
|
3166
|
+
|
|
3167
|
+
return result
|
|
3163
3168
|
|
|
3164
3169
|
def should_run_async(
|
|
3165
3170
|
self, raw_cell: str, *, transformed_cell=None, preprocessing_exc_tuple=None
|
|
@@ -3596,7 +3601,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
3596
3601
|
if mode == "exec":
|
|
3597
3602
|
mod = Module([node], [])
|
|
3598
3603
|
elif mode == "single":
|
|
3599
|
-
mod = ast.Interactive([node])
|
|
3604
|
+
mod = ast.Interactive([node])
|
|
3600
3605
|
with compiler.extra_flags(
|
|
3601
3606
|
getattr(ast, "PyCF_ALLOW_TOP_LEVEL_AWAIT", 0x0)
|
|
3602
3607
|
if self.autoawait
|
|
@@ -160,10 +160,11 @@ class TimeitTemplateFiller(ast.NodeTransformer):
|
|
|
160
160
|
|
|
161
161
|
class Timer(timeit.Timer):
|
|
162
162
|
"""Timer class that explicitly uses self.inner
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
which is an undocumented implementation detail of CPython,
|
|
165
165
|
not shared by PyPy.
|
|
166
166
|
"""
|
|
167
|
+
|
|
167
168
|
# Timer.timeit copied from CPython 3.4.2
|
|
168
169
|
def timeit(self, number=timeit.default_number):
|
|
169
170
|
"""Time 'number' executions of the main statement.
|
|
@@ -201,7 +202,6 @@ class ExecutionMagics(Magics):
|
|
|
201
202
|
@no_var_expand
|
|
202
203
|
@line_cell_magic
|
|
203
204
|
def prun(self, parameter_s='', cell=None):
|
|
204
|
-
|
|
205
205
|
"""Run a statement through the python code profiler.
|
|
206
206
|
|
|
207
207
|
**Usage, in line mode**::
|
|
@@ -1000,7 +1000,7 @@ class ExecutionMagics(Magics):
|
|
|
1000
1000
|
# Stop iteration is raised on quit command
|
|
1001
1001
|
pass
|
|
1002
1002
|
|
|
1003
|
-
except:
|
|
1003
|
+
except Exception:
|
|
1004
1004
|
etype, value, tb = sys.exc_info()
|
|
1005
1005
|
# Skip three frames in the traceback: the %run one,
|
|
1006
1006
|
# one inside bdb.py, and the command-line typed by the
|
|
@@ -1142,7 +1142,7 @@ class ExecutionMagics(Magics):
|
|
|
1142
1142
|
)
|
|
1143
1143
|
if stmt == "" and cell is None:
|
|
1144
1144
|
return
|
|
1145
|
-
|
|
1145
|
+
|
|
1146
1146
|
timefunc = timeit.default_timer
|
|
1147
1147
|
number = int(getattr(opts, "n", 0))
|
|
1148
1148
|
default_repeat = 7 if timeit.default_repeat < 7 else timeit.default_repeat
|
|
@@ -1262,7 +1262,7 @@ class ExecutionMagics(Magics):
|
|
|
1262
1262
|
@needs_local_scope
|
|
1263
1263
|
@line_cell_magic
|
|
1264
1264
|
@output_can_be_silenced
|
|
1265
|
-
def time(self,line=
|
|
1265
|
+
def time(self, line="", cell=None, local_ns=None):
|
|
1266
1266
|
"""Time execution of a Python statement or expression.
|
|
1267
1267
|
|
|
1268
1268
|
The CPU and wall clock times are printed, and the value of the
|
|
@@ -1277,13 +1277,19 @@ class ExecutionMagics(Magics):
|
|
|
1277
1277
|
- In cell mode, you can time the cell body (a directly
|
|
1278
1278
|
following statement raises an error).
|
|
1279
1279
|
|
|
1280
|
-
This function provides very basic timing functionality.
|
|
1280
|
+
This function provides very basic timing functionality. Use the timeit
|
|
1281
1281
|
magic for more control over the measurement.
|
|
1282
1282
|
|
|
1283
1283
|
.. versionchanged:: 7.3
|
|
1284
1284
|
User variables are no longer expanded,
|
|
1285
1285
|
the magic line is always left unmodified.
|
|
1286
1286
|
|
|
1287
|
+
.. versionchanged:: 8.3
|
|
1288
|
+
The time magic now correctly propagates system-exiting exceptions
|
|
1289
|
+
(such as ``KeyboardInterrupt`` invoked when interrupting execution)
|
|
1290
|
+
rather than just printing out the exception traceback.
|
|
1291
|
+
The non-system-exception will still be caught as before.
|
|
1292
|
+
|
|
1287
1293
|
Examples
|
|
1288
1294
|
--------
|
|
1289
1295
|
::
|
|
@@ -1324,10 +1330,10 @@ class ExecutionMagics(Magics):
|
|
|
1324
1330
|
Compiler : 0.78 s
|
|
1325
1331
|
"""
|
|
1326
1332
|
# fail immediately if the given expression can't be compiled
|
|
1327
|
-
|
|
1333
|
+
|
|
1328
1334
|
if line and cell:
|
|
1329
1335
|
raise UsageError("Can't use statement directly after '%%time'!")
|
|
1330
|
-
|
|
1336
|
+
|
|
1331
1337
|
if cell:
|
|
1332
1338
|
expr = self.shell.transform_cell(cell)
|
|
1333
1339
|
else:
|
|
@@ -1338,7 +1344,7 @@ class ExecutionMagics(Magics):
|
|
|
1338
1344
|
|
|
1339
1345
|
t0 = clock()
|
|
1340
1346
|
expr_ast = self.shell.compile.ast_parse(expr)
|
|
1341
|
-
tp = clock()-t0
|
|
1347
|
+
tp = clock() - t0
|
|
1342
1348
|
|
|
1343
1349
|
# Apply AST transformations
|
|
1344
1350
|
expr_ast = self.shell.transform_ast(expr_ast)
|
|
@@ -1346,8 +1352,8 @@ class ExecutionMagics(Magics):
|
|
|
1346
1352
|
# Minimum time above which compilation time will be reported
|
|
1347
1353
|
tc_min = 0.1
|
|
1348
1354
|
|
|
1349
|
-
expr_val=None
|
|
1350
|
-
if len(expr_ast.body)==1 and isinstance(expr_ast.body[0], ast.Expr):
|
|
1355
|
+
expr_val = None
|
|
1356
|
+
if len(expr_ast.body) == 1 and isinstance(expr_ast.body[0], ast.Expr):
|
|
1351
1357
|
mode = 'eval'
|
|
1352
1358
|
source = '<timed eval>'
|
|
1353
1359
|
expr_ast = ast.Expression(expr_ast.body[0].value)
|
|
@@ -1356,25 +1362,25 @@ class ExecutionMagics(Magics):
|
|
|
1356
1362
|
source = '<timed exec>'
|
|
1357
1363
|
# multi-line %%time case
|
|
1358
1364
|
if len(expr_ast.body) > 1 and isinstance(expr_ast.body[-1], ast.Expr):
|
|
1359
|
-
expr_val= expr_ast.body[-1]
|
|
1365
|
+
expr_val = expr_ast.body[-1]
|
|
1360
1366
|
expr_ast = expr_ast.body[:-1]
|
|
1361
1367
|
expr_ast = Module(expr_ast, [])
|
|
1362
1368
|
expr_val = ast.Expression(expr_val.value)
|
|
1363
1369
|
|
|
1364
1370
|
t0 = clock()
|
|
1365
1371
|
code = self.shell.compile(expr_ast, source, mode)
|
|
1366
|
-
tc = clock()-t0
|
|
1372
|
+
tc = clock() - t0
|
|
1367
1373
|
|
|
1368
1374
|
# skew measurement as little as possible
|
|
1369
1375
|
glob = self.shell.user_ns
|
|
1370
1376
|
wtime = time.time
|
|
1371
1377
|
# time execution
|
|
1372
1378
|
wall_st = wtime()
|
|
1373
|
-
if mode==
|
|
1379
|
+
if mode == "eval":
|
|
1374
1380
|
st = clock2()
|
|
1375
1381
|
try:
|
|
1376
1382
|
out = eval(code, glob, local_ns)
|
|
1377
|
-
except:
|
|
1383
|
+
except Exception:
|
|
1378
1384
|
self.shell.showtraceback()
|
|
1379
1385
|
return
|
|
1380
1386
|
end = clock2()
|
|
@@ -1382,12 +1388,12 @@ class ExecutionMagics(Magics):
|
|
|
1382
1388
|
st = clock2()
|
|
1383
1389
|
try:
|
|
1384
1390
|
exec(code, glob, local_ns)
|
|
1385
|
-
out=None
|
|
1391
|
+
out = None
|
|
1386
1392
|
# multi-line %%time case
|
|
1387
1393
|
if expr_val is not None:
|
|
1388
1394
|
code_2 = self.shell.compile(expr_val, source, 'eval')
|
|
1389
1395
|
out = eval(code_2, glob, local_ns)
|
|
1390
|
-
except:
|
|
1396
|
+
except Exception:
|
|
1391
1397
|
self.shell.showtraceback()
|
|
1392
1398
|
return
|
|
1393
1399
|
end = clock2()
|
|
@@ -1630,14 +1636,15 @@ def parse_breakpoint(text, current_file):
|
|
|
1630
1636
|
return current_file, int(text)
|
|
1631
1637
|
else:
|
|
1632
1638
|
return text[:colon], int(text[colon+1:])
|
|
1633
|
-
|
|
1639
|
+
|
|
1640
|
+
|
|
1634
1641
|
def _format_time(timespan, precision=3):
|
|
1635
1642
|
"""Formats the timespan in a human readable form"""
|
|
1636
1643
|
|
|
1637
1644
|
if timespan >= 60.0:
|
|
1638
1645
|
# we have more than a minute, format that in a human readable form
|
|
1639
1646
|
# Idea from http://snipplr.com/view/5713/
|
|
1640
|
-
parts = [("d", 60*60*24),("h", 60*60),("min", 60), ("s", 1)]
|
|
1647
|
+
parts = [("d", 60 * 60 * 24), ("h", 60 * 60), ("min", 60), ("s", 1)]
|
|
1641
1648
|
time = []
|
|
1642
1649
|
leftover = timespan
|
|
1643
1650
|
for suffix, length in parts:
|
|
@@ -1649,7 +1656,6 @@ def _format_time(timespan, precision=3):
|
|
|
1649
1656
|
break
|
|
1650
1657
|
return " ".join(time)
|
|
1651
1658
|
|
|
1652
|
-
|
|
1653
1659
|
# Unfortunately characters outside of range(128) can cause problems in
|
|
1654
1660
|
# certain terminals.
|
|
1655
1661
|
# See bug: https://bugs.launchpad.net/ipython/+bug/348466
|
|
@@ -1663,7 +1669,7 @@ def _format_time(timespan, precision=3):
|
|
|
1663
1669
|
except:
|
|
1664
1670
|
pass
|
|
1665
1671
|
scaling = [1, 1e3, 1e6, 1e9]
|
|
1666
|
-
|
|
1672
|
+
|
|
1667
1673
|
if timespan > 0.0:
|
|
1668
1674
|
order = min(-int(math.floor(math.log10(timespan)) // 3), 3)
|
|
1669
1675
|
else:
|
|
@@ -475,7 +475,7 @@ class TerminalInteractiveShell(InteractiveShell):
|
|
|
475
475
|
allow_none=True,
|
|
476
476
|
help="""\
|
|
477
477
|
Provisional:
|
|
478
|
-
This is a
|
|
478
|
+
This is a provisional API in IPython 8.32, before stabilisation
|
|
479
479
|
in 9.0, it may change without warnings.
|
|
480
480
|
|
|
481
481
|
class to use for the `NavigableAutoSuggestFromHistory` to request
|
|
@@ -507,13 +507,16 @@ class TerminalInteractiveShell(InteractiveShell):
|
|
|
507
507
|
elif provider == "NavigableAutoSuggestFromHistory":
|
|
508
508
|
# LLM stuff are all Provisional in 8.32
|
|
509
509
|
if self._llm_provider_class:
|
|
510
|
-
|
|
511
|
-
|
|
510
|
+
|
|
511
|
+
def init_llm_provider():
|
|
512
|
+
llm_provider_constructor = import_item(self._llm_provider_class)
|
|
513
|
+
return llm_provider_constructor(**self.llm_constructor_kwargs)
|
|
514
|
+
|
|
512
515
|
else:
|
|
513
|
-
|
|
516
|
+
init_llm_provider = None
|
|
514
517
|
self.auto_suggest = NavigableAutoSuggestFromHistory()
|
|
515
518
|
# Provisinal in 8.32
|
|
516
|
-
self.auto_suggest.
|
|
519
|
+
self.auto_suggest._init_llm_provider = init_llm_provider
|
|
517
520
|
|
|
518
521
|
name = self.llm_prefix_from_history
|
|
519
522
|
|