ipython 9.14.1__tar.gz → 9.15.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 (448) hide show
  1. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/debugger.py +26 -0
  2. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/display.py +0 -1
  3. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/historyapp.py +6 -3
  4. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/interactiveshell.py +3 -3
  5. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/kitty.py +12 -4
  6. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/basic.py +3 -1
  7. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/execution.py +22 -7
  8. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/oinspect.py +4 -3
  9. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/release.py +2 -2
  10. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/ultratb.py +44 -2
  11. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/deduperreload/deduperreload.py +5 -2
  12. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/tests/test_deduperreload.py +30 -0
  13. {ipython-9.14.1 → ipython-9.15.0}/IPython/sphinxext/ipython_directive.py +23 -1
  14. ipython-9.15.0/IPython/sphinxext/tests/test_ansi_stripping.py +28 -0
  15. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/interactiveshell.py +12 -6
  16. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_common.py +47 -0
  17. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_sysinfo.py +1 -1
  18. ipython-9.15.0/IPython/utils/generics.py +52 -0
  19. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/process.py +6 -1
  20. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/py3compat.py +1 -0
  21. {ipython-9.14.1/ipython.egg-info → ipython-9.15.0}/PKG-INFO +2 -2
  22. {ipython-9.14.1 → ipython-9.15.0}/docs/source/coredev/index.rst +20 -62
  23. {ipython-9.14.1 → ipython-9.15.0}/docs/source/install/install.rst +1 -1
  24. {ipython-9.14.1 → ipython-9.15.0}/docs/source/install/kernel_install.rst +13 -25
  25. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/plotting.rst +0 -4
  26. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/reference.rst +1 -1
  27. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/tutorial.rst +0 -2
  28. {ipython-9.14.1 → ipython-9.15.0}/docs/source/links.txt +0 -29
  29. {ipython-9.14.1 → ipython-9.15.0}/docs/source/overview.rst +4 -9
  30. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version9.rst +148 -0
  31. {ipython-9.14.1 → ipython-9.15.0/ipython.egg-info}/PKG-INFO +2 -2
  32. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/SOURCES.txt +4 -0
  33. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/requires.txt +1 -1
  34. {ipython-9.14.1 → ipython-9.15.0}/pyproject.toml +8 -1
  35. ipython-9.15.0/tests/__init__.py +0 -0
  36. {ipython-9.14.1 → ipython-9.15.0}/tests/test_debugger.py +29 -0
  37. ipython-9.15.0/tests/test_generics.py +22 -0
  38. {ipython-9.14.1 → ipython-9.15.0}/tests/test_history.py +74 -1
  39. {ipython-9.14.1 → ipython-9.15.0}/tests/test_interactiveshell.py +17 -1
  40. ipython-9.15.0/tests/test_ipython_directive.py +138 -0
  41. {ipython-9.14.1 → ipython-9.15.0}/tests/test_kitty.py +34 -0
  42. {ipython-9.14.1 → ipython-9.15.0}/tests/test_magic.py +1 -1
  43. {ipython-9.14.1 → ipython-9.15.0}/tests/test_oinspect.py +24 -0
  44. {ipython-9.14.1 → ipython-9.15.0}/tests/test_process.py +42 -0
  45. {ipython-9.14.1 → ipython-9.15.0}/tests/test_run.py +42 -3
  46. {ipython-9.14.1 → ipython-9.15.0}/tests/test_ultratb.py +33 -0
  47. ipython-9.14.1/IPython/utils/generics.py +0 -32
  48. {ipython-9.14.1 → ipython-9.15.0}/.flake8 +0 -0
  49. {ipython-9.14.1 → ipython-9.15.0}/.mailmap +0 -0
  50. {ipython-9.14.1 → ipython-9.15.0}/.pre-commit-config.yaml +0 -0
  51. {ipython-9.14.1 → ipython-9.15.0}/COPYING.rst +0 -0
  52. {ipython-9.14.1 → ipython-9.15.0}/IPython/__init__.py +0 -0
  53. {ipython-9.14.1 → ipython-9.15.0}/IPython/__main__.py +0 -0
  54. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/__init__.py +0 -0
  55. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/alias.py +0 -0
  56. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/application.py +0 -0
  57. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/async_helpers.py +0 -0
  58. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/autocall.py +0 -0
  59. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/builtin_trap.py +0 -0
  60. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/compilerop.py +0 -0
  61. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/completer.py +0 -0
  62. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/completerlib.py +0 -0
  63. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/crashhandler.py +0 -0
  64. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/debugger_backport.py +0 -0
  65. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/display_functions.py +0 -0
  66. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/display_trap.py +0 -0
  67. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/displayhook.py +0 -0
  68. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/displaypub.py +0 -0
  69. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/doctb.py +0 -0
  70. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/error.py +0 -0
  71. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/events.py +0 -0
  72. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/extensions.py +0 -0
  73. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/formatters.py +0 -0
  74. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/getipython.py +0 -0
  75. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/guarded_eval.py +0 -0
  76. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/history.py +0 -0
  77. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/hooks.py +0 -0
  78. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/inputtransformer2.py +0 -0
  79. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/latex_symbols.py +0 -0
  80. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/logger.py +0 -0
  81. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/macro.py +0 -0
  82. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magic.py +0 -0
  83. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magic_arguments.py +0 -0
  84. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/__init__.py +0 -0
  85. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/ast_mod.py +0 -0
  86. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/auto.py +0 -0
  87. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/code.py +0 -0
  88. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/config.py +0 -0
  89. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/display.py +0 -0
  90. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/extension.py +0 -0
  91. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/history.py +0 -0
  92. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/logging.py +0 -0
  93. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/namespace.py +0 -0
  94. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/osm.py +0 -0
  95. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/packaging.py +0 -0
  96. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/pylab.py +0 -0
  97. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/magics/script.py +0 -0
  98. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/page.py +0 -0
  99. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/payload.py +0 -0
  100. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/payloadpage.py +0 -0
  101. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/prefilter.py +0 -0
  102. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/profile/README_STARTUP +0 -0
  103. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/profileapp.py +0 -0
  104. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/profiledir.py +0 -0
  105. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/pylabtools.py +0 -0
  106. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/shellapp.py +0 -0
  107. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/splitinput.py +0 -0
  108. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/tbtools.py +0 -0
  109. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/tips.py +0 -0
  110. {ipython-9.14.1 → ipython-9.15.0}/IPython/core/usage.py +0 -0
  111. {ipython-9.14.1 → ipython-9.15.0}/IPython/display.py +0 -0
  112. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/__init__.py +0 -0
  113. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/autoreload.py +0 -0
  114. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/deduperreload/__init__.py +0 -0
  115. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/deduperreload/deduperreload_patching.py +0 -0
  116. {ipython-9.14.1 → ipython-9.15.0}/IPython/extensions/storemagic.py +0 -0
  117. {ipython-9.14.1 → ipython-9.15.0}/IPython/external/__init__.py +0 -0
  118. {ipython-9.14.1 → ipython-9.15.0}/IPython/external/pickleshare.py +0 -0
  119. {ipython-9.14.1 → ipython-9.15.0}/IPython/external/qt_for_kernel.py +0 -0
  120. {ipython-9.14.1 → ipython-9.15.0}/IPython/external/qt_loaders.py +0 -0
  121. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/__init__.py +0 -0
  122. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/backgroundjobs.py +0 -0
  123. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/clipboard.py +0 -0
  124. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/deepreload.py +0 -0
  125. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/demo.py +0 -0
  126. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/display.py +0 -0
  127. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/editorhooks.py +0 -0
  128. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/guisupport.py +0 -0
  129. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/latextools.py +0 -0
  130. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/lexers.py +0 -0
  131. {ipython-9.14.1 → ipython-9.15.0}/IPython/lib/pretty.py +0 -0
  132. {ipython-9.14.1 → ipython-9.15.0}/IPython/paths.py +0 -0
  133. {ipython-9.14.1 → ipython-9.15.0}/IPython/py.typed +0 -0
  134. {ipython-9.14.1 → ipython-9.15.0}/IPython/sphinxext/__init__.py +0 -0
  135. {ipython-9.14.1 → ipython-9.15.0}/IPython/sphinxext/custom_doctests.py +0 -0
  136. {ipython-9.14.1 → ipython-9.15.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  137. {ipython-9.14.1/IPython/terminal → ipython-9.15.0/IPython/sphinxext/tests}/__init__.py +0 -0
  138. {ipython-9.14.1/IPython/testing/plugin → ipython-9.15.0/IPython/terminal}/__init__.py +0 -0
  139. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/debugger.py +0 -0
  140. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/embed.py +0 -0
  141. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/ipapp.py +0 -0
  142. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/magics.py +0 -0
  143. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/prompts.py +0 -0
  144. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  145. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  146. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  147. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  148. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  149. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  150. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  151. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  152. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  153. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  154. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  155. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/ptutils.py +0 -0
  156. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  157. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  158. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  159. {ipython-9.14.1 → ipython-9.15.0}/IPython/terminal/shortcuts/filters.py +0 -0
  160. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/__init__.py +0 -0
  161. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/decorators.py +0 -0
  162. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/globalipapp.py +0 -0
  163. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/ipunittest.py +0 -0
  164. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/Makefile +0 -0
  165. {ipython-9.14.1/IPython/utils → ipython-9.15.0/IPython/testing/plugin}/__init__.py +0 -0
  166. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/dtexample.py +0 -0
  167. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  168. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  169. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/setup.py +0 -0
  170. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/simple.py +0 -0
  171. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/simplevars.py +0 -0
  172. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/test_combo.txt +0 -0
  173. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/test_example.txt +0 -0
  174. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  175. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  176. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/plugin/test_refs.py +0 -0
  177. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/skipdoctest.py +0 -0
  178. {ipython-9.14.1 → ipython-9.15.0}/IPython/testing/tools.py +0 -0
  179. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/PyColorize.py +0 -0
  180. {ipython-9.14.1/tests → ipython-9.15.0/IPython/utils}/__init__.py +0 -0
  181. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_cli.py +0 -0
  182. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_emscripten.py +0 -0
  183. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_posix.py +0 -0
  184. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_win32.py +0 -0
  185. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/_process_win32_controller.py +0 -0
  186. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/capture.py +0 -0
  187. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/coloransi.py +0 -0
  188. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/contexts.py +0 -0
  189. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/data.py +0 -0
  190. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/decorators.py +0 -0
  191. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/dir2.py +0 -0
  192. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/docs.py +0 -0
  193. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/encoding.py +0 -0
  194. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/eventful.py +0 -0
  195. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/frame.py +0 -0
  196. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/importstring.py +0 -0
  197. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/io.py +0 -0
  198. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/ipstruct.py +0 -0
  199. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/jsonutil.py +0 -0
  200. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/log.py +0 -0
  201. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/module_paths.py +0 -0
  202. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/openpy.py +0 -0
  203. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/path.py +0 -0
  204. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/sentinel.py +0 -0
  205. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/strdispatch.py +0 -0
  206. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/sysinfo.py +0 -0
  207. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/syspathcontext.py +0 -0
  208. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/tempdir.py +0 -0
  209. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/terminal.py +0 -0
  210. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/text.py +0 -0
  211. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/timing.py +0 -0
  212. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/tokenutil.py +0 -0
  213. {ipython-9.14.1 → ipython-9.15.0}/IPython/utils/wildcard.py +0 -0
  214. {ipython-9.14.1 → ipython-9.15.0}/LICENSE +0 -0
  215. {ipython-9.14.1 → ipython-9.15.0}/MANIFEST.in +0 -0
  216. {ipython-9.14.1 → ipython-9.15.0}/README.rst +0 -0
  217. {ipython-9.14.1 → ipython-9.15.0}/_build_meta.py +0 -0
  218. {ipython-9.14.1 → ipython-9.15.0}/docs/Makefile +0 -0
  219. {ipython-9.14.1 → ipython-9.15.0}/docs/README.rst +0 -0
  220. {ipython-9.14.1 → ipython-9.15.0}/docs/autogen_api.py +0 -0
  221. {ipython-9.14.1 → ipython-9.15.0}/docs/autogen_config.py +0 -0
  222. {ipython-9.14.1 → ipython-9.15.0}/docs/autogen_magics.py +0 -0
  223. {ipython-9.14.1 → ipython-9.15.0}/docs/autogen_shortcuts.py +0 -0
  224. {ipython-9.14.1 → ipython-9.15.0}/docs/make.cmd +0 -0
  225. {ipython-9.14.1 → ipython-9.15.0}/docs/man/ipython.1 +0 -0
  226. {ipython-9.14.1 → ipython-9.15.0}/docs/requirements.txt +0 -0
  227. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/2.0/running-crop.png +0 -0
  228. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/2.0/running.png +0 -0
  229. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/2.0/treeview.png +0 -0
  230. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/2.0/user-interface.png +0 -0
  231. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/2.0/widgets.png +0 -0
  232. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  233. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  234. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  235. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  236. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  237. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  238. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  239. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  240. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  241. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  242. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  243. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/autosuggest.gif +0 -0
  244. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  245. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  246. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  247. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  248. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  249. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  250. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  251. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  252. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  253. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  254. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  255. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  256. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  257. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  258. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  259. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ms_visual_studio.png +0 -0
  260. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/notebook_specgram.png +0 -0
  261. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/ptshell_features.png +0 -0
  262. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/qtconsole.png +0 -0
  263. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  264. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_images/unicode_completion.png +0 -0
  265. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_static/favicon.ico +0 -0
  266. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_static/logo.png +0 -0
  267. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_static/theme_overrides.css +0 -0
  268. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_templates/breadcrumbs.html +0 -0
  269. {ipython-9.14.1 → ipython-9.15.0}/docs/source/_templates/notebook_redirect.html +0 -0
  270. {ipython-9.14.1 → ipython-9.15.0}/docs/source/about/history.rst +0 -0
  271. {ipython-9.14.1 → ipython-9.15.0}/docs/source/about/index.rst +0 -0
  272. {ipython-9.14.1 → ipython-9.15.0}/docs/source/about/license_and_copyright.rst +0 -0
  273. {ipython-9.14.1 → ipython-9.15.0}/docs/source/api/index.rst +0 -0
  274. {ipython-9.14.1 → ipython-9.15.0}/docs/source/conf.py +0 -0
  275. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/callbacks.rst +0 -0
  276. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/custommagics.rst +0 -0
  277. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/details.rst +0 -0
  278. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/eventloops.rst +0 -0
  279. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/extensions/autoreload.rst +0 -0
  280. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/extensions/index.rst +0 -0
  281. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/extensions/storemagic.rst +0 -0
  282. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/index.rst +0 -0
  283. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/inputtransforms.rst +0 -0
  284. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/integrating.rst +0 -0
  285. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/intro.rst +0 -0
  286. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/options/index.rst +0 -0
  287. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  288. {ipython-9.14.1 → ipython-9.15.0}/docs/source/config/shortcuts/index.rst +0 -0
  289. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/config.rst +0 -0
  290. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/execution.rst +0 -0
  291. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  292. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  293. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/figs/other_kernels.png +0 -0
  294. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/figs/other_kernels.svg +0 -0
  295. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/how_ipython_works.rst +0 -0
  296. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/index.rst +0 -0
  297. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/inputhook_app.rst +0 -0
  298. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/kernels.rst +0 -0
  299. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/messaging.rst +0 -0
  300. {ipython-9.14.1 → ipython-9.15.0}/docs/source/development/wrapperkernels.rst +0 -0
  301. {ipython-9.14.1 → ipython-9.15.0}/docs/source/index.rst +0 -0
  302. {ipython-9.14.1 → ipython-9.15.0}/docs/source/install/index.rst +0 -0
  303. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/autoawait.rst +0 -0
  304. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/index.rst +0 -0
  305. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/magics.rst +0 -0
  306. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  307. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/shell.rst +0 -0
  308. {ipython-9.14.1 → ipython-9.15.0}/docs/source/interactive/tips.rst +0 -0
  309. {ipython-9.14.1 → ipython-9.15.0}/docs/source/parallel/index.rst +0 -0
  310. {ipython-9.14.1 → ipython-9.15.0}/docs/source/sphinx.toml +0 -0
  311. {ipython-9.14.1 → ipython-9.15.0}/docs/source/sphinxext.rst +0 -0
  312. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/development.rst +0 -0
  313. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  314. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  315. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  316. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  317. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  318. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  319. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  320. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  321. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  322. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  323. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  324. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/index.rst +0 -0
  325. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/pr/README.md +0 -0
  326. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  327. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  328. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.10.rst +0 -0
  329. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.11.rst +0 -0
  330. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.12.rst +0 -0
  331. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.13.rst +0 -0
  332. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.8.rst +0 -0
  333. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version0.9.rst +0 -0
  334. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version1.0.rst +0 -0
  335. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version2.0.rst +0 -0
  336. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version3.rst +0 -0
  337. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  338. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version4.rst +0 -0
  339. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version5.rst +0 -0
  340. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version6.rst +0 -0
  341. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version7.rst +0 -0
  342. {ipython-9.14.1 → ipython-9.15.0}/docs/source/whatsnew/version8.rst +0 -0
  343. {ipython-9.14.1 → ipython-9.15.0}/docs/sphinxext/apigen.py +0 -0
  344. {ipython-9.14.1 → ipython-9.15.0}/docs/sphinxext/configtraits.py +0 -0
  345. {ipython-9.14.1 → ipython-9.15.0}/docs/sphinxext/magics.py +0 -0
  346. {ipython-9.14.1 → ipython-9.15.0}/examples/Embedding/embed_class_long.py +0 -0
  347. {ipython-9.14.1 → ipython-9.15.0}/examples/Embedding/embed_class_short.py +0 -0
  348. {ipython-9.14.1 → ipython-9.15.0}/examples/Embedding/embed_function.py +0 -0
  349. {ipython-9.14.1 → ipython-9.15.0}/examples/Embedding/start_ipython_config.py +0 -0
  350. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/example-demo.py +0 -0
  351. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  352. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  353. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  354. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  355. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  356. {ipython-9.14.1 → ipython-9.15.0}/examples/IPython Kernel/ipython.desktop +0 -0
  357. {ipython-9.14.1 → ipython-9.15.0}/examples/auto_suggest_llm.py +0 -0
  358. {ipython-9.14.1 → ipython-9.15.0}/examples/utils/cwd_prompt.py +0 -0
  359. {ipython-9.14.1 → ipython-9.15.0}/examples/utils/list_pyfiles.ipy +0 -0
  360. {ipython-9.14.1 → ipython-9.15.0}/examples/utils/list_subdirs.ipy +0 -0
  361. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/dependency_links.txt +0 -0
  362. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/entry_points.txt +0 -0
  363. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/not-zip-safe +0 -0
  364. {ipython-9.14.1 → ipython-9.15.0}/ipython.egg-info/top_level.txt +0 -0
  365. {ipython-9.14.1 → ipython-9.15.0}/long_description.rst +0 -0
  366. {ipython-9.14.1 → ipython-9.15.0}/scripts/ipython.ico +0 -0
  367. {ipython-9.14.1 → ipython-9.15.0}/scripts/ipython_nb.ico +0 -0
  368. {ipython-9.14.1 → ipython-9.15.0}/setup.cfg +0 -0
  369. {ipython-9.14.1 → ipython-9.15.0}/setup.py +0 -0
  370. {ipython-9.14.1 → ipython-9.15.0}/setupbase.py +0 -0
  371. {ipython-9.14.1 → ipython-9.15.0}/tests/2x2.jpg +0 -0
  372. {ipython-9.14.1 → ipython-9.15.0}/tests/2x2.png +0 -0
  373. {ipython-9.14.1 → ipython-9.15.0}/tests/bad_all.py +0 -0
  374. {ipython-9.14.1 → ipython-9.15.0}/tests/conftest.py +0 -0
  375. {ipython-9.14.1 → ipython-9.15.0}/tests/fake_ext_dir/daft_extension.py +0 -0
  376. {ipython-9.14.1 → ipython-9.15.0}/tests/fake_llm.py +0 -0
  377. {ipython-9.14.1 → ipython-9.15.0}/tests/nonascii.py +0 -0
  378. {ipython-9.14.1 → ipython-9.15.0}/tests/nonascii2.py +0 -0
  379. {ipython-9.14.1 → ipython-9.15.0}/tests/print_argv.py +0 -0
  380. {ipython-9.14.1 → ipython-9.15.0}/tests/refbug.py +0 -0
  381. {ipython-9.14.1 → ipython-9.15.0}/tests/simpleerr.py +0 -0
  382. {ipython-9.14.1 → ipython-9.15.0}/tests/tclass.py +0 -0
  383. {ipython-9.14.1 → ipython-9.15.0}/tests/test.wav +0 -0
  384. {ipython-9.14.1 → ipython-9.15.0}/tests/test_alias.py +0 -0
  385. {ipython-9.14.1 → ipython-9.15.0}/tests/test_application.py +0 -0
  386. {ipython-9.14.1 → ipython-9.15.0}/tests/test_async_helpers.py +0 -0
  387. {ipython-9.14.1 → ipython-9.15.0}/tests/test_autocall.py +0 -0
  388. {ipython-9.14.1 → ipython-9.15.0}/tests/test_backgroundjobs.py +0 -0
  389. {ipython-9.14.1 → ipython-9.15.0}/tests/test_capture.py +0 -0
  390. {ipython-9.14.1 → ipython-9.15.0}/tests/test_clipboard.py +0 -0
  391. {ipython-9.14.1 → ipython-9.15.0}/tests/test_compilerop.py +0 -0
  392. {ipython-9.14.1 → ipython-9.15.0}/tests/test_completer.py +0 -0
  393. {ipython-9.14.1 → ipython-9.15.0}/tests/test_completerlib.py +0 -0
  394. {ipython-9.14.1 → ipython-9.15.0}/tests/test_cve.py +0 -0
  395. {ipython-9.14.1 → ipython-9.15.0}/tests/test_debug_magic.py +0 -0
  396. {ipython-9.14.1 → ipython-9.15.0}/tests/test_decorators.py +0 -0
  397. {ipython-9.14.1 → ipython-9.15.0}/tests/test_decorators_2.py +0 -0
  398. {ipython-9.14.1 → ipython-9.15.0}/tests/test_deepreload.py +0 -0
  399. {ipython-9.14.1 → ipython-9.15.0}/tests/test_dir2.py +0 -0
  400. {ipython-9.14.1 → ipython-9.15.0}/tests/test_display.py +0 -0
  401. {ipython-9.14.1 → ipython-9.15.0}/tests/test_display_2.py +0 -0
  402. {ipython-9.14.1 → ipython-9.15.0}/tests/test_displayhook.py +0 -0
  403. {ipython-9.14.1 → ipython-9.15.0}/tests/test_editorhooks.py +0 -0
  404. {ipython-9.14.1 → ipython-9.15.0}/tests/test_embed.py +0 -0
  405. {ipython-9.14.1 → ipython-9.15.0}/tests/test_events.py +0 -0
  406. {ipython-9.14.1 → ipython-9.15.0}/tests/test_exceptiongroup_tb.py +0 -0
  407. {ipython-9.14.1 → ipython-9.15.0}/tests/test_extension.py +0 -0
  408. {ipython-9.14.1 → ipython-9.15.0}/tests/test_formatters.py +0 -0
  409. {ipython-9.14.1 → ipython-9.15.0}/tests/test_guarded_eval.py +0 -0
  410. {ipython-9.14.1 → ipython-9.15.0}/tests/test_handlers.py +0 -0
  411. {ipython-9.14.1 → ipython-9.15.0}/tests/test_help.py +0 -0
  412. {ipython-9.14.1 → ipython-9.15.0}/tests/test_hooks.py +0 -0
  413. {ipython-9.14.1 → ipython-9.15.0}/tests/test_imports.py +0 -0
  414. {ipython-9.14.1 → ipython-9.15.0}/tests/test_importstring.py +0 -0
  415. {ipython-9.14.1 → ipython-9.15.0}/tests/test_inputtransformer2.py +0 -0
  416. {ipython-9.14.1 → ipython-9.15.0}/tests/test_inputtransformer2_line.py +0 -0
  417. {ipython-9.14.1 → ipython-9.15.0}/tests/test_interactivshell.py +0 -0
  418. {ipython-9.14.1 → ipython-9.15.0}/tests/test_io.py +0 -0
  419. {ipython-9.14.1 → ipython-9.15.0}/tests/test_iplib.py +0 -0
  420. {ipython-9.14.1 → ipython-9.15.0}/tests/test_ipunittest.py +0 -0
  421. {ipython-9.14.1 → ipython-9.15.0}/tests/test_latextools.py +0 -0
  422. {ipython-9.14.1 → ipython-9.15.0}/tests/test_logger.py +0 -0
  423. {ipython-9.14.1 → ipython-9.15.0}/tests/test_magic_arguments.py +0 -0
  424. {ipython-9.14.1 → ipython-9.15.0}/tests/test_magic_terminal.py +0 -0
  425. {ipython-9.14.1 → ipython-9.15.0}/tests/test_module_paths.py +0 -0
  426. {ipython-9.14.1 → ipython-9.15.0}/tests/test_openpy.py +0 -0
  427. {ipython-9.14.1 → ipython-9.15.0}/tests/test_page.py +0 -0
  428. {ipython-9.14.1 → ipython-9.15.0}/tests/test_path.py +0 -0
  429. {ipython-9.14.1 → ipython-9.15.0}/tests/test_paths.py +0 -0
  430. {ipython-9.14.1 → ipython-9.15.0}/tests/test_prefilter.py +0 -0
  431. {ipython-9.14.1 → ipython-9.15.0}/tests/test_pretty.py +0 -0
  432. {ipython-9.14.1 → ipython-9.15.0}/tests/test_profile.py +0 -0
  433. {ipython-9.14.1 → ipython-9.15.0}/tests/test_pt_inputhooks.py +0 -0
  434. {ipython-9.14.1 → ipython-9.15.0}/tests/test_pycolorize.py +0 -0
  435. {ipython-9.14.1 → ipython-9.15.0}/tests/test_pylabtools.py +0 -0
  436. {ipython-9.14.1 → ipython-9.15.0}/tests/test_qt_loaders.py +0 -0
  437. {ipython-9.14.1 → ipython-9.15.0}/tests/test_shellapp.py +0 -0
  438. {ipython-9.14.1 → ipython-9.15.0}/tests/test_shortcuts.py +0 -0
  439. {ipython-9.14.1 → ipython-9.15.0}/tests/test_splitinput.py +0 -0
  440. {ipython-9.14.1 → ipython-9.15.0}/tests/test_storemagic.py +0 -0
  441. {ipython-9.14.1 → ipython-9.15.0}/tests/test_sysinfo.py +0 -0
  442. {ipython-9.14.1 → ipython-9.15.0}/tests/test_tempdir.py +0 -0
  443. {ipython-9.14.1 → ipython-9.15.0}/tests/test_text.py +0 -0
  444. {ipython-9.14.1 → ipython-9.15.0}/tests/test_tips.py +0 -0
  445. {ipython-9.14.1 → ipython-9.15.0}/tests/test_tokenutil.py +0 -0
  446. {ipython-9.14.1 → ipython-9.15.0}/tests/test_tools.py +0 -0
  447. {ipython-9.14.1 → ipython-9.15.0}/tests/test_wildcard.py +0 -0
  448. {ipython-9.14.1 → ipython-9.15.0}/tests/test_zzz_autoreload.py +0 -0
@@ -494,6 +494,7 @@ class Pdb(OldPdb):
494
494
  chain. Exceptions will be numbered, with the current exception indicated
495
495
  with an arrow.
496
496
  If given an integer as argument, switch to the exception at that index.
497
+ ``exception`` can be used as an alias for this command.
497
498
  """
498
499
  if not self._chained_exceptions:
499
500
  self.message(
@@ -539,6 +540,18 @@ class Pdb(OldPdb):
539
540
  """
540
541
  return self.do_exceptions(arg)
541
542
 
543
+ def _cmdloop(self):
544
+ # Override to bypass Python 3.15's _maybe_use_pyrepl_as_stdin(), which
545
+ # sets use_rawinput=False and conflicts with IPython's own input handling.
546
+ while True:
547
+ try:
548
+ self.allow_kbdint = True
549
+ self.cmdloop()
550
+ self.allow_kbdint = False
551
+ break
552
+ except KeyboardInterrupt:
553
+ self.message("--KeyboardInterrupt--")
554
+
542
555
  def interaction(self, frame, tb_or_exc):
543
556
  try:
544
557
  if CHAIN_EXCEPTIONS:
@@ -620,6 +633,19 @@ class Pdb(OldPdb):
620
633
  filename = frame.f_code.co_filename
621
634
  self.shell.hooks.synchronize_with_editor(filename, lineno, 0)
622
635
 
636
+ def _pdbcmd_print_frame_status(self, arg):
637
+ """Use print_stack_entry to print frames in Python 3.14+."""
638
+ if sys.version_info[:2] >= (3, 14):
639
+ # This is the only line changed from the base class.
640
+ self.print_stack_entry(self.stack[self.curindex])
641
+
642
+ # Same as in 3.14
643
+ self._validate_file_mtime()
644
+ self._show_display()
645
+ else:
646
+ # 3.13 and 3.12 don't need any changes.
647
+ super()._pdbcmd_print_frame_status(arg) # type: ignore[misc]
648
+
623
649
  def _get_frame_locals(self, frame):
624
650
  """ "
625
651
  Accessing f_local of current frame reset the namespace, so we want to avoid
@@ -382,7 +382,6 @@ class DisplayObject:
382
382
  encoding = sub.split('=')[-1].strip()
383
383
  break
384
384
  if 'content-encoding' in response.headers:
385
- # TODO: do deflate?
386
385
  if 'gzip' in response.headers['content-encoding']:
387
386
  import gzip
388
387
  from io import BytesIO
@@ -6,6 +6,7 @@ To be invoked as the `ipython history` subcommand.
6
6
  """
7
7
 
8
8
  import sqlite3
9
+ from contextlib import closing
9
10
  from pathlib import Path
10
11
 
11
12
  from traitlets.config.application import Application
@@ -50,8 +51,10 @@ class HistoryTrim(BaseIPythonApplication):
50
51
  def start(self):
51
52
  profile_dir = Path(self.profile_dir.location)
52
53
  hist_file = profile_dir / "history.sqlite"
53
- with sqlite3.connect(hist_file) as con:
54
-
54
+ # Connections must be closed, not merely committed, before the file
55
+ # shuffling below: Windows refuses to unlink or rename a database
56
+ # that still has open handles.
57
+ with closing(sqlite3.connect(hist_file)) as con:
55
58
  # Grab the recent history from the current database.
56
59
  inputs = list(con.execute('SELECT session, line, source, source_raw FROM '
57
60
  'history ORDER BY session DESC, line DESC LIMIT ?', (self.keep+1,)))
@@ -78,7 +81,7 @@ class HistoryTrim(BaseIPythonApplication):
78
81
  # Make sure we don't interfere with an existing file.
79
82
  i += 1
80
83
  new_hist_file = profile_dir / ("history.sqlite.new" + str(i))
81
- with sqlite3.connect(new_hist_file) as new_db:
84
+ with closing(sqlite3.connect(new_hist_file)) as new_db:
82
85
  new_db.execute("""CREATE TABLE IF NOT EXISTS sessions (session integer
83
86
  primary key autoincrement, start timestamp,
84
87
  end timestamp, num_cmds integer, remark text)""")
@@ -579,7 +579,7 @@ class InteractiveShell(SingletonConfigurable):
579
579
  separate_out2 = SeparateUnicode('').tag(config=True)
580
580
  wildcards_case_sensitive = Bool(True).tag(config=True)
581
581
  xmode = CaselessStrEnum(
582
- ("Context", "Plain", "Verbose", "Minimal", "Docs"),
582
+ ("Context", "Plain", "Verbose", "Minimal", "Docs", "Doctest"),
583
583
  default_value="Context",
584
584
  help="Switch modes for the IPython exception handlers.",
585
585
  ).tag(config=True)
@@ -2961,7 +2961,7 @@ class InteractiveShell(SingletonConfigurable):
2961
2961
  try:
2962
2962
  with fname.open("rb"):
2963
2963
  pass
2964
- except:
2964
+ except OSError:
2965
2965
  warn('Could not open file <%s> for safe execution.' % fname)
2966
2966
  return
2967
2967
 
@@ -3019,7 +3019,7 @@ class InteractiveShell(SingletonConfigurable):
3019
3019
  try:
3020
3020
  with fname.open("rb"):
3021
3021
  pass
3022
- except:
3022
+ except OSError:
3023
3023
  warn('Could not open file <%s> for safe execution.' % fname)
3024
3024
  return
3025
3025
 
@@ -27,10 +27,18 @@ def _supports_kitty_graphics() -> bool:
27
27
  }
