ipython 8.30.0__tar.gz → 8.31.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.31.0}/IPython/core/completer.py +49 -17
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/debugger.py +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputtransformer.py +35 -2
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/release.py +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_completer.py +95 -45
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_sysinfo.py +1 -1
- {ipython-8.30.0/ipython.egg-info → ipython-8.31.0}/PKG-INFO +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/conf.py +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/inputtransforms.rst +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version8.rst +44 -2
- {ipython-8.30.0 → ipython-8.31.0/ipython.egg-info}/PKG-INFO +1 -1
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/SOURCES.txt +0 -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.31.0}/.flake8 +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/.mailmap +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/.pre-commit-config.yaml +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/COPYING.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/__main__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/conftest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/consoleapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/alias.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/application.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/async_helpers.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/autocall.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/builtin_trap.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/compilerop.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/completerlib.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/crashhandler.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display_functions.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display_trap.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/displayhook.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/displaypub.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/error.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/events.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/excolors.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/extensions.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/formatters.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/getipython.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/guarded_eval.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/history.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/historyapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/hooks.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputsplitter.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputtransformer2.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/interactiveshell.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/latex_symbols.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/logger.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/macro.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magic_arguments.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/ast_mod.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/auto.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/basic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/code.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/config.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/execution.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/extension.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/history.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/logging.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/namespace.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/osm.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/packaging.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/pylab.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/script.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/oinspect.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/page.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/payload.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/payloadpage.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/prefilter.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profile/README_STARTUP +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profileapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profiledir.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/pylabtools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/shellapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/splitinput.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/2x2.jpg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/2x2.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/bad_all.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/nonascii.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/nonascii2.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/print_argv.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/refbug.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/simpleerr.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/tclass.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_alias.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_application.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_async_helpers.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_autocall.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_compilerop.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_completerlib.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_debugger.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_displayhook.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_events.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_extension.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_formatters.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_guarded_eval.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_handlers.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_history.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_hooks.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputsplitter.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_interactiveshell.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_iplib.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_logger.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic_arguments.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic_terminal.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_oinspect.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_page.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_prefilter.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_profile.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_pylabtools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_run.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_shellapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_splitinput.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_ultratb.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/ultratb.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/core/usage.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/autoreload.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/storemagic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/test_autoreload.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/test_storemagic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/external/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/external/qt_for_kernel.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/external/qt_loaders.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/external/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/external/tests/test_qt_loaders.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/backgroundjobs.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/clipboard.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/deepreload.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/demo.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/editorhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/guisupport.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/latextools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/lexers.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/pretty.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test.wav +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_clipboard.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_deepreload.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_display.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_editorhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_latextools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_lexers.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_pretty.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_pygments.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/paths.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/py.typed +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/custom_doctests.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/ipython_directive.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/console.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/debugger.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/embed.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/interactiveshell.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/ipapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/magics.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/prompts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/ptutils.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/filters.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_embed.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_help.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/globalipapp.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/ipunittest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/Makefile +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/README.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/dtexample.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/setup.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/simple.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/simplevars.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_combo.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_example.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_refs.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/skipdoctest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_ipunittest.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_tools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tools.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/tests/cve.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/PyColorize.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_cli.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_common.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_emscripten.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_posix.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_win32.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_win32_controller.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/capture.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/colorable.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/coloransi.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/contexts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/daemonize.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/data.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/dir2.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/docs.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/encoding.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/eventful.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/frame.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/generics.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/importstring.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/io.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/ipstruct.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/jsonutil.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/localinterfaces.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/log.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/module_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/openpy.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/path.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/process.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/py3compat.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/sentinel.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/shimmodule.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/signatures.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/strdispatch.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/sysinfo.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/syspathcontext.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tempdir.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/terminal.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_capture.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_decorators.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_deprecated.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_dir2.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_imports.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_importstring.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_io.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_module_paths.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_openpy.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_path.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_process.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_pycolorize.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_shimmodule.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_sysinfo.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_tempdir.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_text.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_tokenutil.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_wildcard.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/text.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/timing.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tokenutil.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/traitlets.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tz.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/ulinecache.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/version.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/wildcard.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/LICENSE +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/MANIFEST.in +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/README.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/_build_meta.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/Makefile +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/README.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_api.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_config.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_magics.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_shortcuts.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/make.cmd +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/man/ipython.1 +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/requirements.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/running-crop.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/running.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/treeview.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/user-interface.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/widgets.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/autosuggest.gif +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ms_visual_studio.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/notebook_specgram.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ptshell_features.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/qtconsole.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/unicode_completion.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/favicon.ico +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/logo.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/theme_overrides.css +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_templates/breadcrumbs.html +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/_templates/notebook_redirect.html +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/history.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/license_and_copyright.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/api/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/callbacks.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/custommagics.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/details.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/eventloops.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/autoreload.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/storemagic.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/integrating.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/intro.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/options/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/shell_mimerenderer.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/shortcuts/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/coredev/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/config.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/execution.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/other_kernels.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/other_kernels.svg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/how_ipython_works.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/inputhook_app.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/kernels.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/lexer.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/messaging.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/pycompat.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/wrapperkernels.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/install.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/kernel_install.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/autoawait.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/besselj.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/colors_dark.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/jn.html +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/jn.xhtml +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/magics.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/plotting.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/reference.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/shell.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/tips.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/tutorial.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/links.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/overview.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/parallel/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/sphinx.toml +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/sphinxext.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/development.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/index.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/README.md +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.10.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.11.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.12.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.13.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.8.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.9.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version1.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version2.0.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version3.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version4.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version5.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version6.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version7.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/apigen.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/configtraits.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/github.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/magics.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_class_long.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_class_short.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_function.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/start_ipython_config.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/data/flare.json +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/example-demo.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython.desktop +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/Index.ipynb +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/animation.m4v +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/ipython_logo.png +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/images/python_logo.svg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/utils/cwd_prompt.py +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/utils/list_pyfiles.ipy +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/examples/utils/list_subdirs.ipy +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/dependency_links.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/entry_points.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/not-zip-safe +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/requires.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/top_level.txt +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/long_description.rst +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/pyproject.toml +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/scripts/ipython.ico +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/scripts/ipython_nb.ico +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/setup.cfg +0 -0
- {ipython-8.30.0 → ipython-8.31.0}/setup.py +0 -0
- {ipython-8.30.0 → ipython-8.31.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()
|
|
@@ -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
|
[
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# GENERATED BY setup.py
|
|
2
|
-
commit = "
|
|
2
|
+
commit = "22d6a1c16"
|
|
@@ -118,7 +118,7 @@ except ModuleNotFoundError:
|
|
|
118
118
|
intersphinx_mapping = config["intersphinx_mapping"]
|
|
119
119
|
for k, v in intersphinx_mapping.items():
|
|
120
120
|
intersphinx_mapping[k] = tuple(
|
|
121
|
-
[intersphinx_mapping[k]["url"], intersphinx_mapping[k]["fallback"]]
|
|
121
|
+
[intersphinx_mapping[k]["url"], intersphinx_mapping[k]["fallback"] or None]
|
|
122
122
|
)
|
|
123
123
|
|
|
124
124
|
|
|
@@ -13,7 +13,7 @@ interactive interface. Using them carelessly can easily break IPython!
|
|
|
13
13
|
String based transformations
|
|
14
14
|
============================
|
|
15
15
|
|
|
16
|
-
.. currentmodule:: IPython.core.
|
|
16
|
+
.. currentmodule:: IPython.core.inputtransformers2
|
|
17
17
|
|
|
18
18
|
When the user enters code, it is first processed as a string. By the
|
|
19
19
|
end of this stage, it must be valid Python syntax.
|
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
============
|
|
2
2
|
8.x Series
|
|
3
3
|
============
|
|
4
|
+
.. _version 8.31:
|
|
5
|
+
|
|
6
|
+
IPython 8.31
|
|
7
|
+
============
|
|
8
|
+
|
|
9
|
+
Small release for this end of december; This release contains only two notable changes:
|
|
10
|
+
|
|
11
|
+
- :ghpull:`14594` Fix completion in tuples, where the completion was
|
|
12
|
+
suggesting tuples methods instead of methods and attributes of the current
|
|
13
|
+
element.
|
|
14
|
+
- :ghpull:`14598` Fix pdb issue with Python 3.13.1, this fix is not perfect
|
|
15
|
+
(see :ghissue:`14620`) but should be sufficient for now.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
As usual you can find the full list of PRs on GitHub under `the 8.31
|
|
19
|
+
<https://github.com/ipython/ipython/milestone/138?closed=1>`__ milestone.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Road to 9.0
|
|
23
|
+
-----------
|
|
24
|
+
|
|
25
|
+
The current main branch is now on it's way to be 9.0; do not expect many new
|
|
26
|
+
features but a large codebase refactor, and cleanup with many deprecated code
|
|
27
|
+
removed, and more agressive codestyle enforcement.
|
|
28
|
+
|
|
29
|
+
For something completely different
|
|
30
|
+
----------------------------------
|
|
31
|
+
|
|
32
|
+
`Emmy Noether <https://en.wikipedia.org/wiki/Emmy_Noether>`__ was a German
|
|
33
|
+
mathematician who made groundbreaking contributions to abstract algebra and
|
|
34
|
+
theoretical physics. Her work on Noether's theorem, which describes the
|
|
35
|
+
relationship between symmetries and conservation laws, has had a profound impact
|
|
36
|
+
on the development of modern physics. Noether's work was largely overlooked
|
|
37
|
+
during her lifetime, but her legacy as one of the most important mathematicians
|
|
38
|
+
of the 20th century has been recognized and celebrated in recent years.
|
|
39
|
+
|
|
40
|
+
Thanks
|
|
41
|
+
------
|
|
42
|
+
|
|
43
|
+
Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
|
|
44
|
+
work on IPython and related libraries.
|
|
45
|
+
|
|
4
46
|
.. _version 8.30:
|
|
5
47
|
|
|
6
48
|
IPython 8.30
|
|
@@ -8,8 +50,8 @@ IPython 8.30
|
|
|
8
50
|
|
|
9
51
|
Small release for this end of november;
|
|
10
52
|
|
|
11
|
-
- :ghpull:`14579` improve the documentatation for
|
|
12
|
-
you can register formatters for
|
|
53
|
+
- :ghpull:`14579` improve the documentatation for custom IPython formatters, and how
|
|
54
|
+
you can register formatters for custom mime types.
|
|
13
55
|
- :ghpull:`14580` fix a bug in which commands that were not assigned a shortcut
|
|
14
56
|
could not be assigned one.
|
|
15
57
|
- :ghpull:`12690` fix a bug in which a single ``/`` on an empty line would not be
|