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.
Files changed (621) hide show
  1. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/completer.py +49 -17
  2. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/debugger.py +1 -1
  3. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputtransformer.py +35 -2
  4. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/release.py +1 -1
  5. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_completer.py +95 -45
  6. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_sysinfo.py +1 -1
  7. {ipython-8.30.0/ipython.egg-info → ipython-8.31.0}/PKG-INFO +1 -1
  8. {ipython-8.30.0 → ipython-8.31.0}/docs/source/conf.py +1 -1
  9. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/inputtransforms.rst +1 -1
  10. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version8.rst +44 -2
  11. {ipython-8.30.0 → ipython-8.31.0/ipython.egg-info}/PKG-INFO +1 -1
  12. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/SOURCES.txt +0 -124
  13. ipython-8.30.0/docs/source/api/generated/IPython.conftest.rst +0 -28
  14. ipython-8.30.0/docs/source/api/generated/IPython.core.alias.rst +0 -36
  15. ipython-8.30.0/docs/source/api/generated/IPython.core.application.rst +0 -20
  16. ipython-8.30.0/docs/source/api/generated/IPython.core.async_helpers.rst +0 -13
  17. ipython-8.30.0/docs/source/api/generated/IPython.core.autocall.rst +0 -24
  18. ipython-8.30.0/docs/source/api/generated/IPython.core.builtin_trap.rst +0 -16
  19. ipython-8.30.0/docs/source/api/generated/IPython.core.compilerop.rst +0 -25
  20. ipython-8.30.0/docs/source/api/generated/IPython.core.completer.rst +0 -113
  21. ipython-8.30.0/docs/source/api/generated/IPython.core.completerlib.rst +0 -43
  22. ipython-8.30.0/docs/source/api/generated/IPython.core.crashhandler.rst +0 -22
  23. ipython-8.30.0/docs/source/api/generated/IPython.core.debugger.rst +0 -38
  24. ipython-8.30.0/docs/source/api/generated/IPython.core.error.rst +0 -30
  25. ipython-8.30.0/docs/source/api/generated/IPython.core.events.rst +0 -34
  26. ipython-8.30.0/docs/source/api/generated/IPython.core.excolors.rst +0 -13
  27. ipython-8.30.0/docs/source/api/generated/IPython.core.extensions.rst +0 -16
  28. ipython-8.30.0/docs/source/api/generated/IPython.core.formatters.rst +0 -83
  29. ipython-8.30.0/docs/source/api/generated/IPython.core.getipython.rst +0 -13
  30. ipython-8.30.0/docs/source/api/generated/IPython.core.guarded_eval.rst +0 -31
  31. ipython-8.30.0/docs/source/api/generated/IPython.core.history.rst +0 -44
  32. ipython-8.30.0/docs/source/api/generated/IPython.core.historyapp.rst +0 -22
  33. ipython-8.30.0/docs/source/api/generated/IPython.core.hooks.rst +0 -34
  34. ipython-8.30.0/docs/source/api/generated/IPython.core.inputsplitter.rst +0 -58
  35. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer.rst +0 -74
  36. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +0 -88
  37. ipython-8.30.0/docs/source/api/generated/IPython.core.interactiveshell.rst +0 -59
  38. ipython-8.30.0/docs/source/api/generated/IPython.core.logger.rst +0 -16
  39. ipython-8.30.0/docs/source/api/generated/IPython.core.macro.rst +0 -16
  40. ipython-8.30.0/docs/source/api/generated/IPython.core.magic.rst +0 -59
  41. ipython-8.30.0/docs/source/api/generated/IPython.core.magic_arguments.rst +0 -62
  42. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +0 -22
  43. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.auto.rst +0 -16
  44. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.basic.rst +0 -24
  45. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.code.rst +0 -38
  46. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.display.rst +0 -14
  47. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.execution.rst +0 -38
  48. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.extension.rst +0 -14
  49. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.history.rst +0 -14
  50. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.logging.rst +0 -14
  51. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.namespace.rst +0 -14
  52. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.osm.rst +0 -16
  53. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.packaging.rst +0 -20
  54. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.pylab.rst +0 -14
  55. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.rst +0 -14
  56. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.script.rst +0 -22
  57. ipython-8.30.0/docs/source/api/generated/IPython.core.oinspect.rst +0 -52
  58. ipython-8.30.0/docs/source/api/generated/IPython.core.page.rst +0 -37
  59. ipython-8.30.0/docs/source/api/generated/IPython.core.payload.rst +0 -14
  60. ipython-8.30.0/docs/source/api/generated/IPython.core.payloadpage.rst +0 -16
  61. ipython-8.30.0/docs/source/api/generated/IPython.core.prefilter.rst +0 -88
  62. ipython-8.30.0/docs/source/api/generated/IPython.core.profileapp.rst +0 -35
  63. ipython-8.30.0/docs/source/api/generated/IPython.core.profiledir.rst +0 -18
  64. ipython-8.30.0/docs/source/api/generated/IPython.core.prompts.rst +0 -16
  65. ipython-8.30.0/docs/source/api/generated/IPython.core.pylabtools.rst +0 -40
  66. ipython-8.30.0/docs/source/api/generated/IPython.core.shellapp.rst +0 -20
  67. ipython-8.30.0/docs/source/api/generated/IPython.core.splitinput.rst +0 -22
  68. ipython-8.30.0/docs/source/api/generated/IPython.core.ultratb.rst +0 -72
  69. ipython-8.30.0/docs/source/api/generated/IPython.display.rst +0 -187
  70. ipython-8.30.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +0 -34
  71. ipython-8.30.0/docs/source/api/generated/IPython.lib.clipboard.rst +0 -29
  72. ipython-8.30.0/docs/source/api/generated/IPython.lib.deepreload.rst +0 -37
  73. ipython-8.30.0/docs/source/api/generated/IPython.lib.demo.rst +0 -53
  74. ipython-8.30.0/docs/source/api/generated/IPython.lib.editorhooks.rst +0 -43
  75. ipython-8.30.0/docs/source/api/generated/IPython.lib.guisupport.rst +0 -28
  76. ipython-8.30.0/docs/source/api/generated/IPython.lib.latextools.rst +0 -35
  77. ipython-8.30.0/docs/source/api/generated/IPython.lib.lexers.rst +0 -38
  78. ipython-8.30.0/docs/source/api/generated/IPython.lib.pretty.rst +0 -83
  79. ipython-8.30.0/docs/source/api/generated/IPython.paths.rst +0 -25
  80. ipython-8.30.0/docs/source/api/generated/IPython.rst +0 -22
  81. ipython-8.30.0/docs/source/api/generated/IPython.terminal.debugger.rst +0 -22
  82. ipython-8.30.0/docs/source/api/generated/IPython.terminal.embed.rst +0 -30
  83. ipython-8.30.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +0 -34
  84. ipython-8.30.0/docs/source/api/generated/IPython.terminal.ipapp.rst +0 -30
  85. ipython-8.30.0/docs/source/api/generated/IPython.terminal.magics.rst +0 -22
  86. ipython-8.30.0/docs/source/api/generated/IPython.terminal.prompts.rst +0 -24
  87. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +0 -46
  88. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +0 -67
  89. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +0 -58
  90. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +0 -76
  91. ipython-8.30.0/docs/source/api/generated/IPython.testing.decorators.rst +0 -28
  92. ipython-8.30.0/docs/source/api/generated/IPython.testing.globalipapp.rst +0 -19
  93. ipython-8.30.0/docs/source/api/generated/IPython.testing.ipunittest.rst +0 -31
  94. ipython-8.30.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +0 -13
  95. ipython-8.30.0/docs/source/api/generated/IPython.testing.tools.rst +0 -66
  96. ipython-8.30.0/docs/source/api/generated/IPython.utils.PyColorize.rst +0 -16
  97. ipython-8.30.0/docs/source/api/generated/IPython.utils.capture.rst +0 -28
  98. ipython-8.30.0/docs/source/api/generated/IPython.utils.colorable.rst +0 -14
  99. ipython-8.30.0/docs/source/api/generated/IPython.utils.coloransi.rst +0 -40
  100. ipython-8.30.0/docs/source/api/generated/IPython.utils.contexts.rst +0 -16
  101. ipython-8.30.0/docs/source/api/generated/IPython.utils.data.rst +0 -16
  102. ipython-8.30.0/docs/source/api/generated/IPython.utils.decorators.rst +0 -19
  103. ipython-8.30.0/docs/source/api/generated/IPython.utils.dir2.rst +0 -19
  104. ipython-8.30.0/docs/source/api/generated/IPython.utils.encoding.rst +0 -16
  105. ipython-8.30.0/docs/source/api/generated/IPython.utils.frame.rst +0 -22
  106. ipython-8.30.0/docs/source/api/generated/IPython.utils.generics.rst +0 -16
  107. ipython-8.30.0/docs/source/api/generated/IPython.utils.importstring.rst +0 -13
  108. ipython-8.30.0/docs/source/api/generated/IPython.utils.io.rst +0 -25
  109. ipython-8.30.0/docs/source/api/generated/IPython.utils.ipstruct.rst +0 -16
  110. ipython-8.30.0/docs/source/api/generated/IPython.utils.module_paths.rst +0 -13
  111. ipython-8.30.0/docs/source/api/generated/IPython.utils.openpy.rst +0 -22
  112. ipython-8.30.0/docs/source/api/generated/IPython.utils.path.rst +0 -62
  113. ipython-8.30.0/docs/source/api/generated/IPython.utils.process.rst +0 -23
  114. ipython-8.30.0/docs/source/api/generated/IPython.utils.sentinel.rst +0 -16
  115. ipython-8.30.0/docs/source/api/generated/IPython.utils.shimmodule.rst +0 -26
  116. ipython-8.30.0/docs/source/api/generated/IPython.utils.strdispatch.rst +0 -16
  117. ipython-8.30.0/docs/source/api/generated/IPython.utils.sysinfo.rst +0 -25
  118. ipython-8.30.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +0 -22
  119. ipython-8.30.0/docs/source/api/generated/IPython.utils.tempdir.rst +0 -20
  120. ipython-8.30.0/docs/source/api/generated/IPython.utils.terminal.rst +0 -25
  121. ipython-8.30.0/docs/source/api/generated/IPython.utils.text.rst +0 -69
  122. ipython-8.30.0/docs/source/api/generated/IPython.utils.timing.rst +0 -31
  123. ipython-8.30.0/docs/source/api/generated/IPython.utils.tokenutil.rst +0 -22
  124. ipython-8.30.0/docs/source/api/generated/IPython.utils.tz.rst +0 -20
  125. ipython-8.30.0/docs/source/api/generated/IPython.utils.ulinecache.rst +0 -13
  126. ipython-8.30.0/docs/source/api/generated/IPython.utils.wildcard.rst +0 -28
  127. ipython-8.30.0/docs/source/api/generated/gen.txt +0 -119
  128. ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
  129. ipython-8.30.0/docs/source/config/options/kernel.rst +0 -1554
  130. ipython-8.30.0/docs/source/config/options/terminal.rst +0 -1975
  131. ipython-8.30.0/docs/source/config/shortcuts/table.tsv +0 -79
  132. ipython-8.30.0/docs/source/interactive/magics-generated.txt +0 -2506
  133. ipython-8.30.0/docs/source/savefig/hist_simple.png +0 -0
  134. ipython-8.30.0/docs/source/savefig/hist_with_text.png +0 -0
  135. ipython-8.30.0/docs/source/savefig/plot_simple.png +0 -0
  136. ipython-8.30.0/docs/source/savefig/plot_simple_python.png +0 -0
  137. {ipython-8.30.0 → ipython-8.31.0}/.flake8 +0 -0
  138. {ipython-8.30.0 → ipython-8.31.0}/.mailmap +0 -0
  139. {ipython-8.30.0 → ipython-8.31.0}/.pre-commit-config.yaml +0 -0
  140. {ipython-8.30.0 → ipython-8.31.0}/COPYING.rst +0 -0
  141. {ipython-8.30.0 → ipython-8.31.0}/IPython/__init__.py +0 -0
  142. {ipython-8.30.0 → ipython-8.31.0}/IPython/__main__.py +0 -0
  143. {ipython-8.30.0 → ipython-8.31.0}/IPython/conftest.py +0 -0
  144. {ipython-8.30.0 → ipython-8.31.0}/IPython/consoleapp.py +0 -0
  145. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/__init__.py +0 -0
  146. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/alias.py +0 -0
  147. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/application.py +0 -0
  148. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/async_helpers.py +0 -0
  149. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/autocall.py +0 -0
  150. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/builtin_trap.py +0 -0
  151. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/compilerop.py +0 -0
  152. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/completerlib.py +0 -0
  153. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/crashhandler.py +0 -0
  154. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display.py +0 -0
  155. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display_functions.py +0 -0
  156. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/display_trap.py +0 -0
  157. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/displayhook.py +0 -0
  158. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/displaypub.py +0 -0
  159. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/error.py +0 -0
  160. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/events.py +0 -0
  161. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/excolors.py +0 -0
  162. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/extensions.py +0 -0
  163. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/formatters.py +0 -0
  164. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/getipython.py +0 -0
  165. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/guarded_eval.py +0 -0
  166. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/history.py +0 -0
  167. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/historyapp.py +0 -0
  168. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/hooks.py +0 -0
  169. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputsplitter.py +0 -0
  170. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/inputtransformer2.py +0 -0
  171. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/interactiveshell.py +0 -0
  172. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/latex_symbols.py +0 -0
  173. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/logger.py +0 -0
  174. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/macro.py +0 -0
  175. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magic.py +0 -0
  176. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magic_arguments.py +0 -0
  177. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/__init__.py +0 -0
  178. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/ast_mod.py +0 -0
  179. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/auto.py +0 -0
  180. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/basic.py +0 -0
  181. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/code.py +0 -0
  182. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/config.py +0 -0
  183. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/display.py +0 -0
  184. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/execution.py +0 -0
  185. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/extension.py +0 -0
  186. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/history.py +0 -0
  187. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/logging.py +0 -0
  188. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/namespace.py +0 -0
  189. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/osm.py +0 -0
  190. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/packaging.py +0 -0
  191. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/pylab.py +0 -0
  192. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/magics/script.py +0 -0
  193. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/oinspect.py +0 -0
  194. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/page.py +0 -0
  195. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/payload.py +0 -0
  196. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/payloadpage.py +0 -0
  197. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/prefilter.py +0 -0
  198. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profile/README_STARTUP +0 -0
  199. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profileapp.py +0 -0
  200. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/profiledir.py +0 -0
  201. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/prompts.py +0 -0
  202. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/pylabtools.py +0 -0
  203. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/shellapp.py +0 -0
  204. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/splitinput.py +0 -0
  205. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/2x2.jpg +0 -0
  206. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/2x2.png +0 -0
  207. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/__init__.py +0 -0
  208. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/bad_all.py +0 -0
  209. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  210. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/nonascii.py +0 -0
  211. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/nonascii2.py +0 -0
  212. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/print_argv.py +0 -0
  213. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/refbug.py +0 -0
  214. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/simpleerr.py +0 -0
  215. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/tclass.py +0 -0
  216. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_alias.py +0 -0
  217. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_application.py +0 -0
  218. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_async_helpers.py +0 -0
  219. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_autocall.py +0 -0
  220. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_compilerop.py +0 -0
  221. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_completerlib.py +0 -0
  222. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_debugger.py +0 -0
  223. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_display.py +0 -0
  224. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_displayhook.py +0 -0
  225. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_events.py +0 -0
  226. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  227. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_extension.py +0 -0
  228. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_formatters.py +0 -0
  229. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  230. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_handlers.py +0 -0
  231. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_history.py +0 -0
  232. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_hooks.py +0 -0
  233. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_imports.py +0 -0
  234. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  235. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  236. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  237. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  238. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_interactiveshell.py +0 -0
  239. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_iplib.py +0 -0
  240. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_logger.py +0 -0
  241. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic.py +0 -0
  242. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  243. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  244. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_oinspect.py +0 -0
  245. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_page.py +0 -0
  246. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_paths.py +0 -0
  247. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_prefilter.py +0 -0
  248. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_profile.py +0 -0
  249. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_prompts.py +0 -0
  250. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_pylabtools.py +0 -0
  251. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_run.py +0 -0
  252. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_shellapp.py +0 -0
  253. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_splitinput.py +0 -0
  254. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/tests/test_ultratb.py +0 -0
  255. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/ultratb.py +0 -0
  256. {ipython-8.30.0 → ipython-8.31.0}/IPython/core/usage.py +0 -0
  257. {ipython-8.30.0 → ipython-8.31.0}/IPython/display.py +0 -0
  258. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/__init__.py +0 -0
  259. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/autoreload.py +0 -0
  260. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/storemagic.py +0 -0
  261. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/__init__.py +0 -0
  262. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  263. {ipython-8.30.0 → ipython-8.31.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  264. {ipython-8.30.0 → ipython-8.31.0}/IPython/external/__init__.py +0 -0
  265. {ipython-8.30.0 → ipython-8.31.0}/IPython/external/qt_for_kernel.py +0 -0
  266. {ipython-8.30.0 → ipython-8.31.0}/IPython/external/qt_loaders.py +0 -0
  267. {ipython-8.30.0 → ipython-8.31.0}/IPython/external/tests/__init__.py +0 -0
  268. {ipython-8.30.0 → ipython-8.31.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  269. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/__init__.py +0 -0
  270. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/backgroundjobs.py +0 -0
  271. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/clipboard.py +0 -0
  272. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/deepreload.py +0 -0
  273. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/demo.py +0 -0
  274. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/display.py +0 -0
  275. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/editorhooks.py +0 -0
  276. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/guisupport.py +0 -0
  277. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/latextools.py +0 -0
  278. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/lexers.py +0 -0
  279. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/pretty.py +0 -0
  280. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/__init__.py +0 -0
  281. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test.wav +0 -0
  282. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  283. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_clipboard.py +0 -0
  284. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_deepreload.py +0 -0
  285. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_display.py +0 -0
  286. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  287. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_imports.py +0 -0
  288. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_latextools.py +0 -0
  289. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_lexers.py +0 -0
  290. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_pretty.py +0 -0
  291. {ipython-8.30.0 → ipython-8.31.0}/IPython/lib/tests/test_pygments.py +0 -0
  292. {ipython-8.30.0 → ipython-8.31.0}/IPython/paths.py +0 -0
  293. {ipython-8.30.0 → ipython-8.31.0}/IPython/py.typed +0 -0
  294. {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/__init__.py +0 -0
  295. {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/custom_doctests.py +0 -0
  296. {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  297. {ipython-8.30.0 → ipython-8.31.0}/IPython/sphinxext/ipython_directive.py +0 -0
  298. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/__init__.py +0 -0
  299. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/console.py +0 -0
  300. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/debugger.py +0 -0
  301. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/embed.py +0 -0
  302. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/interactiveshell.py +0 -0
  303. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/ipapp.py +0 -0
  304. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/magics.py +0 -0
  305. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/prompts.py +0 -0
  306. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  307. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  308. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  309. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  310. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  311. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  312. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  313. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  314. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  315. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  316. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  317. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/ptutils.py +0 -0
  318. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  319. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  320. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  321. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/shortcuts/filters.py +0 -0
  322. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/__init__.py +0 -0
  323. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  324. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_embed.py +0 -0
  325. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_help.py +0 -0
  326. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  327. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  328. {ipython-8.30.0 → ipython-8.31.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  329. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/__init__.py +0 -0
  330. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/decorators.py +0 -0
  331. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/globalipapp.py +0 -0
  332. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/ipunittest.py +0 -0
  333. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/Makefile +0 -0
  334. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/README.txt +0 -0
  335. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/__init__.py +0 -0
  336. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/dtexample.py +0 -0
  337. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  338. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  339. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/setup.py +0 -0
  340. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/simple.py +0 -0
  341. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/simplevars.py +0 -0
  342. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_combo.txt +0 -0
  343. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_example.txt +0 -0
  344. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  345. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  346. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/plugin/test_refs.py +0 -0
  347. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/skipdoctest.py +0 -0
  348. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/__init__.py +0 -0
  349. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_decorators.py +0 -0
  350. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  351. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tests/test_tools.py +0 -0
  352. {ipython-8.30.0 → ipython-8.31.0}/IPython/testing/tools.py +0 -0
  353. {ipython-8.30.0 → ipython-8.31.0}/IPython/tests/cve.py +0 -0
  354. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/PyColorize.py +0 -0
  355. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/__init__.py +0 -0
  356. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_cli.py +0 -0
  357. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_common.py +0 -0
  358. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_emscripten.py +0 -0
  359. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_posix.py +0 -0
  360. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_win32.py +0 -0
  361. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/_process_win32_controller.py +0 -0
  362. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/capture.py +0 -0
  363. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/colorable.py +0 -0
  364. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/coloransi.py +0 -0
  365. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/contexts.py +0 -0
  366. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/daemonize.py +0 -0
  367. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/data.py +0 -0
  368. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/decorators.py +0 -0
  369. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/dir2.py +0 -0
  370. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/docs.py +0 -0
  371. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/encoding.py +0 -0
  372. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/eventful.py +0 -0
  373. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/frame.py +0 -0
  374. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/generics.py +0 -0
  375. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/importstring.py +0 -0
  376. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/io.py +0 -0
  377. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/ipstruct.py +0 -0
  378. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/jsonutil.py +0 -0
  379. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/localinterfaces.py +0 -0
  380. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/log.py +0 -0
  381. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/module_paths.py +0 -0
  382. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/openpy.py +0 -0
  383. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/path.py +0 -0
  384. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/process.py +0 -0
  385. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/py3compat.py +0 -0
  386. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/sentinel.py +0 -0
  387. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/shimmodule.py +0 -0
  388. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/signatures.py +0 -0
  389. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/strdispatch.py +0 -0
  390. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/sysinfo.py +0 -0
  391. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/syspathcontext.py +0 -0
  392. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tempdir.py +0 -0
  393. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/terminal.py +0 -0
  394. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/__init__.py +0 -0
  395. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_capture.py +0 -0
  396. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_decorators.py +0 -0
  397. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_deprecated.py +0 -0
  398. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_dir2.py +0 -0
  399. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_imports.py +0 -0
  400. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_importstring.py +0 -0
  401. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_io.py +0 -0
  402. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_module_paths.py +0 -0
  403. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_openpy.py +0 -0
  404. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_path.py +0 -0
  405. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_process.py +0 -0
  406. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  407. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  408. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  409. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_tempdir.py +0 -0
  410. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_text.py +0 -0
  411. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  412. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tests/test_wildcard.py +0 -0
  413. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/text.py +0 -0
  414. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/timing.py +0 -0
  415. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tokenutil.py +0 -0
  416. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/traitlets.py +0 -0
  417. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/tz.py +0 -0
  418. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/ulinecache.py +0 -0
  419. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/version.py +0 -0
  420. {ipython-8.30.0 → ipython-8.31.0}/IPython/utils/wildcard.py +0 -0
  421. {ipython-8.30.0 → ipython-8.31.0}/LICENSE +0 -0
  422. {ipython-8.30.0 → ipython-8.31.0}/MANIFEST.in +0 -0
  423. {ipython-8.30.0 → ipython-8.31.0}/README.rst +0 -0
  424. {ipython-8.30.0 → ipython-8.31.0}/_build_meta.py +0 -0
  425. {ipython-8.30.0 → ipython-8.31.0}/docs/Makefile +0 -0
  426. {ipython-8.30.0 → ipython-8.31.0}/docs/README.rst +0 -0
  427. {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_api.py +0 -0
  428. {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_config.py +0 -0
  429. {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_magics.py +0 -0
  430. {ipython-8.30.0 → ipython-8.31.0}/docs/autogen_shortcuts.py +0 -0
  431. {ipython-8.30.0 → ipython-8.31.0}/docs/make.cmd +0 -0
  432. {ipython-8.30.0 → ipython-8.31.0}/docs/man/ipython.1 +0 -0
  433. {ipython-8.30.0 → ipython-8.31.0}/docs/requirements.txt +0 -0
  434. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/running-crop.png +0 -0
  435. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/running.png +0 -0
  436. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/treeview.png +0 -0
  437. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/user-interface.png +0 -0
  438. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/2.0/widgets.png +0 -0
  439. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  440. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  441. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  442. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  443. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  444. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  445. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  446. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  447. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  448. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  449. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  450. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/autosuggest.gif +0 -0
  451. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  452. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  453. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  454. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  455. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  456. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  457. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  458. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  459. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  460. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  461. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  462. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  463. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  464. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  465. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  466. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ms_visual_studio.png +0 -0
  467. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/notebook_specgram.png +0 -0
  468. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/ptshell_features.png +0 -0
  469. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/qtconsole.png +0 -0
  470. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  471. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_images/unicode_completion.png +0 -0
  472. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/favicon.ico +0 -0
  473. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/logo.png +0 -0
  474. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_static/theme_overrides.css +0 -0
  475. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_templates/breadcrumbs.html +0 -0
  476. {ipython-8.30.0 → ipython-8.31.0}/docs/source/_templates/notebook_redirect.html +0 -0
  477. {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/history.rst +0 -0
  478. {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/index.rst +0 -0
  479. {ipython-8.30.0 → ipython-8.31.0}/docs/source/about/license_and_copyright.rst +0 -0
  480. {ipython-8.30.0 → ipython-8.31.0}/docs/source/api/index.rst +0 -0
  481. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/callbacks.rst +0 -0
  482. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/custommagics.rst +0 -0
  483. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/details.rst +0 -0
  484. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/eventloops.rst +0 -0
  485. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/autoreload.rst +0 -0
  486. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/index.rst +0 -0
  487. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/extensions/storemagic.rst +0 -0
  488. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/index.rst +0 -0
  489. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/integrating.rst +0 -0
  490. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/intro.rst +0 -0
  491. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/options/index.rst +0 -0
  492. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  493. {ipython-8.30.0 → ipython-8.31.0}/docs/source/config/shortcuts/index.rst +0 -0
  494. {ipython-8.30.0 → ipython-8.31.0}/docs/source/coredev/index.rst +0 -0
  495. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/config.rst +0 -0
  496. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/execution.rst +0 -0
  497. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  498. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  499. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/other_kernels.png +0 -0
  500. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/figs/other_kernels.svg +0 -0
  501. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/how_ipython_works.rst +0 -0
  502. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/index.rst +0 -0
  503. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/inputhook_app.rst +0 -0
  504. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/kernels.rst +0 -0
  505. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/lexer.rst +0 -0
  506. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/messaging.rst +0 -0
  507. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/pycompat.rst +0 -0
  508. {ipython-8.30.0 → ipython-8.31.0}/docs/source/development/wrapperkernels.rst +0 -0
  509. {ipython-8.30.0 → ipython-8.31.0}/docs/source/index.rst +0 -0
  510. {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/index.rst +0 -0
  511. {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/install.rst +0 -0
  512. {ipython-8.30.0 → ipython-8.31.0}/docs/source/install/kernel_install.rst +0 -0
  513. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/autoawait.rst +0 -0
  514. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/besselj.png +0 -0
  515. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  516. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/jn.html +0 -0
  517. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  518. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/index.rst +0 -0
  519. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/magics.rst +0 -0
  520. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/plotting.rst +0 -0
  521. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  522. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/reference.rst +0 -0
  523. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/shell.rst +0 -0
  524. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/tips.rst +0 -0
  525. {ipython-8.30.0 → ipython-8.31.0}/docs/source/interactive/tutorial.rst +0 -0
  526. {ipython-8.30.0 → ipython-8.31.0}/docs/source/links.txt +0 -0
  527. {ipython-8.30.0 → ipython-8.31.0}/docs/source/overview.rst +0 -0
  528. {ipython-8.30.0 → ipython-8.31.0}/docs/source/parallel/index.rst +0 -0
  529. {ipython-8.30.0 → ipython-8.31.0}/docs/source/sphinx.toml +0 -0
  530. {ipython-8.30.0 → ipython-8.31.0}/docs/source/sphinxext.rst +0 -0
  531. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/development.rst +0 -0
  532. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  533. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  534. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  535. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  536. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  537. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  538. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  539. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  540. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  541. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  542. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  543. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/index.rst +0 -0
  544. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/README.md +0 -0
  545. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  546. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  547. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.10.rst +0 -0
  548. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.11.rst +0 -0
  549. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.12.rst +0 -0
  550. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.13.rst +0 -0
  551. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.8.rst +0 -0
  552. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version0.9.rst +0 -0
  553. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version1.0.rst +0 -0
  554. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version2.0.rst +0 -0
  555. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version3.rst +0 -0
  556. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  557. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version4.rst +0 -0
  558. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version5.rst +0 -0
  559. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version6.rst +0 -0
  560. {ipython-8.30.0 → ipython-8.31.0}/docs/source/whatsnew/version7.rst +0 -0
  561. {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/apigen.py +0 -0
  562. {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/configtraits.py +0 -0
  563. {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/github.py +0 -0
  564. {ipython-8.30.0 → ipython-8.31.0}/docs/sphinxext/magics.py +0 -0
  565. {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/Index.ipynb +0 -0
  566. {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_class_long.py +0 -0
  567. {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_class_short.py +0 -0
  568. {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/embed_function.py +0 -0
  569. {ipython-8.30.0 → ipython-8.31.0}/examples/Embedding/start_ipython_config.py +0 -0
  570. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  571. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  572. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  573. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  574. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  575. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  576. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  577. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Index.ipynb +0 -0
  578. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  579. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  580. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  581. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  582. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  583. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  584. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  585. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  586. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  587. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  588. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/data/flare.json +0 -0
  589. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/example-demo.py +0 -0
  590. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  591. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  592. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  593. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  594. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  595. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/ipython.desktop +0 -0
  596. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  597. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  598. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  599. {ipython-8.30.0 → ipython-8.31.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  600. {ipython-8.30.0 → ipython-8.31.0}/examples/Index.ipynb +0 -0
  601. {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  602. {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  603. {ipython-8.30.0 → ipython-8.31.0}/examples/images/FrontendKernel.png +0 -0
  604. {ipython-8.30.0 → ipython-8.31.0}/examples/images/animation.m4v +0 -0
  605. {ipython-8.30.0 → ipython-8.31.0}/examples/images/ipython_logo.png +0 -0
  606. {ipython-8.30.0 → ipython-8.31.0}/examples/images/python_logo.svg +0 -0
  607. {ipython-8.30.0 → ipython-8.31.0}/examples/utils/cwd_prompt.py +0 -0
  608. {ipython-8.30.0 → ipython-8.31.0}/examples/utils/list_pyfiles.ipy +0 -0
  609. {ipython-8.30.0 → ipython-8.31.0}/examples/utils/list_subdirs.ipy +0 -0
  610. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/dependency_links.txt +0 -0
  611. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/entry_points.txt +0 -0
  612. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/not-zip-safe +0 -0
  613. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/requires.txt +0 -0
  614. {ipython-8.30.0 → ipython-8.31.0}/ipython.egg-info/top_level.txt +0 -0
  615. {ipython-8.30.0 → ipython-8.31.0}/long_description.rst +0 -0
  616. {ipython-8.30.0 → ipython-8.31.0}/pyproject.toml +0 -0
  617. {ipython-8.30.0 → ipython-8.31.0}/scripts/ipython.ico +0 -0
  618. {ipython-8.30.0 → ipython-8.31.0}/scripts/ipython_nb.ico +0 -0
  619. {ipython-8.30.0 → ipython-8.31.0}/setup.cfg +0 -0
  620. {ipython-8.30.0 → ipython-8.31.0}/setup.py +0 -0
  621. {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 not "%" in word[2:]:
453
+ if "%" not in word[2:]:
453
454
  word = word[2:]
454
455
  prio2 = 2
455
456
  elif word.startswith('%'):
456
- if not "%" in word[1:]:
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
- l = line if cursor_pos is None else line[:cursor_pos]
965
- return self._delim_re.split(l)[-1]
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
- def _attr_matches(self, text, include_prefix=True) -> Tuple[Sequence[str], str]:
1145
- m2 = re.match(r"(.+)\.(\w*)$", self.line_buffer)
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[1:]
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) as e:
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(l) + 1 for l in lines[:line]) + column
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); openPar = 0
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(); break
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.curframe:
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(assemble_python_lines, self).__init__(None)
203
+ super().__init__(None)
171
204
 
172
205
  def output(self, tokens):
173
206
  return self.reset()
@@ -16,7 +16,7 @@
16
16
  # release. 'dev' as a _version_extra string means this is a development
17
17
  # version
18
18
  _version_major = 8
19
- _version_minor = 30
19
+ _version_minor = 31
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -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
- pstart, pstop = 0, 0
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
- pstart, pstop = start, stop
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
- def test_protect_filename():
152
- if sys.platform == "win32":
153
- pairs = [
154
- ("abc", "abc"),
155
- (" abc", '" abc"'),
156
- ("a bc", '"a bc"'),
157
- ("a bc", '"a bc"'),
158
- (" bc", '" bc"'),
159
- ]
160
- else:
161
- pairs = [
162
- ("abc", "abc"),
163
- (" abc", r"\ abc"),
164
- ("a bc", r"a\ bc"),
165
- ("a bc", r"a\ \ bc"),
166
- (" bc", r"\ \ bc"),
167
- # On posix, we also protect parens and other special characters.
168
- ("a(bc", r"a\(bc"),
169
- ("a)bc", r"a\)bc"),
170
- ("a( )bc", r"a\(\ \)bc"),
171
- ("a[1]bc", r"a\[1\]bc"),
172
- ("a{1}bc", r"a\{1\}bc"),
173
- ("a#bc", r"a\#bc"),
174
- ("a?bc", r"a\?bc"),
175
- ("a=bc", r"a\=bc"),
176
- ("a\\bc", r"a\\bc"),
177
- ("a|bc", r"a\|bc"),
178
- ("a;bc", r"a\;bc"),
179
- ("a:bc", r"a\:bc"),
180
- ("a'bc", r"a\'bc"),
181
- ("a*bc", r"a\*bc"),
182
- ('a"bc', r"a\"bc"),
183
- ("a^bc", r"a\^bc"),
184
- ("a&bc", r"a\&bc"),
185
- ]
186
- # run the actual tests
187
- for s1, s2 in pairs:
188
- s1p = completer.protect_filename(s1)
189
- assert s1p == s2
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 = "a8541f5c2"
2
+ commit = "22d6a1c16"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipython
3
- Version: 8.30.0
3
+ Version: 8.31.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
@@ -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.inputtransforms
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 cutom IPython formatters, and how
12
- you can register formatters for custo mime types.
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipython
3
- Version: 8.30.0
3
+ Version: 8.31.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org