28
28
  import psutil
29
29
 
30
- process = psutil.Process()
31
- while process := process.parent():
32
- if process.name() in supported_terminals:
33
- return True
30
+ try:
31
+ process = psutil.Process()
32
+ while process := process.parent():
33
+ if process.name() in supported_terminals:
34
+ return True
35
+ except (psutil.Error, OSError):
36
+ # Walking the process tree can fail when /proc is mounted with
37
+ # ``hidepid`` on shared multi-user systems (common on HPC clusters):
38
+ # ancestor processes owned by other users are inaccessible and psutil
39
+ # raises AccessDenied. Treat as "unsupported" rather than letting it
40
+ # abort the import of IPython.
41
+ return False
34
42
  return False
35
43
 
36
44
 
@@ -344,7 +344,7 @@ Currently the magic system has the following functions:""",
344
344
  def xmode(self, parameter_s=''):
345
345
  """Switch modes for the exception handlers.
346
346
 
347
- Valid modes: Plain, Context, Verbose, Minimal, and Docs.
347
+ Valid modes: Plain, Context, Verbose, Minimal, Docs, and Doctest.
348
348
 
349
349
  - ``Plain``: similar to Python's default traceback.
350
350
  - ``Context``: shows several lines of surrounding context for each
@@ -355,6 +355,8 @@ Currently the magic system has the following functions:""",
355
355
  a traceback.
356
356
  - ``Docs``: a stripped-down version of Verbose, designed for use
357
357
  when running doctests.
358
+ - ``Doctest``: shows only the traceback header, an ellipsis, and the
359
+ exception line, for easy copy-paste into Python doctests.
358
360
 
359
361
  If called without arguments, cycles through the available modes.
360
362
 
@@ -61,6 +61,7 @@ from IPython.utils.contexts import preserve_keys
61
61
  from IPython.utils.ipstruct import Struct
62
62
  from IPython.utils.module_paths import find_mod
63
63
  from IPython.utils.path import get_py_filename, shellglob
64
+ from IPython.utils.process import arg_split_with_quotes
64
65
  from IPython.utils.timing import clock, clock2
65
66
  from IPython.core.magics.ast_mod import ReplaceCodeTransformer
66
67
 
@@ -579,11 +580,12 @@ class ExecutionMagics(Magics):
579
580
  interactive work, while giving each program a 'clean sheet' to run in.
580
581
 
581
582
  Arguments are expanded using shell-like glob match. Patterns
582
- '*', '?', '[seq]' and '[!seq]' can be used. Additionally,
583
- tilde '~' will be expanded into user's home directory. Unlike
584
- real shells, quotation does not suppress expansions. Use
585
- *two* back slashes (e.g. ``\\\\*``) to suppress expansions.
586
- To completely disable these expansions, you can use -G flag.
583
+ '*', '?', '[seq]' and '[!seq]' can be used, and tilde '~' is
584
+ expanded to the user's home directory. As in real shells,
585
+ wrapping an argument in single or double quotes suppresses glob
586
+ expansion for that argument (see #12726). You can also use
587
+ *two* back slashes (e.g. ``\\\\*``) outside of quotes, or pass
588
+ the ``-G`` flag to disable expansion entirely.
587
589
 
588
590
  On Windows systems, the use of single quotes `'` when specifying
589
591
  a file is not supported. Use double quotes `"`.
@@ -760,8 +762,21 @@ class ExecutionMagics(Magics):
760
762
  if 'G' in opts:
761
763
  args = arg_lst[1:]
762
764
  else:
763
- # tilde and glob expansion
764
- args = shellglob(map(os.path.expanduser, arg_lst[1:]))
765
+ # tilde and glob expansion. Tokens that were quoted in
766
+ # parameter_s skip globbing so quotes suppress expansion the
767
+ # way they do in real shells (#12726).
768
+ quoted_remaining = {}
769
+ for tok, was_quoted in arg_split_with_quotes(parameter_s, strict=False):
770
+ if was_quoted:
771
+ quoted_remaining[tok] = quoted_remaining.get(tok, 0) + 1
772
+ args = []
773
+ for a in arg_lst[1:]:
774
+ a_expanded = os.path.expanduser(a)
775
+ if quoted_remaining.get(a, 0) > 0:
776
+ quoted_remaining[a] -= 1
777
+ args.append(a_expanded)
778
+ else:
779
+ args.extend(shellglob([a_expanded]))
765
780
 
766
781
  sys.argv = [filename] + args # put in the proper filename
767
782
 
@@ -425,7 +425,7 @@ class Inspector(Configurable):
425
425
  return None
426
426
  try:
427
427
  return _render_signature(signature(obj), oname)
428
- except:
428
+ except Exception:
429
429
  return None
430
430
 
431
431
  def __head(self, h: str) -> str:
@@ -793,7 +793,7 @@ class Inspector(Configurable):
793
793
  required_parameters = [
794
794
  parameter
795
795
  for parameter in inspect.signature(hook).parameters.values()
796
- if parameter.default != inspect.Parameter.default
796
+ if parameter.default is inspect.Parameter.empty
797
797
  ]
798
798
  if len(required_parameters) == 1:
799
799
  res = hook(hook_data)
@@ -886,7 +886,8 @@ class Inspector(Configurable):
886
886
  prelude = ""
887
887
  if info and info.parent is not None and hasattr(info.parent, HOOK_NAME):
888
888
  parents_docs_dict = getattr(info.parent, HOOK_NAME)
889
- parents_docs = parents_docs_dict.get(att_name, None)
889
+ if isinstance(parents_docs_dict, dict):
890
+ parents_docs = parents_docs_dict.get(att_name, None)
890
891
  out: InfoDict = cast(
891
892
  InfoDict,
892
893
  {
@@ -16,8 +16,8 @@
16
16
  # release. 'dev' as a _version_extra string means this is a development
17
17
  # version
18
18
  _version_major = 9
19
- _version_minor = 14
20
- _version_patch = 1
19
+ _version_minor = 15
20
+ _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "b2"
23
23
  _version_extra = "" # Uncomment this for full releases
@@ -412,6 +412,46 @@ class ListTB(TBTools):
412
412
  """
