ipython 8.30.0__tar.gz → 8.32.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.30.0 → ipython-8.32.0}/IPython/core/completer.py +49 -17
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/debugger.py +1 -1
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/inputtransformer.py +35 -2
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/interactiveshell.py +4 -2
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/execution.py +15 -1
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/script.py +28 -7
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/release.py +1 -1
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_completer.py +95 -45
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_magic.py +67 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/interactiveshell.py +47 -2
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/shortcuts/auto_suggest.py +263 -16
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.30.0/ipython.egg-info → ipython-8.32.0}/PKG-INFO +5 -2
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/conf.py +1 -1
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/inputtransforms.rst +1 -1
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version8.rst +94 -2
- ipython-8.32.0/examples/auto_suggest_llm.py +130 -0
- {ipython-8.30.0 → ipython-8.32.0/ipython.egg-info}/PKG-INFO +5 -2
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/SOURCES.txt +1 -124
- ipython-8.30.0/docs/source/api/generated/IPython.conftest.rst +0 -28
- ipython-8.30.0/docs/source/api/generated/IPython.core.alias.rst +0 -36
- ipython-8.30.0/docs/source/api/generated/IPython.core.application.rst +0 -20
- ipython-8.30.0/docs/source/api/generated/IPython.core.async_helpers.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.core.autocall.rst +0 -24
- ipython-8.30.0/docs/source/api/generated/IPython.core.builtin_trap.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.compilerop.rst +0 -25
- ipython-8.30.0/docs/source/api/generated/IPython.core.completer.rst +0 -113
- ipython-8.30.0/docs/source/api/generated/IPython.core.completerlib.rst +0 -43
- ipython-8.30.0/docs/source/api/generated/IPython.core.crashhandler.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.core.debugger.rst +0 -38
- ipython-8.30.0/docs/source/api/generated/IPython.core.error.rst +0 -30
- ipython-8.30.0/docs/source/api/generated/IPython.core.events.rst +0 -34
- ipython-8.30.0/docs/source/api/generated/IPython.core.excolors.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.core.extensions.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.formatters.rst +0 -83
- ipython-8.30.0/docs/source/api/generated/IPython.core.getipython.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.core.guarded_eval.rst +0 -31
- ipython-8.30.0/docs/source/api/generated/IPython.core.history.rst +0 -44
- ipython-8.30.0/docs/source/api/generated/IPython.core.historyapp.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.core.hooks.rst +0 -34
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputsplitter.rst +0 -58
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer.rst +0 -74
- ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +0 -88
- ipython-8.30.0/docs/source/api/generated/IPython.core.interactiveshell.rst +0 -59
- ipython-8.30.0/docs/source/api/generated/IPython.core.logger.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.macro.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.magic.rst +0 -59
- ipython-8.30.0/docs/source/api/generated/IPython.core.magic_arguments.rst +0 -62
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.auto.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.basic.rst +0 -24
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.code.rst +0 -38
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.display.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.execution.rst +0 -38
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.extension.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.history.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.logging.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.namespace.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.osm.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.packaging.rst +0 -20
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.pylab.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.magics.script.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.core.oinspect.rst +0 -52
- ipython-8.30.0/docs/source/api/generated/IPython.core.page.rst +0 -37
- ipython-8.30.0/docs/source/api/generated/IPython.core.payload.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.core.payloadpage.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.prefilter.rst +0 -88
- ipython-8.30.0/docs/source/api/generated/IPython.core.profileapp.rst +0 -35
- ipython-8.30.0/docs/source/api/generated/IPython.core.profiledir.rst +0 -18
- ipython-8.30.0/docs/source/api/generated/IPython.core.prompts.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.core.pylabtools.rst +0 -40
- ipython-8.30.0/docs/source/api/generated/IPython.core.shellapp.rst +0 -20
- ipython-8.30.0/docs/source/api/generated/IPython.core.splitinput.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.core.ultratb.rst +0 -72
- ipython-8.30.0/docs/source/api/generated/IPython.display.rst +0 -187
- ipython-8.30.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +0 -34
- ipython-8.30.0/docs/source/api/generated/IPython.lib.clipboard.rst +0 -29
- ipython-8.30.0/docs/source/api/generated/IPython.lib.deepreload.rst +0 -37
- ipython-8.30.0/docs/source/api/generated/IPython.lib.demo.rst +0 -53
- ipython-8.30.0/docs/source/api/generated/IPython.lib.editorhooks.rst +0 -43
- ipython-8.30.0/docs/source/api/generated/IPython.lib.guisupport.rst +0 -28
- ipython-8.30.0/docs/source/api/generated/IPython.lib.latextools.rst +0 -35
- ipython-8.30.0/docs/source/api/generated/IPython.lib.lexers.rst +0 -38
- ipython-8.30.0/docs/source/api/generated/IPython.lib.pretty.rst +0 -83
- ipython-8.30.0/docs/source/api/generated/IPython.paths.rst +0 -25
- ipython-8.30.0/docs/source/api/generated/IPython.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.debugger.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.embed.rst +0 -30
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +0 -34
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.ipapp.rst +0 -30
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.magics.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.prompts.rst +0 -24
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +0 -46
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +0 -67
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +0 -58
- ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +0 -76
- ipython-8.30.0/docs/source/api/generated/IPython.testing.decorators.rst +0 -28
- ipython-8.30.0/docs/source/api/generated/IPython.testing.globalipapp.rst +0 -19
- ipython-8.30.0/docs/source/api/generated/IPython.testing.ipunittest.rst +0 -31
- ipython-8.30.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.testing.tools.rst +0 -66
- ipython-8.30.0/docs/source/api/generated/IPython.utils.PyColorize.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.capture.rst +0 -28
- ipython-8.30.0/docs/source/api/generated/IPython.utils.colorable.rst +0 -14
- ipython-8.30.0/docs/source/api/generated/IPython.utils.coloransi.rst +0 -40
- ipython-8.30.0/docs/source/api/generated/IPython.utils.contexts.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.data.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.decorators.rst +0 -19
- ipython-8.30.0/docs/source/api/generated/IPython.utils.dir2.rst +0 -19
- ipython-8.30.0/docs/source/api/generated/IPython.utils.encoding.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.frame.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.utils.generics.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.importstring.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.utils.io.rst +0 -25
- ipython-8.30.0/docs/source/api/generated/IPython.utils.ipstruct.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.module_paths.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.utils.openpy.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.utils.path.rst +0 -62
- ipython-8.30.0/docs/source/api/generated/IPython.utils.process.rst +0 -23
- ipython-8.30.0/docs/source/api/generated/IPython.utils.sentinel.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.shimmodule.rst +0 -26
- ipython-8.30.0/docs/source/api/generated/IPython.utils.strdispatch.rst +0 -16
- ipython-8.30.0/docs/source/api/generated/IPython.utils.sysinfo.rst +0 -25
- ipython-8.30.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tempdir.rst +0 -20
- ipython-8.30.0/docs/source/api/generated/IPython.utils.terminal.rst +0 -25
- ipython-8.30.0/docs/source/api/generated/IPython.utils.text.rst +0 -69
- ipython-8.30.0/docs/source/api/generated/IPython.utils.timing.rst +0 -31
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tokenutil.rst +0 -22
- ipython-8.30.0/docs/source/api/generated/IPython.utils.tz.rst +0 -20
- ipython-8.30.0/docs/source/api/generated/IPython.utils.ulinecache.rst +0 -13
- ipython-8.30.0/docs/source/api/generated/IPython.utils.wildcard.rst +0 -28
- ipython-8.30.0/docs/source/api/generated/gen.txt +0 -119
- ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
- ipython-8.30.0/docs/source/config/options/kernel.rst +0 -1554
- ipython-8.30.0/docs/source/config/options/terminal.rst +0 -1975
- ipython-8.30.0/docs/source/config/shortcuts/table.tsv +0 -79
- ipython-8.30.0/docs/source/interactive/magics-generated.txt +0 -2506
- 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.30.0 → ipython-8.32.0}/.flake8 +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/.mailmap +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/COPYING.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/__main__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/conftest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/consoleapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/alias.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/application.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/autocall.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/error.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/events.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/excolors.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/extensions.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/formatters.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/getipython.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/history.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/hooks.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/logger.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/macro.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magic.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/page.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/payload.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_interactiveshell.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/core/usage.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/external/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/demo.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/paths.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/py.typed +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/console.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/testing/tools.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/tests/cve.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/capture.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/data.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/docs.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/frame.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/generics.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/io.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/log.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/path.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/process.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/text.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/timing.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/tz.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/version.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/LICENSE +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/MANIFEST.in +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/README.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/_build_meta.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/Makefile +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/README.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/autogen_api.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/autogen_config.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/autogen_magics.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/make.cmd +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/man/ipython.1 +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/requirements.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/about/history.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/about/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/api/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/details.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/config.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/install/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/install/install.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/links.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/overview.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/animation.m4v +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/long_description.rst +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/pyproject.toml +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/scripts/ipython.ico +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/setup.cfg +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/setup.py +0 -0
- {ipython-8.30.0 → ipython-8.32.0}/setupbase.py +0 -0
|
@@ -184,6 +184,7 @@ import glob
|
|
|
184
184
|
import inspect
|
|
185
185
|
import itertools
|
|
186
186
|
import keyword
|
|
187
|
+
import ast
|
|
187
188
|
import os
|
|
188
189
|
import re
|
|
189
190
|
import string
|
|
@@ -347,7 +348,7 @@ def provisionalcompleter(action='ignore'):
|
|
|
347
348
|
yield
|
|
348
349
|
|
|
349
350
|
|
|
350
|
-
def has_open_quotes(s):
|
|
351
|
+
def has_open_quotes(s: str) -> Union[str, bool]:
|
|
351
352
|
"""Return whether a string has open quotes.
|
|
352
353
|
|
|
353
354
|
This simply counts whether the number of quote characters of either type in
|
|
@@ -368,7 +369,7 @@ def has_open_quotes(s):
|
|
|
368
369
|
return False
|
|
369
370
|
|
|
370
371
|
|
|
371
|
-
def protect_filename(s, protectables=PROTECTABLES):
|
|
372
|
+
def protect_filename(s: str, protectables: str = PROTECTABLES) -> str:
|
|
372
373
|
"""Escape a string to protect certain characters."""
|
|
373
374
|
if set(s) & set(protectables):
|
|
374
375
|
if sys.platform == "win32":
|
|
@@ -449,11 +450,11 @@ def completions_sorting_key(word):
|
|
|
449
450
|
|
|
450
451
|
if word.startswith('%%'):
|
|
451
452
|
# If there's another % in there, this is something else, so leave it alone
|
|
452
|
-
if
|
|
453
|
+
if "%" not in word[2:]:
|
|
453
454
|
word = word[2:]
|
|
454
455
|
prio2 = 2
|
|
455
456
|
elif word.startswith('%'):
|
|
456
|
-
if
|
|
457
|
+
if "%" not in word[1:]:
|
|
457
458
|
word = word[1:]
|
|
458
459
|
prio2 = 1
|
|
459
460
|
|
|
@@ -752,7 +753,7 @@ def completion_matcher(
|
|
|
752
753
|
priority: Optional[float] = None,
|
|
753
754
|
identifier: Optional[str] = None,
|
|
754
755
|
api_version: int = 1,
|
|
755
|
-
):
|
|
756
|
+
) -> Callable[[Matcher], Matcher]:
|
|
756
757
|
"""Adds attributes describing the matcher.
|
|
757
758
|
|
|
758
759
|
Parameters
|
|
@@ -961,8 +962,8 @@ class CompletionSplitter(object):
|
|
|
961
962
|
def split_line(self, line, cursor_pos=None):
|
|
962
963
|
"""Split a line of text with a cursor at the given position.
|
|
963
964
|
"""
|
|
964
|
-
|
|
965
|
-
return self._delim_re.split(
|
|
965
|
+
cut_line = line if cursor_pos is None else line[:cursor_pos]
|
|
966
|
+
return self._delim_re.split(cut_line)[-1]
|
|
966
967
|
|
|
967
968
|
|
|
968
969
|
|
|
@@ -1141,8 +1142,13 @@ class Completer(Configurable):
|
|
|
1141
1142
|
"""
|
|
1142
1143
|
return self._attr_matches(text)[0]
|
|
1143
1144
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1145
|
+
# we simple attribute matching with normal identifiers.
|
|
1146
|
+
_ATTR_MATCH_RE = re.compile(r"(.+)\.(\w*)$")
|
|
1147
|
+
|
|
1148
|
+
def _attr_matches(
|
|
1149
|
+
self, text: str, include_prefix: bool = True
|
|
1150
|
+
) -> Tuple[Sequence[str], str]:
|
|
1151
|
+
m2 = self._ATTR_MATCH_RE.match(self.line_buffer)
|
|
1146
1152
|
if not m2:
|
|
1147
1153
|
return [], ""
|
|
1148
1154
|
expr, attr = m2.group(1, 2)
|
|
@@ -1204,6 +1210,30 @@ class Completer(Configurable):
|
|
|
1204
1210
|
"." + attr,
|
|
1205
1211
|
)
|
|
1206
1212
|
|
|
1213
|
+
def _trim_expr(self, code: str) -> str:
|
|
1214
|
+
"""
|
|
1215
|
+
Trim the code until it is a valid expression and not a tuple;
|
|
1216
|
+
|
|
1217
|
+
return the trimmed expression for guarded_eval.
|
|
1218
|
+
"""
|
|
1219
|
+
while code:
|
|
1220
|
+
code = code[1:]
|
|
1221
|
+
try:
|
|
1222
|
+
res = ast.parse(code)
|
|
1223
|
+
except SyntaxError:
|
|
1224
|
+
continue
|
|
1225
|
+
|
|
1226
|
+
assert res is not None
|
|
1227
|
+
if len(res.body) != 1:
|
|
1228
|
+
continue
|
|
1229
|
+
expr = res.body[0].value
|
|
1230
|
+
if isinstance(expr, ast.Tuple) and not code[-1] == ")":
|
|
1231
|
+
# we skip implicit tuple, like when trimming `fun(a,b`<completion>
|
|
1232
|
+
# as `a,b` would be a tuple, and we actually expect to get only `b`
|
|
1233
|
+
continue
|
|
1234
|
+
return code
|
|
1235
|
+
return ""
|
|
1236
|
+
|
|
1207
1237
|
def _evaluate_expr(self, expr):
|
|
1208
1238
|
obj = not_found
|
|
1209
1239
|
done = False
|
|
@@ -1225,14 +1255,14 @@ class Completer(Configurable):
|
|
|
1225
1255
|
# e.g. user starts `(d[`, so we get `expr = '(d'`,
|
|
1226
1256
|
# where parenthesis is not closed.
|
|
1227
1257
|
# TODO: make this faster by reusing parts of the computation?
|
|
1228
|
-
expr = expr
|
|
1258
|
+
expr = self._trim_expr(expr)
|
|
1229
1259
|
return obj
|
|
1230
1260
|
|
|
1231
1261
|
def get__all__entries(obj):
|
|
1232
1262
|
"""returns the strings in the __all__ attribute"""
|
|
1233
1263
|
try:
|
|
1234
1264
|
words = getattr(obj, '__all__')
|
|
1235
|
-
except:
|
|
1265
|
+
except Exception:
|
|
1236
1266
|
return []
|
|
1237
1267
|
|
|
1238
1268
|
return [w for w in words if isinstance(w, str)]
|
|
@@ -1447,7 +1477,7 @@ def match_dict_keys(
|
|
|
1447
1477
|
try:
|
|
1448
1478
|
if not str_key.startswith(prefix_str):
|
|
1449
1479
|
continue
|
|
1450
|
-
except (AttributeError, TypeError, UnicodeError)
|
|
1480
|
+
except (AttributeError, TypeError, UnicodeError):
|
|
1451
1481
|
# Python 3+ TypeError on b'a'.startswith('a') or vice-versa
|
|
1452
1482
|
continue
|
|
1453
1483
|
|
|
@@ -1495,7 +1525,7 @@ def cursor_to_position(text:str, line:int, column:int)->int:
|
|
|
1495
1525
|
lines = text.split('\n')
|
|
1496
1526
|
assert line <= len(lines), '{} <= {}'.format(str(line), str(len(lines)))
|
|
1497
1527
|
|
|
1498
|
-
return sum(len(
|
|
1528
|
+
return sum(len(line) + 1 for line in lines[:line]) + column
|
|
1499
1529
|
|
|
1500
1530
|
def position_to_cursor(text:str, offset:int)->Tuple[int, int]:
|
|
1501
1531
|
"""
|
|
@@ -2112,7 +2142,7 @@ class IPCompleter(Completer):
|
|
|
2112
2142
|
result["suppress"] = is_magic_prefix and bool(result["completions"])
|
|
2113
2143
|
return result
|
|
2114
2144
|
|
|
2115
|
-
def magic_matches(self, text: str):
|
|
2145
|
+
def magic_matches(self, text: str) -> List[str]:
|
|
2116
2146
|
"""Match magics.
|
|
2117
2147
|
|
|
2118
2148
|
.. deprecated:: 8.6
|
|
@@ -2469,7 +2499,8 @@ class IPCompleter(Completer):
|
|
|
2469
2499
|
# parenthesis before the cursor
|
|
2470
2500
|
# e.g. for "foo (1+bar(x), pa<cursor>,a=1)", the candidate is "foo"
|
|
2471
2501
|
tokens = regexp.findall(self.text_until_cursor)
|
|
2472
|
-
iterTokens = reversed(tokens)
|
|
2502
|
+
iterTokens = reversed(tokens)
|
|
2503
|
+
openPar = 0
|
|
2473
2504
|
|
|
2474
2505
|
for token in iterTokens:
|
|
2475
2506
|
if token == ')':
|
|
@@ -2489,7 +2520,8 @@ class IPCompleter(Completer):
|
|
|
2489
2520
|
try:
|
|
2490
2521
|
ids.append(next(iterTokens))
|
|
2491
2522
|
if not isId(ids[-1]):
|
|
2492
|
-
ids.pop()
|
|
2523
|
+
ids.pop()
|
|
2524
|
+
break
|
|
2493
2525
|
if not next(iterTokens) == '.':
|
|
2494
2526
|
break
|
|
2495
2527
|
except StopIteration:
|
|
@@ -3215,7 +3247,7 @@ class IPCompleter(Completer):
|
|
|
3215
3247
|
else:
|
|
3216
3248
|
api_version = _get_matcher_api_version(matcher)
|
|
3217
3249
|
raise ValueError(f"Unsupported API version {api_version}")
|
|
3218
|
-
except:
|
|
3250
|
+
except BaseException:
|
|
3219
3251
|
# Show the ugly traceback if the matcher causes an
|
|
3220
3252
|
# exception, but do NOT crash the kernel!
|
|
3221
3253
|
sys.excepthook(*sys.exc_info())
|
|
@@ -550,7 +550,7 @@ class Pdb(OldPdb):
|
|
|
550
550
|
So if frame is self.current_frame we instead return self.curframe_locals
|
|
551
551
|
|
|
552
552
|
"""
|
|
553
|
-
if frame is self
|
|
553
|
+
if frame is getattr(self, "curframe", None):
|
|
554
554
|
return self.curframe_locals
|
|
555
555
|
else:
|
|
556
556
|
return frame.f_locals
|
|
@@ -9,6 +9,7 @@ import abc
|
|
|
9
9
|
import functools
|
|
10
10
|
import re
|
|
11
11
|
import tokenize
|
|
12
|
+
import warnings
|
|
12
13
|
from tokenize import untokenize, TokenError
|
|
13
14
|
from io import StringIO
|
|
14
15
|
|
|
@@ -42,7 +43,16 @@ ESC_SEQUENCES = [ESC_SHELL, ESC_SH_CAP, ESC_HELP ,\
|
|
|
42
43
|
|
|
43
44
|
class InputTransformer(metaclass=abc.ABCMeta):
|
|
44
45
|
"""Abstract base class for line-based input transformers."""
|
|
45
|
-
|
|
46
|
+
|
|
47
|
+
def __init__(self):
|
|
48
|
+
warnings.warn(
|
|
49
|
+
"`InputTransformer` has been deprecated since IPython 7.0"
|
|
50
|
+
" and emit a warnig since IPython 8.31, it"
|
|
51
|
+
" will be removed in the future",
|
|
52
|
+
DeprecationWarning,
|
|
53
|
+
stacklevel=2,
|
|
54
|
+
)
|
|
55
|
+
|
|
46
56
|
@abc.abstractmethod
|
|
47
57
|
def push(self, line):
|
|
48
58
|
"""Send a line of input to the transformer, returning the transformed
|
|
@@ -78,6 +88,14 @@ class InputTransformer(metaclass=abc.ABCMeta):
|
|
|
78
88
|
class StatelessInputTransformer(InputTransformer):
|
|
79
89
|
"""Wrapper for a stateless input transformer implemented as a function."""
|
|
80
90
|
def __init__(self, func):
|
|
91
|
+
super().__init__()
|
|
92
|
+
warnings.warn(
|
|
93
|
+
"`StatelessInputTransformer` has been deprecated since IPython 7.0"
|
|
94
|
+
" and emit a warnig since IPython 8.31, it"
|
|
95
|
+
" will be removed in the future",
|
|
96
|
+
DeprecationWarning,
|
|
97
|
+
stacklevel=2,
|
|
98
|
+
)
|
|
81
99
|
self.func = func
|
|
82
100
|
|
|
83
101
|
def __repr__(self):
|
|
@@ -96,6 +114,14 @@ class CoroutineInputTransformer(InputTransformer):
|
|
|
96
114
|
"""Wrapper for an input transformer implemented as a coroutine."""
|
|
97
115
|
def __init__(self, coro, **kwargs):
|
|
98
116
|
# Prime it
|
|
117
|
+
super().__init__()
|
|
118
|
+
warnings.warn(
|
|
119
|
+
"`CoroutineInputTransformer` has been deprecated since IPython 7.0"
|
|
120
|
+
" and emit a warnig since IPython 8.31, it"
|
|
121
|
+
" will be removed in the future",
|
|
122
|
+
DeprecationWarning,
|
|
123
|
+
stacklevel=2,
|
|
124
|
+
)
|
|
99
125
|
self.coro = coro(**kwargs)
|
|
100
126
|
next(self.coro)
|
|
101
127
|
|
|
@@ -122,6 +148,13 @@ class TokenInputTransformer(InputTransformer):
|
|
|
122
148
|
return an iterable which can be passed to tokenize.untokenize().
|
|
123
149
|
"""
|
|
124
150
|
def __init__(self, func):
|
|
151
|
+
warnings.warn(
|
|
152
|
+
"`CoroutineInputTransformer` has been deprecated since IPython 7.0"
|
|
153
|
+
" and emit a warnig since IPython 8.31, it"
|
|
154
|
+
" will be removed in the future",
|
|
155
|
+
DeprecationWarning,
|
|
156
|
+
stacklevel=2,
|
|
157
|
+
)
|
|
125
158
|
self.func = func
|
|
126
159
|
self.buf = []
|
|
127
160
|
self.reset_tokenizer()
|
|
@@ -167,7 +200,7 @@ class TokenInputTransformer(InputTransformer):
|
|
|
167
200
|
|
|
168
201
|
class assemble_python_lines(TokenInputTransformer):
|
|
169
202
|
def __init__(self):
|
|
170
|
-
super(
|
|
203
|
+
super().__init__(None)
|
|
171
204
|
|
|
172
205
|
def output(self, tokens):
|
|
173
206
|
return self.reset()
|
|
@@ -900,7 +900,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
900
900
|
return
|
|
901
901
|
|
|
902
902
|
p = Path(sys.executable)
|
|
903
|
-
p_venv = Path(os.environ["VIRTUAL_ENV"])
|
|
903
|
+
p_venv = Path(os.environ["VIRTUAL_ENV"]).resolve()
|
|
904
904
|
|
|
905
905
|
# fallback venv detection:
|
|
906
906
|
# stdlib venv may symlink sys.executable, so we can't use realpath.
|
|
@@ -913,7 +913,7 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
913
913
|
drive_name = p_venv.parts[2]
|
|
914
914
|
p_venv = (drive_name + ":/") / Path(*p_venv.parts[3:])
|
|
915
915
|
|
|
916
|
-
if any(p_venv == p.parents[1] for p in paths):
|
|
916
|
+
if any(p_venv == p.parents[1].resolve() for p in paths):
|
|
917
917
|
# Our exe is inside or has access to the virtualenv, don't need to do anything.
|
|
918
918
|
return
|
|
919
919
|
|
|
@@ -2093,6 +2093,8 @@ class InteractiveShell(SingletonConfigurable):
|
|
|
2093
2093
|
sys.last_type = etype
|
|
2094
2094
|
sys.last_value = value
|
|
2095
2095
|
sys.last_traceback = tb
|
|
2096
|
+
if sys.version_info >= (3, 12):
|
|
2097
|
+
sys.last_exc = value
|
|
2096
2098
|
|
|
2097
2099
|
return etype, value, tb
|
|
2098
2100
|
|
|
@@ -977,7 +977,21 @@ class ExecutionMagics(Magics):
|
|
|
977
977
|
break
|
|
978
978
|
finally:
|
|
979
979
|
sys.settrace(trace)
|
|
980
|
-
|
|
980
|
+
|
|
981
|
+
# Perform proper cleanup of the session in case if
|
|
982
|
+
# it exited with "continue" and not "quit" command
|
|
983
|
+
if hasattr(deb, "rcLines"):
|
|
984
|
+
# Run this code defensively in case if custom debugger
|
|
985
|
+
# class does not implement rcLines, which although public
|
|
986
|
+
# is an implementation detail of `pdb.Pdb` and not part of
|
|
987
|
+
# the more generic basic debugger framework (`bdb.Bdb`).
|
|
988
|
+
deb.set_quit()
|
|
989
|
+
deb.rcLines.extend(["q"])
|
|
990
|
+
try:
|
|
991
|
+
deb.run("", code_ns, local_ns)
|
|
992
|
+
except StopIteration:
|
|
993
|
+
# Stop iteration is raised on quit command
|
|
994
|
+
pass
|
|
981
995
|
|
|
982
996
|
except:
|
|
983
997
|
etype, value, tb = sys.exc_info()
|
|
@@ -67,6 +67,10 @@ def script_args(f):
|
|
|
67
67
|
return f
|
|
68
68
|
|
|
69
69
|
|
|
70
|
+
class RaiseAfterInterrupt(Exception):
|
|
71
|
+
pass
|
|
72
|
+
|
|
73
|
+
|
|
70
74
|
@magics_class
|
|
71
75
|
class ScriptMagics(Magics):
|
|
72
76
|
"""Magics for talking to scripts
|
|
@@ -176,6 +180,10 @@ class ScriptMagics(Magics):
|
|
|
176
180
|
|
|
177
181
|
The rest of the cell is run by that program.
|
|
178
182
|
|
|
183
|
+
.. versionchanged:: 9.0
|
|
184
|
+
Interrupting the script executed without `--bg` will end in
|
|
185
|
+
raising an exception (unless `--no-raise-error` is passed).
|
|
186
|
+
|
|
179
187
|
Examples
|
|
180
188
|
--------
|
|
181
189
|
::
|
|
@@ -212,7 +220,7 @@ class ScriptMagics(Magics):
|
|
|
212
220
|
|
|
213
221
|
async def _readchunk(stream):
|
|
214
222
|
try:
|
|
215
|
-
return await stream.
|
|
223
|
+
return await stream.read(100)
|
|
216
224
|
except asyncio.exceptions.IncompleteReadError as e:
|
|
217
225
|
return e.partial
|
|
218
226
|
except asyncio.exceptions.LimitOverrunError as e:
|
|
@@ -292,20 +300,33 @@ class ScriptMagics(Magics):
|
|
|
292
300
|
p.send_signal(signal.SIGINT)
|
|
293
301
|
in_thread(asyncio.wait_for(p.wait(), timeout=0.1))
|
|
294
302
|
if p.returncode is not None:
|
|
295
|
-
print("Process
|
|
296
|
-
|
|
303
|
+
print("Process was interrupted.")
|
|
304
|
+
if args.raise_error:
|
|
305
|
+
raise RaiseAfterInterrupt()
|
|
306
|
+
else:
|
|
307
|
+
return
|
|
297
308
|
p.terminate()
|
|
298
309
|
in_thread(asyncio.wait_for(p.wait(), timeout=0.1))
|
|
299
310
|
if p.returncode is not None:
|
|
300
|
-
print("Process
|
|
301
|
-
|
|
311
|
+
print("Process was terminated.")
|
|
312
|
+
if args.raise_error:
|
|
313
|
+
raise RaiseAfterInterrupt()
|
|
314
|
+
else:
|
|
315
|
+
return
|
|
302
316
|
p.kill()
|
|
303
|
-
print("Process
|
|
317
|
+
print("Process was killed.")
|
|
318
|
+
if args.raise_error:
|
|
319
|
+
raise RaiseAfterInterrupt()
|
|
320
|
+
except RaiseAfterInterrupt:
|
|
321
|
+
pass
|
|
304
322
|
except OSError:
|
|
305
323
|
pass
|
|
306
324
|
except Exception as e:
|
|
307
325
|
print("Error while terminating subprocess (pid=%i): %s" % (p.pid, e))
|
|
308
|
-
|
|
326
|
+
if args.raise_error:
|
|
327
|
+
raise CalledProcessError(p.returncode, cell) from None
|
|
328
|
+
else:
|
|
329
|
+
return
|
|
309
330
|
|
|
310
331
|
if args.raise_error and p.returncode != 0:
|
|
311
332
|
# If we get here and p.returncode is still None, we must have
|
|
@@ -9,10 +9,10 @@ import pytest
|
|
|
9
9
|
import sys
|
|
10
10
|
import textwrap
|
|
11
11
|
import unittest
|
|
12
|
+
import random
|
|
12
13
|
|
|
13
14
|
from importlib.metadata import version
|
|
14
15
|
|
|
15
|
-
|
|
16
16
|
from contextlib import contextmanager
|
|
17
17
|
|
|
18
18
|
from traitlets.config.loader import Config
|
|
@@ -21,6 +21,7 @@ from IPython.core import completer
|
|
|
21
21
|
from IPython.utils.tempdir import TemporaryDirectory, TemporaryWorkingDirectory
|
|
22
22
|
from IPython.utils.generics import complete_object
|
|
23
23
|
from IPython.testing import decorators as dec
|
|
24
|
+
from IPython.core.latex_symbols import latex_symbols
|
|
24
25
|
|
|
25
26
|
from IPython.core.completer import (
|
|
26
27
|
Completion,
|
|
@@ -31,11 +32,24 @@ from IPython.core.completer import (
|
|
|
31
32
|
completion_matcher,
|
|
32
33
|
SimpleCompletion,
|
|
33
34
|
CompletionContext,
|
|
35
|
+
_unicode_name_compute,
|
|
36
|
+
_UNICODE_RANGES,
|
|
34
37
|
)
|
|
35
38
|
|
|
36
39
|
from packaging.version import parse
|
|
37
40
|
|
|
38
41
|
|
|
42
|
+
@contextmanager
|
|
43
|
+
def jedi_status(status: bool):
|
|
44
|
+
completer = get_ipython().Completer
|
|
45
|
+
try:
|
|
46
|
+
old = completer.use_jedi
|
|
47
|
+
completer.use_jedi = status
|
|
48
|
+
yield
|
|
49
|
+
finally:
|
|
50
|
+
completer.use_jedi = old
|
|
51
|
+
|
|
52
|
+
|
|
39
53
|
# -----------------------------------------------------------------------------
|
|
40
54
|
# Test functions
|
|
41
55
|
# -----------------------------------------------------------------------------
|
|
@@ -66,7 +80,7 @@ def recompute_unicode_ranges():
|
|
|
66
80
|
rg = list(ranges(valid))
|
|
67
81
|
lens = []
|
|
68
82
|
gap_lens = []
|
|
69
|
-
|
|
83
|
+
_pstart, pstop = 0, 0
|
|
70
84
|
for start, stop in rg:
|
|
71
85
|
lens.append(stop - start)
|
|
72
86
|
gap_lens.append(
|
|
@@ -77,7 +91,7 @@ def recompute_unicode_ranges():
|
|
|
77
91
|
f"{round((start - pstop)/0xe01f0*100)}%",
|
|
78
92
|
)
|
|
79
93
|
)
|
|
80
|
-
|
|
94
|
+
_pstart, pstop = start, stop
|
|
81
95
|
|
|
82
96
|
return sorted(gap_lens)[-1]
|
|
83
97
|
|
|
@@ -87,7 +101,6 @@ def test_unicode_range():
|
|
|
87
101
|
Test that the ranges we test for unicode names give the same number of
|
|
88
102
|
results than testing the full length.
|
|
89
103
|
"""
|
|
90
|
-
from IPython.core.completer import _unicode_name_compute, _UNICODE_RANGES
|
|
91
104
|
|
|
92
105
|
expected_list = _unicode_name_compute([(0, 0x110000)])
|
|
93
106
|
test = _unicode_name_compute(_UNICODE_RANGES)
|
|
@@ -148,45 +161,45 @@ def custom_matchers(matchers):
|
|
|
148
161
|
ip.Completer.custom_matchers.clear()
|
|
149
162
|
|
|
150
163
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
164
|
+
if sys.platform == "win32":
|
|
165
|
+
pairs = [
|
|
166
|
+
("abc", "abc"),
|
|
167
|
+
(" abc", '" abc"'),
|
|
168
|
+
("a bc", '"a bc"'),
|
|
169
|
+
("a bc", '"a bc"'),
|
|
170
|
+
(" bc", '" bc"'),
|
|
171
|
+
]
|
|
172
|
+
else:
|
|
173
|
+
pairs = [
|
|
174
|
+
("abc", "abc"),
|
|
175
|
+
(" abc", r"\ abc"),
|
|
176
|
+
("a bc", r"a\ bc"),
|
|
177
|
+
("a bc", r"a\ \ bc"),
|
|
178
|
+
(" bc", r"\ \ bc"),
|
|
179
|
+
# On posix, we also protect parens and other special characters.
|
|
180
|
+
("a(bc", r"a\(bc"),
|
|
181
|
+
("a)bc", r"a\)bc"),
|
|
182
|
+
("a( )bc", r"a\(\ \)bc"),
|
|
183
|
+
("a[1]bc", r"a\[1\]bc"),
|
|
184
|
+
("a{1}bc", r"a\{1\}bc"),
|
|
185
|
+
("a#bc", r"a\#bc"),
|
|
186
|
+
("a?bc", r"a\?bc"),
|
|
187
|
+
("a=bc", r"a\=bc"),
|
|
188
|
+
("a\\bc", r"a\\bc"),
|
|
189
|
+
("a|bc", r"a\|bc"),
|
|
190
|
+
("a;bc", r"a\;bc"),
|
|
191
|
+
("a:bc", r"a\:bc"),
|
|
192
|
+
("a'bc", r"a\'bc"),
|
|
193
|
+
("a*bc", r"a\*bc"),
|
|
194
|
+
('a"bc', r"a\"bc"),
|
|
195
|
+
("a^bc", r"a\^bc"),
|
|
196
|
+
("a&bc", r"a\&bc"),
|
|
197
|
+
]
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@pytest.mark.parametrize("s1,expected", pairs)
|
|
201
|
+
def test_protect_filename(s1, expected):
|
|
202
|
+
assert completer.protect_filename(s1) == expected
|
|
190
203
|
|
|
191
204
|
|
|
192
205
|
def check_line_split(splitter, test_specs):
|
|
@@ -297,8 +310,6 @@ class TestCompleter(unittest.TestCase):
|
|
|
297
310
|
self.assertIsInstance(matches, list)
|
|
298
311
|
|
|
299
312
|
def test_latex_completions(self):
|
|
300
|
-
from IPython.core.latex_symbols import latex_symbols
|
|
301
|
-
import random
|
|
302
313
|
|
|
303
314
|
ip = get_ipython()
|
|
304
315
|
# Test some random unicode symbols
|
|
@@ -1734,6 +1745,45 @@ class TestCompleter(unittest.TestCase):
|
|
|
1734
1745
|
_(["completion_a"])
|
|
1735
1746
|
|
|
1736
1747
|
|
|
1748
|
+
@pytest.mark.parametrize(
|
|
1749
|
+
"setup,code,expected,not_expected",
|
|
1750
|
+
[
|
|
1751
|
+
('a="str"; b=1', "(a, b.", [".bit_count", ".conjugate"], [".count"]),
|
|
1752
|
+
('a="str"; b=1', "(a, b).", [".count"], [".bit_count", ".capitalize"]),
|
|
1753
|
+
('x="str"; y=1', "x = {1, y.", [".bit_count"], [".count"]),
|
|
1754
|
+
('x="str"; y=1', "x = [1, y.", [".bit_count"], [".count"]),
|
|
1755
|
+
('x="str"; y=1; fun=lambda x:x', "x = fun(1, y.", [".bit_count"], [".count"]),
|
|
1756
|
+
],
|
|
1757
|
+
)
|
|
1758
|
+
def test_misc_no_jedi_completions(setup, code, expected, not_expected):
|
|
1759
|
+
ip = get_ipython()
|
|
1760
|
+
c = ip.Completer
|
|
1761
|
+
ip.ex(setup)
|
|
1762
|
+
with provisionalcompleter(), jedi_status(False):
|
|
1763
|
+
matches = c.all_completions(code)
|
|
1764
|
+
assert set(expected) - set(matches) == set(), set(matches)
|
|
1765
|
+
assert set(matches).intersection(set(not_expected)) == set()
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
@pytest.mark.parametrize(
|
|
1769
|
+
"code,expected",
|
|
1770
|
+
[
|
|
1771
|
+
(" (a, b", "b"),
|
|
1772
|
+
("(a, b", "b"),
|
|
1773
|
+
("(a, b)", ""), # trim always start by trimming
|
|
1774
|
+
(" (a, b)", "(a, b)"),
|
|
1775
|
+
(" [a, b]", "[a, b]"),
|
|
1776
|
+
(" a, b", "b"),
|
|
1777
|
+
("x = {1, y", "y"),
|
|
1778
|
+
("x = [1, y", "y"),
|
|
1779
|
+
("x = fun(1, y", "y"),
|
|
1780
|
+
],
|
|
1781
|
+
)
|
|
1782
|
+
def test_trim_expr(code, expected):
|
|
1783
|
+
c = get_ipython().Completer
|
|
1784
|
+
assert c._trim_expr(code) == expected
|
|
1785
|
+
|
|
1786
|
+
|
|
1737
1787
|
@pytest.mark.parametrize(
|
|
1738
1788
|
"input, expected",
|
|
1739
1789
|
[
|