ipython 9.10.0__tar.gz → 9.11.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 (441) hide show
  1. {ipython-9.10.0 → ipython-9.11.0}/IPython/__init__.py +2 -2
  2. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/completer.py +2 -6
  3. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/events.py +12 -5
  4. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/guarded_eval.py +1 -4
  5. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/history.py +11 -1
  6. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/inputtransformer2.py +2 -25
  7. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/interactiveshell.py +53 -7
  8. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magic.py +104 -63
  9. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/basic.py +1 -1
  10. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/execution.py +4 -3
  11. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/release.py +1 -1
  12. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/ultratb.py +1 -5
  13. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/deduperreload/deduperreload.py +2 -2
  14. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/decorators.py +4 -1
  15. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_common.py +18 -15
  16. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_win32.py +5 -6
  17. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_sysinfo.py +1 -1
  18. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/contexts.py +14 -5
  19. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/decorators.py +16 -12
  20. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/dir2.py +6 -3
  21. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/frame.py +7 -4
  22. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/openpy.py +6 -4
  23. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/py3compat.py +1 -1
  24. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/text.py +1 -4
  25. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/timing.py +18 -5
  26. {ipython-9.10.0/ipython.egg-info → ipython-9.11.0}/PKG-INFO +13 -13
  27. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version9.rst +69 -0
  28. {ipython-9.10.0 → ipython-9.11.0/ipython.egg-info}/PKG-INFO +13 -13
  29. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/requires.txt +11 -13
  30. {ipython-9.10.0 → ipython-9.11.0}/pyproject.toml +38 -18
  31. {ipython-9.10.0 → ipython-9.11.0}/setup.py +0 -51
  32. {ipython-9.10.0 → ipython-9.11.0}/tests/test_completer.py +1 -1
  33. {ipython-9.10.0 → ipython-9.11.0}/tests/test_guarded_eval.py +1 -4
  34. {ipython-9.10.0 → ipython-9.11.0}/tests/test_oinspect.py +1 -1
  35. {ipython-9.10.0 → ipython-9.11.0}/tests/test_pretty.py +6 -1
  36. {ipython-9.10.0 → ipython-9.11.0}/tests/test_shortcuts.py +1 -0
  37. {ipython-9.10.0 → ipython-9.11.0}/tests/test_zzz_autoreload.py +0 -2
  38. {ipython-9.10.0 → ipython-9.11.0}/.flake8 +0 -0
  39. {ipython-9.10.0 → ipython-9.11.0}/.mailmap +0 -0
  40. {ipython-9.10.0 → ipython-9.11.0}/.pre-commit-config.yaml +0 -0
  41. {ipython-9.10.0 → ipython-9.11.0}/COPYING.rst +0 -0
  42. {ipython-9.10.0 → ipython-9.11.0}/IPython/__main__.py +0 -0
  43. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/__init__.py +0 -0
  44. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/alias.py +0 -0
  45. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/application.py +0 -0
  46. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/async_helpers.py +0 -0
  47. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/autocall.py +0 -0
  48. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/builtin_trap.py +0 -0
  49. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/compilerop.py +0 -0
  50. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/completerlib.py +0 -0
  51. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/crashhandler.py +0 -0
  52. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/debugger.py +0 -0
  53. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/debugger_backport.py +0 -0
  54. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/display.py +0 -0
  55. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/display_functions.py +0 -0
  56. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/display_trap.py +0 -0
  57. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/displayhook.py +0 -0
  58. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/displaypub.py +0 -0
  59. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/doctb.py +0 -0
  60. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/error.py +0 -0
  61. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/extensions.py +0 -0
  62. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/formatters.py +0 -0
  63. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/getipython.py +0 -0
  64. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/historyapp.py +0 -0
  65. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/hooks.py +0 -0
  66. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/latex_symbols.py +0 -0
  67. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/logger.py +0 -0
  68. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/macro.py +0 -0
  69. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magic_arguments.py +0 -0
  70. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/__init__.py +0 -0
  71. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/ast_mod.py +0 -0
  72. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/auto.py +0 -0
  73. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/code.py +0 -0
  74. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/config.py +0 -0
  75. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/display.py +0 -0
  76. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/extension.py +0 -0
  77. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/history.py +0 -0
  78. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/logging.py +0 -0
  79. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/namespace.py +0 -0
  80. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/osm.py +0 -0
  81. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/packaging.py +0 -0
  82. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/pylab.py +0 -0
  83. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/magics/script.py +0 -0
  84. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/oinspect.py +0 -0
  85. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/page.py +0 -0
  86. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/payload.py +0 -0
  87. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/payloadpage.py +0 -0
  88. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/prefilter.py +0 -0
  89. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/profile/README_STARTUP +0 -0
  90. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/profileapp.py +0 -0
  91. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/profiledir.py +0 -0
  92. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/pylabtools.py +0 -0
  93. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/shellapp.py +0 -0
  94. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/splitinput.py +0 -0
  95. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/tbtools.py +0 -0
  96. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/tips.py +0 -0
  97. {ipython-9.10.0 → ipython-9.11.0}/IPython/core/usage.py +0 -0
  98. {ipython-9.10.0 → ipython-9.11.0}/IPython/display.py +0 -0
  99. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/__init__.py +0 -0
  100. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/autoreload.py +0 -0
  101. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/deduperreload/__init__.py +0 -0
  102. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/deduperreload/deduperreload_patching.py +0 -0
  103. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/storemagic.py +0 -0
  104. {ipython-9.10.0 → ipython-9.11.0}/IPython/extensions/tests/test_deduperreload.py +0 -0
  105. {ipython-9.10.0 → ipython-9.11.0}/IPython/external/__init__.py +0 -0
  106. {ipython-9.10.0 → ipython-9.11.0}/IPython/external/pickleshare.py +0 -0
  107. {ipython-9.10.0 → ipython-9.11.0}/IPython/external/qt_for_kernel.py +0 -0
  108. {ipython-9.10.0 → ipython-9.11.0}/IPython/external/qt_loaders.py +0 -0
  109. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/__init__.py +0 -0
  110. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/backgroundjobs.py +0 -0
  111. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/clipboard.py +0 -0
  112. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/deepreload.py +0 -0
  113. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/demo.py +0 -0
  114. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/display.py +0 -0
  115. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/editorhooks.py +0 -0
  116. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/guisupport.py +0 -0
  117. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/latextools.py +0 -0
  118. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/lexers.py +0 -0
  119. {ipython-9.10.0 → ipython-9.11.0}/IPython/lib/pretty.py +0 -0
  120. {ipython-9.10.0 → ipython-9.11.0}/IPython/paths.py +0 -0
  121. {ipython-9.10.0 → ipython-9.11.0}/IPython/py.typed +0 -0
  122. {ipython-9.10.0 → ipython-9.11.0}/IPython/sphinxext/__init__.py +0 -0
  123. {ipython-9.10.0 → ipython-9.11.0}/IPython/sphinxext/custom_doctests.py +0 -0
  124. {ipython-9.10.0 → ipython-9.11.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  125. {ipython-9.10.0 → ipython-9.11.0}/IPython/sphinxext/ipython_directive.py +0 -0
  126. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/__init__.py +0 -0
  127. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/debugger.py +0 -0
  128. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/embed.py +0 -0
  129. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/interactiveshell.py +0 -0
  130. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/ipapp.py +0 -0
  131. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/magics.py +0 -0
  132. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/prompts.py +0 -0
  133. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  134. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  135. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  136. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  137. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  138. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  139. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  140. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  141. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  142. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  143. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  144. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/ptutils.py +0 -0
  145. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  146. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  147. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  148. {ipython-9.10.0 → ipython-9.11.0}/IPython/terminal/shortcuts/filters.py +0 -0
  149. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/__init__.py +0 -0
  150. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/globalipapp.py +0 -0
  151. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/ipunittest.py +0 -0
  152. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/Makefile +0 -0
  153. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/__init__.py +0 -0
  154. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/dtexample.py +0 -0
  155. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  156. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  157. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/setup.py +0 -0
  158. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/simple.py +0 -0
  159. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/simplevars.py +0 -0
  160. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/test_combo.txt +0 -0
  161. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/test_example.txt +0 -0
  162. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  163. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  164. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/plugin/test_refs.py +0 -0
  165. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/skipdoctest.py +0 -0
  166. {ipython-9.10.0 → ipython-9.11.0}/IPython/testing/tools.py +0 -0
  167. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/PyColorize.py +0 -0
  168. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/__init__.py +0 -0
  169. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_cli.py +0 -0
  170. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_emscripten.py +0 -0
  171. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_posix.py +0 -0
  172. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/_process_win32_controller.py +0 -0
  173. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/capture.py +0 -0
  174. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/coloransi.py +0 -0
  175. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/data.py +0 -0
  176. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/docs.py +0 -0
  177. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/encoding.py +0 -0
  178. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/eventful.py +0 -0
  179. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/generics.py +0 -0
  180. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/importstring.py +0 -0
  181. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/io.py +0 -0
  182. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/ipstruct.py +0 -0
  183. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/jsonutil.py +0 -0
  184. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/log.py +0 -0
  185. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/module_paths.py +0 -0
  186. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/path.py +0 -0
  187. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/process.py +0 -0
  188. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/sentinel.py +0 -0
  189. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/strdispatch.py +0 -0
  190. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/sysinfo.py +0 -0
  191. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/syspathcontext.py +0 -0
  192. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/tempdir.py +0 -0
  193. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/terminal.py +0 -0
  194. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/tokenutil.py +0 -0
  195. {ipython-9.10.0 → ipython-9.11.0}/IPython/utils/wildcard.py +0 -0
  196. {ipython-9.10.0 → ipython-9.11.0}/LICENSE +0 -0
  197. {ipython-9.10.0 → ipython-9.11.0}/MANIFEST.in +0 -0
  198. {ipython-9.10.0 → ipython-9.11.0}/README.rst +0 -0
  199. {ipython-9.10.0 → ipython-9.11.0}/_build_meta.py +0 -0
  200. {ipython-9.10.0 → ipython-9.11.0}/docs/Makefile +0 -0
  201. {ipython-9.10.0 → ipython-9.11.0}/docs/README.rst +0 -0
  202. {ipython-9.10.0 → ipython-9.11.0}/docs/autogen_api.py +0 -0
  203. {ipython-9.10.0 → ipython-9.11.0}/docs/autogen_config.py +0 -0
  204. {ipython-9.10.0 → ipython-9.11.0}/docs/autogen_magics.py +0 -0
  205. {ipython-9.10.0 → ipython-9.11.0}/docs/autogen_shortcuts.py +0 -0
  206. {ipython-9.10.0 → ipython-9.11.0}/docs/make.cmd +0 -0
  207. {ipython-9.10.0 → ipython-9.11.0}/docs/man/ipython.1 +0 -0
  208. {ipython-9.10.0 → ipython-9.11.0}/docs/requirements.txt +0 -0
  209. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/2.0/running-crop.png +0 -0
  210. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/2.0/running.png +0 -0
  211. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/2.0/treeview.png +0 -0
  212. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/2.0/user-interface.png +0 -0
  213. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/2.0/widgets.png +0 -0
  214. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  215. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  216. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  217. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  218. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  219. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  220. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  221. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  222. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  223. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  224. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  225. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/autosuggest.gif +0 -0
  226. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  227. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  228. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  229. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  230. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  231. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  232. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  233. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  234. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  235. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  236. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  237. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  238. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  239. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  240. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  241. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ms_visual_studio.png +0 -0
  242. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/notebook_specgram.png +0 -0
  243. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/ptshell_features.png +0 -0
  244. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/qtconsole.png +0 -0
  245. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  246. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_images/unicode_completion.png +0 -0
  247. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_static/favicon.ico +0 -0
  248. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_static/logo.png +0 -0
  249. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_static/theme_overrides.css +0 -0
  250. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_templates/breadcrumbs.html +0 -0
  251. {ipython-9.10.0 → ipython-9.11.0}/docs/source/_templates/notebook_redirect.html +0 -0
  252. {ipython-9.10.0 → ipython-9.11.0}/docs/source/about/history.rst +0 -0
  253. {ipython-9.10.0 → ipython-9.11.0}/docs/source/about/index.rst +0 -0
  254. {ipython-9.10.0 → ipython-9.11.0}/docs/source/about/license_and_copyright.rst +0 -0
  255. {ipython-9.10.0 → ipython-9.11.0}/docs/source/api/index.rst +0 -0
  256. {ipython-9.10.0 → ipython-9.11.0}/docs/source/conf.py +0 -0
  257. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/callbacks.rst +0 -0
  258. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/custommagics.rst +0 -0
  259. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/details.rst +0 -0
  260. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/eventloops.rst +0 -0
  261. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/extensions/autoreload.rst +0 -0
  262. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/extensions/index.rst +0 -0
  263. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/extensions/storemagic.rst +0 -0
  264. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/index.rst +0 -0
  265. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/inputtransforms.rst +0 -0
  266. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/integrating.rst +0 -0
  267. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/intro.rst +0 -0
  268. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/options/index.rst +0 -0
  269. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  270. {ipython-9.10.0 → ipython-9.11.0}/docs/source/config/shortcuts/index.rst +0 -0
  271. {ipython-9.10.0 → ipython-9.11.0}/docs/source/coredev/index.rst +0 -0
  272. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/config.rst +0 -0
  273. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/execution.rst +0 -0
  274. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  275. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  276. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/figs/other_kernels.png +0 -0
  277. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/figs/other_kernels.svg +0 -0
  278. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/how_ipython_works.rst +0 -0
  279. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/index.rst +0 -0
  280. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/inputhook_app.rst +0 -0
  281. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/kernels.rst +0 -0
  282. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/messaging.rst +0 -0
  283. {ipython-9.10.0 → ipython-9.11.0}/docs/source/development/wrapperkernels.rst +0 -0
  284. {ipython-9.10.0 → ipython-9.11.0}/docs/source/index.rst +0 -0
  285. {ipython-9.10.0 → ipython-9.11.0}/docs/source/install/index.rst +0 -0
  286. {ipython-9.10.0 → ipython-9.11.0}/docs/source/install/install.rst +0 -0
  287. {ipython-9.10.0 → ipython-9.11.0}/docs/source/install/kernel_install.rst +0 -0
  288. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/autoawait.rst +0 -0
  289. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/index.rst +0 -0
  290. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/magics.rst +0 -0
  291. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/plotting.rst +0 -0
  292. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  293. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/reference.rst +0 -0
  294. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/shell.rst +0 -0
  295. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/tips.rst +0 -0
  296. {ipython-9.10.0 → ipython-9.11.0}/docs/source/interactive/tutorial.rst +0 -0
  297. {ipython-9.10.0 → ipython-9.11.0}/docs/source/links.txt +0 -0
  298. {ipython-9.10.0 → ipython-9.11.0}/docs/source/overview.rst +0 -0
  299. {ipython-9.10.0 → ipython-9.11.0}/docs/source/parallel/index.rst +0 -0
  300. {ipython-9.10.0 → ipython-9.11.0}/docs/source/sphinx.toml +0 -0
  301. {ipython-9.10.0 → ipython-9.11.0}/docs/source/sphinxext.rst +0 -0
  302. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/development.rst +0 -0
  303. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  304. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  305. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  306. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  307. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  308. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  309. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  310. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  311. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  312. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  313. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  314. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/index.rst +0 -0
  315. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/pr/README.md +0 -0
  316. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  317. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  318. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.10.rst +0 -0
  319. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.11.rst +0 -0
  320. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.12.rst +0 -0
  321. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.13.rst +0 -0
  322. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.8.rst +0 -0
  323. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version0.9.rst +0 -0
  324. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version1.0.rst +0 -0
  325. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version2.0.rst +0 -0
  326. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version3.rst +0 -0
  327. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  328. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version4.rst +0 -0
  329. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version5.rst +0 -0
  330. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version6.rst +0 -0
  331. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version7.rst +0 -0
  332. {ipython-9.10.0 → ipython-9.11.0}/docs/source/whatsnew/version8.rst +0 -0
  333. {ipython-9.10.0 → ipython-9.11.0}/docs/sphinxext/apigen.py +0 -0
  334. {ipython-9.10.0 → ipython-9.11.0}/docs/sphinxext/configtraits.py +0 -0
  335. {ipython-9.10.0 → ipython-9.11.0}/docs/sphinxext/magics.py +0 -0
  336. {ipython-9.10.0 → ipython-9.11.0}/examples/Embedding/embed_class_long.py +0 -0
  337. {ipython-9.10.0 → ipython-9.11.0}/examples/Embedding/embed_class_short.py +0 -0
  338. {ipython-9.10.0 → ipython-9.11.0}/examples/Embedding/embed_function.py +0 -0
  339. {ipython-9.10.0 → ipython-9.11.0}/examples/Embedding/start_ipython_config.py +0 -0
  340. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/example-demo.py +0 -0
  341. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  342. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  343. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  344. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  345. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  346. {ipython-9.10.0 → ipython-9.11.0}/examples/IPython Kernel/ipython.desktop +0 -0
  347. {ipython-9.10.0 → ipython-9.11.0}/examples/auto_suggest_llm.py +0 -0
  348. {ipython-9.10.0 → ipython-9.11.0}/examples/utils/cwd_prompt.py +0 -0
  349. {ipython-9.10.0 → ipython-9.11.0}/examples/utils/list_pyfiles.ipy +0 -0
  350. {ipython-9.10.0 → ipython-9.11.0}/examples/utils/list_subdirs.ipy +0 -0
  351. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/SOURCES.txt +0 -0
  352. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/dependency_links.txt +0 -0
  353. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/entry_points.txt +0 -0
  354. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/not-zip-safe +0 -0
  355. {ipython-9.10.0 → ipython-9.11.0}/ipython.egg-info/top_level.txt +0 -0
  356. {ipython-9.10.0 → ipython-9.11.0}/long_description.rst +0 -0
  357. {ipython-9.10.0 → ipython-9.11.0}/scripts/ipython.ico +0 -0
  358. {ipython-9.10.0 → ipython-9.11.0}/scripts/ipython_nb.ico +0 -0
  359. {ipython-9.10.0 → ipython-9.11.0}/setup.cfg +0 -0
  360. {ipython-9.10.0 → ipython-9.11.0}/setupbase.py +0 -0
  361. {ipython-9.10.0 → ipython-9.11.0}/tests/2x2.jpg +0 -0
  362. {ipython-9.10.0 → ipython-9.11.0}/tests/2x2.png +0 -0
  363. {ipython-9.10.0 → ipython-9.11.0}/tests/__init__.py +0 -0
  364. {ipython-9.10.0 → ipython-9.11.0}/tests/bad_all.py +0 -0
  365. {ipython-9.10.0 → ipython-9.11.0}/tests/conftest.py +0 -0
  366. {ipython-9.10.0 → ipython-9.11.0}/tests/fake_ext_dir/daft_extension.py +0 -0
  367. {ipython-9.10.0 → ipython-9.11.0}/tests/fake_llm.py +0 -0
  368. {ipython-9.10.0 → ipython-9.11.0}/tests/nonascii.py +0 -0
  369. {ipython-9.10.0 → ipython-9.11.0}/tests/nonascii2.py +0 -0
  370. {ipython-9.10.0 → ipython-9.11.0}/tests/print_argv.py +0 -0
  371. {ipython-9.10.0 → ipython-9.11.0}/tests/refbug.py +0 -0
  372. {ipython-9.10.0 → ipython-9.11.0}/tests/simpleerr.py +0 -0
  373. {ipython-9.10.0 → ipython-9.11.0}/tests/tclass.py +0 -0
  374. {ipython-9.10.0 → ipython-9.11.0}/tests/test.wav +0 -0
  375. {ipython-9.10.0 → ipython-9.11.0}/tests/test_alias.py +0 -0
  376. {ipython-9.10.0 → ipython-9.11.0}/tests/test_application.py +0 -0
  377. {ipython-9.10.0 → ipython-9.11.0}/tests/test_async_helpers.py +0 -0
  378. {ipython-9.10.0 → ipython-9.11.0}/tests/test_autocall.py +0 -0
  379. {ipython-9.10.0 → ipython-9.11.0}/tests/test_backgroundjobs.py +0 -0
  380. {ipython-9.10.0 → ipython-9.11.0}/tests/test_capture.py +0 -0
  381. {ipython-9.10.0 → ipython-9.11.0}/tests/test_clipboard.py +0 -0
  382. {ipython-9.10.0 → ipython-9.11.0}/tests/test_compilerop.py +0 -0
  383. {ipython-9.10.0 → ipython-9.11.0}/tests/test_completerlib.py +0 -0
  384. {ipython-9.10.0 → ipython-9.11.0}/tests/test_cve.py +0 -0
  385. {ipython-9.10.0 → ipython-9.11.0}/tests/test_debug_magic.py +0 -0
  386. {ipython-9.10.0 → ipython-9.11.0}/tests/test_debugger.py +0 -0
  387. {ipython-9.10.0 → ipython-9.11.0}/tests/test_decorators.py +0 -0
  388. {ipython-9.10.0 → ipython-9.11.0}/tests/test_decorators_2.py +0 -0
  389. {ipython-9.10.0 → ipython-9.11.0}/tests/test_deepreload.py +0 -0
  390. {ipython-9.10.0 → ipython-9.11.0}/tests/test_dir2.py +0 -0
  391. {ipython-9.10.0 → ipython-9.11.0}/tests/test_display.py +0 -0
  392. {ipython-9.10.0 → ipython-9.11.0}/tests/test_display_2.py +0 -0
  393. {ipython-9.10.0 → ipython-9.11.0}/tests/test_displayhook.py +0 -0
  394. {ipython-9.10.0 → ipython-9.11.0}/tests/test_editorhooks.py +0 -0
  395. {ipython-9.10.0 → ipython-9.11.0}/tests/test_embed.py +0 -0
  396. {ipython-9.10.0 → ipython-9.11.0}/tests/test_events.py +0 -0
  397. {ipython-9.10.0 → ipython-9.11.0}/tests/test_exceptiongroup_tb.py +0 -0
  398. {ipython-9.10.0 → ipython-9.11.0}/tests/test_extension.py +0 -0
  399. {ipython-9.10.0 → ipython-9.11.0}/tests/test_formatters.py +0 -0
  400. {ipython-9.10.0 → ipython-9.11.0}/tests/test_handlers.py +0 -0
  401. {ipython-9.10.0 → ipython-9.11.0}/tests/test_help.py +0 -0
  402. {ipython-9.10.0 → ipython-9.11.0}/tests/test_history.py +0 -0
  403. {ipython-9.10.0 → ipython-9.11.0}/tests/test_hooks.py +0 -0
  404. {ipython-9.10.0 → ipython-9.11.0}/tests/test_imports.py +0 -0
  405. {ipython-9.10.0 → ipython-9.11.0}/tests/test_importstring.py +0 -0
  406. {ipython-9.10.0 → ipython-9.11.0}/tests/test_inputtransformer2.py +0 -0
  407. {ipython-9.10.0 → ipython-9.11.0}/tests/test_inputtransformer2_line.py +0 -0
  408. {ipython-9.10.0 → ipython-9.11.0}/tests/test_interactiveshell.py +0 -0
  409. {ipython-9.10.0 → ipython-9.11.0}/tests/test_interactivshell.py +0 -0
  410. {ipython-9.10.0 → ipython-9.11.0}/tests/test_io.py +0 -0
  411. {ipython-9.10.0 → ipython-9.11.0}/tests/test_iplib.py +0 -0
  412. {ipython-9.10.0 → ipython-9.11.0}/tests/test_ipunittest.py +0 -0
  413. {ipython-9.10.0 → ipython-9.11.0}/tests/test_latextools.py +0 -0
  414. {ipython-9.10.0 → ipython-9.11.0}/tests/test_logger.py +0 -0
  415. {ipython-9.10.0 → ipython-9.11.0}/tests/test_magic.py +0 -0
  416. {ipython-9.10.0 → ipython-9.11.0}/tests/test_magic_arguments.py +0 -0
  417. {ipython-9.10.0 → ipython-9.11.0}/tests/test_magic_terminal.py +0 -0
  418. {ipython-9.10.0 → ipython-9.11.0}/tests/test_module_paths.py +0 -0
  419. {ipython-9.10.0 → ipython-9.11.0}/tests/test_openpy.py +0 -0
  420. {ipython-9.10.0 → ipython-9.11.0}/tests/test_page.py +0 -0
  421. {ipython-9.10.0 → ipython-9.11.0}/tests/test_path.py +0 -0
  422. {ipython-9.10.0 → ipython-9.11.0}/tests/test_paths.py +0 -0
  423. {ipython-9.10.0 → ipython-9.11.0}/tests/test_prefilter.py +0 -0
  424. {ipython-9.10.0 → ipython-9.11.0}/tests/test_process.py +0 -0
  425. {ipython-9.10.0 → ipython-9.11.0}/tests/test_profile.py +0 -0
  426. {ipython-9.10.0 → ipython-9.11.0}/tests/test_pt_inputhooks.py +0 -0
  427. {ipython-9.10.0 → ipython-9.11.0}/tests/test_pycolorize.py +0 -0
  428. {ipython-9.10.0 → ipython-9.11.0}/tests/test_pylabtools.py +0 -0
  429. {ipython-9.10.0 → ipython-9.11.0}/tests/test_qt_loaders.py +0 -0
  430. {ipython-9.10.0 → ipython-9.11.0}/tests/test_run.py +0 -0
  431. {ipython-9.10.0 → ipython-9.11.0}/tests/test_shellapp.py +0 -0
  432. {ipython-9.10.0 → ipython-9.11.0}/tests/test_splitinput.py +0 -0
  433. {ipython-9.10.0 → ipython-9.11.0}/tests/test_storemagic.py +0 -0
  434. {ipython-9.10.0 → ipython-9.11.0}/tests/test_sysinfo.py +0 -0
  435. {ipython-9.10.0 → ipython-9.11.0}/tests/test_tempdir.py +0 -0
  436. {ipython-9.10.0 → ipython-9.11.0}/tests/test_text.py +0 -0
  437. {ipython-9.10.0 → ipython-9.11.0}/tests/test_tips.py +0 -0
  438. {ipython-9.10.0 → ipython-9.11.0}/tests/test_tokenutil.py +0 -0
  439. {ipython-9.10.0 → ipython-9.11.0}/tests/test_tools.py +0 -0
  440. {ipython-9.10.0 → ipython-9.11.0}/tests/test_ultratb.py +0 -0
  441. {ipython-9.10.0 → ipython-9.11.0}/tests/test_wildcard.py +0 -0
@@ -27,13 +27,13 @@ import warnings
27
27
  #-----------------------------------------------------------------------------
28
28
 
29
29
  # Don't forget to also update setup.py when this changes!
30
- if sys.version_info < (3, 11):
30
+ if sys.version_info < (3, 12):
31
31
  raise ImportError(
32
32
  """
33
+ IPython 9.x supports Python 3.12 and above, following SPEC0
33
34
  IPython 8.31+ supports Python 3.11 and above, following SPEC0
34
35
  IPython 8.19+ supports Python 3.10 and above, following SPEC0.
35
36
  IPython 8.13+ supports Python 3.9 and above, following NEP 29.
36
- IPython 8.0-8.12 supports Python 3.8 and above, following NEP 29.
37
37
  When using Python 2.7, please install IPython 5.x LTS Long Term Support version.
38
38
  Python 3.3 and 3.4 were supported up to IPython 6.x.
39
39
  Python 3.5 was supported with IPython 7.0 to 7.9.
@@ -243,11 +243,7 @@ import __main__
243
243
 
244
244
  from typing import cast
245
245
 
246
- if sys.version_info < (3, 12):
247
- from typing_extensions import TypedDict, Protocol
248
- from typing import NotRequired, TypeAlias, TypeGuard
249
- else:
250
- from typing import TypedDict, NotRequired, Protocol, TypeAlias, TypeGuard
246
+ from typing import TypedDict, NotRequired, Protocol, TypeAlias, TypeGuard
251
247
 
252
248
 
253
249
  # skip module docstests
@@ -274,7 +270,7 @@ except ImportError:
274
270
  # write this). With below range we cover them all, with a density of ~67%
275
271
  # biggest next gap we consider only adds up about 1% density and there are 600
276
272
  # gaps that would need hard coding.
277
- _UNICODE_RANGES = [(32, 0x323B0), (0xE0001, 0xE01F0)]
273
+ _UNICODE_RANGES = [(32, 0x3347A), (0xE0001, 0xE01F0)]
278
274
 
279
275
  # Public API
280
276
  __all__ = ["Completer", "IPCompleter"]
@@ -15,10 +15,14 @@ events and the arguments which will be passed to them.
15
15
 
16
16
  from __future__ import annotations
17
17
 
18
- from typing import TYPE_CHECKING, Any, Callable, Iterable
18
+ from typing import TYPE_CHECKING, Any, Callable, Iterable, TypeVar
19
19
 
20
20
  if TYPE_CHECKING:
21
- from IPython.core.interactiveshell import InteractiveShell
21
+ from IPython.core.interactiveshell import (
22
+ ExecutionInfo,
23
+ ExecutionResult,
24
+ InteractiveShell,
25
+ )
22
26
 
23
27
 
24
28
  class EventManager:
@@ -106,7 +110,10 @@ class EventManager:
106
110
  # event_name -> prototype mapping
107
111
  available_events: dict[str, Callable[..., Any]] = {}
108
112
 
109
- def _define_event(callback_function: Callable[..., Any]) -> Callable[..., Any]:
113
+ _CallbackT = TypeVar("_CallbackT", bound=Callable[..., Any])
114
+
115
+ def _define_event(callback_function: _CallbackT) -> _CallbackT:
116
+ """Decorator to register a function as an available event prototype."""
110
117
  available_events[callback_function.__name__] = callback_function
111
118
  return callback_function
112
119
 
@@ -127,7 +134,7 @@ def pre_execute() -> None:
127
134
  pass
128
135
 
129
136
  @_define_event
130
- def pre_run_cell(info: Any) -> None:
137
+ def pre_run_cell(info: ExecutionInfo) -> None:
131
138
  """Fires before user-entered code runs.
132
139
 
133
140
  Parameters
@@ -147,7 +154,7 @@ def post_execute() -> None:
147
154
  pass
148
155
 
149
156
  @_define_event
150
- def post_run_cell(result: Any) -> None:
157
+ def post_run_cell(result: ExecutionResult) -> None:
151
158
  """Fires after user-entered code runs.
152
159
 
153
160
  Parameters
@@ -32,10 +32,7 @@ from IPython.utils.decorators import undoc
32
32
  import types
33
33
  from typing import Self, LiteralString, get_type_hints
34
34
 
35
- if sys.version_info < (3, 12):
36
- from typing_extensions import TypeAliasType
37
- else:
38
- from typing import TypeAliasType
35
+ from typing import TypeAliasType
39
36
 
40
37
 
41
38
  @undoc
@@ -39,6 +39,8 @@ from IPython.utils.decorators import undoc
39
39
  from typing import Tuple, Optional, TYPE_CHECKING
40
40
  from collections.abc import Iterable
41
41
  import typing
42
+ import typing as t
43
+ from typing import cast
42
44
  from warnings import warn
43
45
  from weakref import ref, WeakSet
44
46
 
@@ -90,6 +92,9 @@ class DummyDB:
90
92
  def __exit__(self, *args, **kwargs): # type: ignore [no-untyped-def]
91
93
  pass
92
94
 
95
+ def close(self, *args, **kwargs): # type: ignore [no-untyped-def]
96
+ pass
97
+
93
98
 
94
99
  @decorator
95
100
  def only_when_enabled(f, self, *a, **kw): # type: ignore [no-untyped-def]
@@ -344,6 +349,10 @@ class HistoryAccessor(HistoryAccessorBase):
344
349
  # success! reset corrupt db count
345
350
  self._corrupt_db_counter = 0
346
351
 
352
+ def __del__(self) -> None:
353
+ if hasattr(self, "db"):
354
+ self.db.close()
355
+
347
356
  def writeout_cache(self) -> None:
348
357
  """Overridden by HistoryManager to dump the cache before certain
349
358
  database lookups."""
@@ -712,6 +721,7 @@ class HistoryManager(HistoryAccessor):
712
721
  def __del__(self) -> None:
713
722
  if self.save_thread is not None:
714
723
  self.save_thread.stop()
724
+ HistoryAccessor.__del__(self)
715
725
 
716
726
  @classmethod
717
727
  def _stop_thread(cls) -> None:
@@ -1131,7 +1141,7 @@ class HistorySavingThread(threading.Thread):
1131
1141
  if hm() is not None:
1132
1142
  self.db = sqlite3.connect(
1133
1143
  str(hm().hist_file), # type: ignore [union-attr]
1134
- **hm().connection_options, # type: ignore [union-attr]
1144
+ **cast(dict[str, t.Any], hm().connection_options), # type: ignore [union-attr]
1135
1145
  )
1136
1146
  while True:
1137
1147
  self.save_flag.wait()
@@ -356,24 +356,8 @@ class MagicAssign(TokenTransformBase):
356
356
  class SystemAssign(TokenTransformBase):
357
357
  """Transformer for assignments from system commands (a = !foo)"""
358
358
  @classmethod
359
- def find_pre_312(cls, tokens_by_line):
360
- for line in tokens_by_line:
361
- assign_ix = _find_assign_op(line)
362
- if (assign_ix is not None) \
363
- and not line[assign_ix].line.strip().startswith('=') \
364
- and (len(line) >= assign_ix + 2) \
365
- and (line[assign_ix + 1].type == tokenize.ERRORTOKEN):
366
- ix = assign_ix + 1
367
-
368
- while ix < len(line) and line[ix].type == tokenize.ERRORTOKEN:
369
- if line[ix].string == '!':
370
- return cls(line[ix].start)
371
- elif not line[ix].string.isspace():
372
- break
373
- ix += 1
374
-
375
- @classmethod
376
- def find_post_312(cls, tokens_by_line):
359
+ def find(cls, tokens_by_line):
360
+ """Find the first system assignment (a = !foo) in the cell."""
377
361
  for line in tokens_by_line:
378
362
  assign_ix = _find_assign_op(line)
379
363
  if (
@@ -385,13 +369,6 @@ class SystemAssign(TokenTransformBase):
385
369
  ):
386
370
  return cls(line[assign_ix + 1].start)
387
371
 
388
- @classmethod
389
- def find(cls, tokens_by_line):
390
- """Find the first system assignment (a = !foo) in the cell."""
391
- if sys.version_info < (3, 12):
392
- return cls.find_pre_312(tokens_by_line)
393
- return cls.find_post_312(tokens_by_line)
394
-
395
372
  def transform(self, lines: List[str]):
396
373
  """Transform a system assignment found by the ``find()`` classmethod.
397
374
  """
@@ -22,6 +22,7 @@ import re
22
22
  import runpy
23
23
  import shutil
24
24
  import subprocess
25
+ from subprocess import CalledProcessError
25
26
  import sys
26
27
  import tempfile
27
28
  import traceback
@@ -37,6 +38,7 @@ from typing import List as ListType, Any as AnyType
37
38
  from typing import Literal, Optional, Tuple
38
39
  from collections.abc import Sequence
39
40
  from warnings import warn
41
+ import textwrap
40
42
 
41
43
  from IPython.external.pickleshare import PickleShareDB
42
44
 
@@ -90,7 +92,7 @@ from IPython.utils.decorators import undoc
90
92
  from IPython.utils.io import ask_yes_no
91
93
  from IPython.utils.ipstruct import Struct
92
94
  from IPython.utils.path import ensure_dir_exists, get_home_dir, get_py_filename
93
- from IPython.utils.process import getoutput, system
95
+ from IPython.utils.process import get_output_error_code, getoutput, system
94
96
  from IPython.utils.strdispatch import StrDispatch
95
97
  from IPython.utils.syspathcontext import prepended_to_syspath
96
98
  from IPython.utils.text import DollarFormatter, LSString, SList, format_screen
@@ -538,6 +540,14 @@ class InteractiveShell(SingletonConfigurable):
538
540
 
539
541
  quiet = Bool(False).tag(config=True)
540
542
 
543
+ system_raise_on_error = Bool(False, help=
544
+ """
545
+ Raise an exception on non-zero exit status from shell commands executed
546
+ via the `!` operator. When set to True, shell commands that fail will raise
547
+ CalledProcessError, similar to the behavior of %%script magics.
548
+ """
549
+ ).tag(config=True)
550
+
541
551
  history_length = Integer(10000,
542
552
  help='Total length of command history'
543
553
  ).tag(config=True)
@@ -1014,6 +1024,18 @@ class InteractiveShell(SingletonConfigurable):
1014
1024
 
1015
1025
  @property
1016
1026
  def banner(self):
1027
+ if (when := os.environ.get("SOURCE_DATE_EPOCH", None)) is not None:
1028
+ from datetime import datetime
1029
+
1030
+ date = datetime.fromtimestamp(int(when))
1031
+ return textwrap.dedent(
1032
+ f"""
1033
+ Python 3.y.z | Packaged with love | (main, {date.strftime("%A, %d %B %Y")}) [Compiler]
1034
+ Type 'copyright', 'credits' or 'license' for more information
1035
+ IPython 9.y.z -- An enhanced Interactive Python. Type '?' for help.
1036
+ Tip: unset SOURCE_DATE_EPOCH to restore dynamic banner.
1037
+ """
1038
+ ).lstrip()
1017
1039
  banner = self.banner1
1018
1040
  if self.profile and self.profile != 'default':
1019
1041
  banner += '\nIPython profile: %s\n' % self.profile
@@ -2118,8 +2140,7 @@ class InteractiveShell(SingletonConfigurable):
2118
2140
  sys.last_type = etype
2119
2141
  sys.last_value = value
2120
2142
  sys.last_traceback = tb
2121
- if sys.version_info >= (3, 12):
2122
- sys.last_exc = value
2143
+ sys.last_exc = value
2123
2144
 
2124
2145
  return etype, value, tb
2125
2146
 
@@ -2647,7 +2668,12 @@ class InteractiveShell(SingletonConfigurable):
2647
2668
  # we explicitly do NOT return the subprocess status code, because
2648
2669
  # a non-None value would trigger :func:`sys.displayhook` calls.
2649
2670
  # Instead, we store the exit_code in user_ns.
2650
- self.user_ns['_exit_code'] = system(self.var_expand(cmd, depth=1))
2671
+ exit_code = system(self.var_expand(cmd, depth=1))
2672
+ self.user_ns['_exit_code'] = exit_code
2673
+
2674
+ # Raise an exception if the command failed and system_raise_on_error is True
2675
+ if self.system_raise_on_error and exit_code != 0:
2676
+ raise CalledProcessError(exit_code, cmd)
2651
2677
 
2652
2678
  def system_raw(self, cmd):
2653
2679
  """Call the given cmd in a subprocess using os.system on Windows or
@@ -2713,6 +2739,10 @@ class InteractiveShell(SingletonConfigurable):
2713
2739
  # but raising SystemExit(_exit_code) will give status 254!
2714
2740
  self.user_ns['_exit_code'] = ec
2715
2741
 
2742
+ # Raise an exception if the command failed and system_raise_on_error is True
2743
+ if self.system_raise_on_error and ec != 0:
2744
+ raise CalledProcessError(ec, cmd)
2745
+
2716
2746
  # use piped system by default, because it is better behaved
2717
2747
  system = system_piped
2718
2748
 
@@ -2738,11 +2768,27 @@ class InteractiveShell(SingletonConfigurable):
2738
2768
  if cmd.rstrip().endswith('&'):
2739
2769
  # this is *far* from a rigorous test
2740
2770
  raise OSError("Background processes not supported.")
2741
- out = getoutput(self.var_expand(cmd, depth=depth+1))
2771
+
2772
+ # Get output and exit code
2773
+ expanded_cmd = self.var_expand(cmd, depth=depth+1)
2774
+ if self.system_raise_on_error:
2775
+ # Use get_output_error_code to get the exit code
2776
+ out_str, err_str, exit_code = get_output_error_code(expanded_cmd)
2777
+ # Combine stdout and stderr as getoutput does
2778
+ out_combined = out_str if not err_str else out_str + err_str
2779
+ self.user_ns['_exit_code'] = exit_code
2780
+
2781
+ # Raise an exception if the command failed
2782
+ if exit_code != 0:
2783
+ raise CalledProcessError(exit_code, cmd)
2784
+ else:
2785
+ # Use the original getoutput for backward compatibility
2786
+ out_combined = getoutput(expanded_cmd)
2787
+
2742
2788
  if split:
2743
- out = SList(out.splitlines())
2789
+ out = SList(out_combined.splitlines())
2744
2790
  else:
2745
- out = LSString(out)
2791
+ out = LSString(out_combined)
2746
2792
  return out
2747
2793
 
2748
2794
  #-------------------------------------------------------------------------