413
413
  return ListTB.structured_traceback(self, etype, value)
414
414
 
415
+ def structured_traceback_doctest(
416
+ self,
417
+ etype,
418
+ evalue,
419
+ etb=None,
420
+ tb_offset=None,
421
+ context=5,
422
+ ):
423
+ """Return a doctest-freindly traceback.
424
+
425
+ Shows only the header, an ellipsis, and the excepttion line.
426
+ """
427
+ # Handle chained exception rule
428
+ if isinstance(etb, tuple):
429
+ etb, chained_exc_ids = etb
430
+ else:
431
+ chained_exc_ids = set()
432
+
433
+ have_traceback = etb is not None
434
+
435
+ out_list = []
436
+ if have_traceback:
437
+ out_list.append("Traceback (most recent call last):\n")
438
+ out_list.append(" ...\n")
439
+
440
+ lines = "".join(self._format_exception_only(etype, evalue))
441
+ out_list.append(lines)
442
+
443
+ # Handle chained exceptions
444
+ if etb is not None:
445
+ exception = self.get_parts_of_chained_exception(evalue)
446
+ if exception and (id(exception[1]) not in chained_exc_ids):
447
+ chained_exception_message = (self.prepare_chained_exception_message(evalue.__cause__)[0] if evalue is not None else [""])
448
+ etype, evalue, etb = exception
449
+ chained_exc_ids.add(id(exception[1]))
450
+ chained_tb = self.structured_traceback_doctest(etype, evalue, (etb, chained_exc_ids), 0, context)
451
+ out_list = chained_tb + chained_exception_message + out_list
452
+
453
+ return out_list
454
+
415
455
  def show_exception_only(
416
456
  self, etype: BaseException | None, evalue: TracebackType | None
417
457
  ) -> None:
@@ -1061,7 +1101,7 @@ class FormattedTB(VerboseTB, ListTB):
1061
1101
  debugger_cls=None,
1062
1102
  ):
1063
1103
  # NEVER change the order of this list. Put new modes at the end:
1064
- self.valid_modes = ["Plain", "Context", "Verbose", "Minimal", "Docs"]
1104
+ self.valid_modes = ["Plain", "Context", "Verbose", "Minimal", "Docs", "Doctest"]
1065
1105
  self.verbose_modes = self.valid_modes[1:3]
1066
1106
 
1067
1107
  VerboseTB.__init__(
@@ -1079,7 +1119,7 @@ class FormattedTB(VerboseTB, ListTB):
1079
1119
  # Different types of tracebacks are joined with different separators to
1080
1120
  # form a single string. They are taken from this dict
1081
1121
  self._join_chars = dict(
1082
- Plain="", Context="\n", Verbose="\n", Minimal="", Docs=""
1122
+ Plain="", Context="\n", Verbose="\n", Minimal="", Docs="", Doctest=""
1083
1123
  )
1084
1124
  # set_mode also sets the tb_join_char attribute
1085
1125
  self.set_mode(mode)
@@ -1116,6 +1156,8 @@ class FormattedTB(VerboseTB, ListTB):
1116
1156
 
1117
1157
  elif mode == "Minimal":
1118
1158
  return ListTB.get_exception_only(self, etype, evalue)
1159
+ elif mode == "Doctest":
1160
+ return ListTB.structured_traceback_doctest(self, etype, evalue, etb, tb_offset, context)
1119
1161
  else:
1120
1162
  # We must check the source cache because otherwise we can print
1121
1163
  # out-of-date source code.
@@ -9,6 +9,7 @@ import pickle
9
9
  import platform
10
10
  import sys
11
11
  import textwrap
12
+ import tokenize
12
13
  from types import ModuleType
13
14
  from typing import TYPE_CHECKING, Any, NamedTuple, cast
14
15
  from collections.abc import Generator, Iterable
@@ -215,7 +216,9 @@ class DeduperReloader(DeduperReloaderPatchingMixin):
215
216
  self.source_by_modname[new_modname] = ""
216
217
  continue
217
218
  try:
218
- with open(fname, "r", encoding="utf8") as f:
219
+ # tokenize.open honors PEP 263 coding cookies and defaults
220
+ # to utf-8, like the import system does.
221
+ with tokenize.open(fname) as f:
219
222
  self.source_by_modname[new_modname] = f.read()
220
223
  except Exception as e:
221
224
  logger = logging.getLogger("autoreload")
@@ -552,7 +555,7 @@ class DeduperReloader(DeduperReloaderPatchingMixin):
552
555
  if (fname := get_module_file_name(module)) is None:
553
556
  return False
554
557
  try:
555
- with open(fname, "r", encoding="utf8") as f:
558
+ with tokenize.open(fname) as f:
556
559
  new_source_code = f.read()
557
560
  except Exception as e:
558
561
  logger = logging.getLogger("autoreload")
@@ -935,6 +935,36 @@ class AutoreloadHookSuite(ShellFixture):
935
935
  mod = sys.modules[mod_name]
936
936
  assert mod.foo(0) == 5
937
937
 
938
+ def test_deduperreloader_pep263_encoding(self):
939
+ """Source with a non-utf-8 PEP 263 coding cookie can be read (gh-15193)."""
940
+ self.shell.magic_autoreload("2")
941
+ mod_name, mod_fn = self.get_module()
942
+ code_v1 = squish_text(
943
+ '''
944
+ # -*- coding: latin-1 -*-
945
+ CAFE = "café"
946
+ def foo(y):
947
+ return y + 3
948
+ '''
949
+ )
950
+ with open(mod_fn, "wb") as f:
951
+ f.write(code_v1.encode("latin-1"))
952
+ self.created_temp_modules.add(mod_name)
953
+ self.shell.run_code("import %s" % mod_name)
954
+ self.shell.run_code("pass")
955
+ # The latin-1 encoded source is not valid utf-8, but must still be
956
+ # readable for the deduper to consider the module patchable.
957
+ deduper = self.shell.auto_magics._reloader.deduper_reloader
958
+ assert deduper.source_by_modname[mod_name] != ""
959
+ if platform.system().lower() != "darwin":
960
+ time.sleep(1.05)
961
+ with open(mod_fn, "wb") as f:
962
+ f.write(code_v1.replace("y + 3", "y + 5").encode("latin-1"))
963
+ self.shell.run_code("pass")
964
+ mod = sys.modules[mod_name]
965
+ assert mod.foo(0) == 5
966
+ assert mod.CAFE == "café"
967
+
938
968
  def test_super(self):
939
969
  self.shell.magic_autoreload("2")
940
970
  mod_name, mod_fn = self.new_module(
@@ -220,6 +220,7 @@ except Exception:
220
220
  #-----------------------------------------------------------------------------
221
221
  # for tokenizing blocks
222
222
  COMMENT, INPUT, OUTPUT = range(3)
223
+ _ANSI_RE = re.compile(r"\x1b\[[0-9;]*m")
223
224
 
224
225
  PSEUDO_DECORATORS = ["suppress", "verbatim", "savefig", "doctest"]
225
226
 
@@ -513,7 +514,7 @@ class EmbeddedSphinxShell:
513
514
 
514
515
  # Fetch the processed output. (This is not the submitted output.)
515
516
  self.cout.seek(0)
516
- processed_output = self.cout.read()
517
+ processed_output = _ANSI_RE.sub("", self.cout.read())
517
518
  if not is_suppress and not is_semicolon:
518
519
  #
519
520
  # In IPythonDirective.run, the elements of `ret` are eventually
@@ -1000,9 +1001,30 @@ class IPythonDirective(Directive):
1000
1001
  store_history=False)
1001
1002
  self.shell.clear_cout()
1002
1003
 
1004
+ def _is_inside_excluded_only(self):
1005
+ """Return True if inside an ``only`` node whose condition is false."""
1006
+ try:
1007
+ env = self.state.document.settings.env
1008
+ tags = env.app.tags
1009
+ except AttributeError:
1010
+ return False
1011
+
1012
+ node = self.state.parent
1013
+ while node is not None:
1014
+ if getattr(node, 'tagname', '') == 'only':
1015
+ expr = node.get('expr', '')
1016
+ if expr and not tags.eval_condition(expr):
1017
+ return True
1018
+ node = getattr(node, 'parent', None)
1019
+ return False
1020
+
1003
1021
  def run(self):
1004
1022
  debug = False
1005
1023
 
1024
+ # gh-9339: skip execution when inside an excluded only block.
1025
+ if self._is_inside_excluded_only():
1026
+ return []
1027
+
1006
1028
  #TODO, any reason block_parser can't be a method of embeddable shell
1007
1029
  # then we wouldn't have to carry these around
1008
1030
  rgxin, rgxout, promptin, promptout = self.setup()
@@ -0,0 +1,28 @@
1
+ """Test that ANSI escape sequences are stripped from directive output."""
2
+
3
+ import re
4
+
5
+ _ANSI_RE = re.compile(r"\x1b\[[0-9;]*m")
6
+
7
+
8
+ def test_strip_ansi_basic():
9
+ """ANSI color codes should be removed from output."""
10
+ raw = "\x1b[31mred text\x1b[0m"
11
+ assert _ANSI_RE.sub("", raw) == "red text"
12
+
13
+
14
+ def test_strip_ansi_multiple_codes():
15
+ """Multiple ANSI codes in a single string should all be removed."""
16
+ raw = "\x1b[1m\x1b[32mbold green\x1b[0m normal \x1b[4munderline\x1b[0m"
17
+ assert _ANSI_RE.sub("", raw) == "bold green normal underline"
18
+
19
+
20
+ def test_strip_ansi_no_codes():
21
+ """Strings without ANSI codes should pass through unchanged."""
22
+ raw = "plain output"
23
+ assert _ANSI_RE.sub("", raw) == "plain output"
24
+
25
+
26
+ def test_strip_ansi_empty():
27
+ """Empty strings should remain empty."""
28
+ assert _ANSI_RE.sub("", "") == ""
@@ -1064,12 +1064,18 @@ class TerminalInteractiveShell(InteractiveShell):
1064
1064
  gui = _convert_gui_from_matplotlib(gui)
1065
1065
 
1066
1066
  if self.simple_prompt is True and gui is not None:
1067
- print(
1068
- f'Cannot install event loop hook for "{gui}" when running with `--simple-prompt`.'
1069
- )
1070
- print(
1071
- "NOTE: Tk is supported natively; use Tk apps and Tk backends with `--simple-prompt`."
1072
- )
1067
+ if gui == "tk":
1068
+ print(
1069
+ "Tk is supported natively when running with `--simple-prompt`; "
1070
+ "no event loop hook will be installed."
1071
+ )
1072
+ else:
1073
+ print(
1074
+ f'Cannot install event loop hook for "{gui}" when running with `--simple-prompt`.'
1075
+ )
1076
+ print(
1077
+ "NOTE: Tk is supported natively; use Tk apps and Tk backends with `--simple-prompt`."
1078
+ )
1073
1079
  return
1074
1080
 
1075
1081
  if self._inputhook is None and gui is None:
@@ -221,3 +221,50 @@ def arg_split(commandline: str, posix: bool = False, strict: bool = True) -> lis
221
221
  break
222
222
 
223
223
  return tokens
224
+
225
+
226
+ def arg_split_with_quotes(
227
+ commandline: str, strict: bool = True
228
+ ) -> list[tuple[str, bool]]:
229
+ """Split a command line and report which tokens were originally quoted.
230
+
231
+ Returns a list of ``(token, was_quoted)`` pairs. ``token`` is the unquoted
232
+ form, as ``shlex.split(posix=True)`` returns, and ``was_quoted`` is True
233
+ if that token had any single- or double-quote characters in ``commandline``.
234
+
235
+ Useful for callers like ``%run`` that want to honor shell quoting when
236
+ deciding wether to apply further expansion (glob, tilde) to a token.
237
+
238
+ Detection is shlex-based on both passes so the quote semantics are the
239
+ same on Posix and Windows. If ``strict`` is False, malformed input (e.g.
240
+ an unbalanced quote) returns whatever was parsed so far instead of raising.
241
+ """
242
+ def _tokenize(s: str, posix: bool) -> list[str]:
243
+ lex = shlex.shlex(s, posix=posix)
244
+ lex.whitespace_split = True
245
+ lex.commenters = ''
246
+ out = []
247
+ while True:
248
+ try:
249
+ out.append(next(lex))
250
+ except StopIteration:
251
+ break
252
+ except ValueError:
253
+ if strict:
254
+ raise
255
+ out.append(lex.token)
256
+ break
257
+ return out
258
+
259
+ raw_tokens = _tokenize(commandline, posix=False)
260
+ clean_tokens = _tokenize(commandline, posix=True)
261
+
262
+ if len(raw_tokens) != len(clean_tokens):
263
+ # If the two passes disagree (exotic input) report nothing as quoted
264
+ # so callers get the legacy, non-quote-aware behavior.
265
+ return [(t, False) for t in clean_tokens]
266
+
267
+ return [
268
+ (clean, ("'" in raw) or ('"' in raw))
269
+ for clean, raw in zip(clean_tokens, raw_tokens)
270
+ ]
@@ -1,2 +1,2 @@
1
1
  # GENERATED BY setup.py
2
- commit = "352c35b"
2
+ commit = "2273f39"
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ """Generic functions for extending IPython."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import warnings
7
+ from typing import Any
8
+
9
+ from IPython.core.error import TryNext
10
+ from functools import singledispatch
11
+
12
+
13
+ @singledispatch
14
+ def _inspect_object(obj: Any) -> None:
15
+ """Called when you do obj?
16
+
17
+ .. deprecated:: 9.15
18
+ `inspect_object` is deprecated and will be removed in a future
19
+ version. It is no longer used within IPython, so registering
20
+ handlers on it has no effect.
21
+ """
22
+ raise TryNext
23
+
24
+
25
+ def __getattr__(name: str) -> Any:
26
+ if name == "inspect_object":
27
+ warnings.warn(
28
+ "inspect_object is deprecated since IPython 9.15 and will be "
29
+ "removed in a future version. It is no longer used within "
30
+ "IPython, so registering handlers on it has no effect.",
31
+ DeprecationWarning,
32
+ stacklevel=2,
33
+ )
34
+ return _inspect_object
35
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
36
+
37
+
38
+ @singledispatch
39
+ def complete_object(obj: Any, prev_completions: list[str]) -> list[str]:
40
+ """Custom completer dispatching for python objects.
41
+
42
+ Parameters
43
+ ----------
44
+ obj : object
45
+ The object to complete.
46
+ prev_completions : list
47
+ List of attributes discovered so far.
48
+ This should return the list of attributes in obj. If you only wish to
49
+ add to the attributes already discovered normally, return
50
+ own_attrs + prev_completions.
51
+ """
52
+ raise TryNext
@@ -20,7 +20,12 @@ elif sys.platform == "emscripten":
20
20
  else:
21
21
  from ._process_posix import system, getoutput, arg_split, check_pid
22
22
 
23
- from ._process_common import getoutputerror, get_output_error_code, process_handler
23
+ from ._process_common import (
24
+ arg_split_with_quotes,
25
+ getoutputerror,
26
+ get_output_error_code,
27
+ process_handler,
28
+ )
24
29
 
25
30
 
26
31
  class FindCmdError(Exception):
@@ -51,6 +51,7 @@ def input(prompt=""):
51
51
 
52
52
 
53
53
  def execfile(fname, glob, loc=None, compiler=None):
54
+ __tracebackhide__ = "__ipython_bottom__"
54
55
  loc = loc if (loc is not None) else glob
55
56
  with open(fname, "rb") as f:
56
57
  compiler = compiler or compile
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipython
3
- Version: 9.14.1
3
+ Version: 9.15.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
@@ -33,7 +33,7 @@ Requires-Dist: jedi>=0.18.2
33
33
  Requires-Dist: matplotlib-inline>=0.1.6
34
34
  Requires-Dist: pexpect>4.6; sys_platform != "win32" and sys_platform != "emscripten"
35
35
  Requires-Dist: prompt_toolkit<3.1.0,>=3.0.41
36
- Requires-Dist: psutil>=7; sys_platform != "emscripten"
36
+ Requires-Dist: psutil>=7; sys_platform != "emscripten" and sys_platform != "cygwin"
37
37
  Requires-Dist: pygments>=2.14.0
38
38
  Requires-Dist: stack_data>=0.6.0
39
39
  Requires-Dist: traitlets>=5.13.0