ipython 8.25.0__tar.gz → 8.26.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 (497) hide show
  1. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/async_helpers.py +0 -1
  2. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/interactiveshell.py +1 -1
  3. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/release.py +1 -1
  4. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_autocall.py +1 -0
  5. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_completer.py +11 -1
  6. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_debugger.py +5 -0
  7. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_formatters.py +37 -22
  8. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_interactiveshell.py +67 -47
  9. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_oinspect.py +21 -11
  10. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/test_autoreload.py +1 -0
  11. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/pretty.py +10 -2
  12. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/interactiveshell.py +5 -0
  13. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/asyncio.py +1 -0
  14. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/decorators.py +7 -4
  15. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_emscripten.py +0 -1
  16. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_sysinfo.py +1 -1
  17. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/io.py +2 -0
  18. {ipython-8.25.0/ipython.egg-info → ipython-8.26.0}/PKG-INFO +2 -1
  19. {ipython-8.25.0 → ipython-8.26.0}/README.rst +0 -52
  20. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version8.rst +22 -0
  21. {ipython-8.25.0 → ipython-8.26.0/ipython.egg-info}/PKG-INFO +2 -1
  22. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/SOURCES.txt +2 -0
  23. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/requires.txt +1 -0
  24. {ipython-8.25.0 → ipython-8.26.0}/pyproject.toml +7 -0
  25. {ipython-8.25.0 → ipython-8.26.0}/.flake8 +0 -0
  26. {ipython-8.25.0 → ipython-8.26.0}/.mailmap +0 -0
  27. {ipython-8.25.0 → ipython-8.26.0}/.pre-commit-config.yaml +0 -0
  28. {ipython-8.25.0 → ipython-8.26.0}/COPYING.rst +0 -0
  29. {ipython-8.25.0 → ipython-8.26.0}/IPython/__init__.py +0 -0
  30. {ipython-8.25.0 → ipython-8.26.0}/IPython/__main__.py +0 -0
  31. {ipython-8.25.0 → ipython-8.26.0}/IPython/conftest.py +0 -0
  32. {ipython-8.25.0 → ipython-8.26.0}/IPython/consoleapp.py +0 -0
  33. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/__init__.py +0 -0
  34. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/alias.py +0 -0
  35. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/application.py +0 -0
  36. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/autocall.py +0 -0
  37. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/builtin_trap.py +0 -0
  38. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/compilerop.py +0 -0
  39. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/completer.py +0 -0
  40. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/completerlib.py +0 -0
  41. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/crashhandler.py +0 -0
  42. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/debugger.py +0 -0
  43. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display.py +0 -0
  44. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display_functions.py +0 -0
  45. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/display_trap.py +0 -0
  46. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/displayhook.py +0 -0
  47. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/displaypub.py +0 -0
  48. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/error.py +0 -0
  49. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/events.py +0 -0
  50. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/excolors.py +0 -0
  51. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/extensions.py +0 -0
  52. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/formatters.py +0 -0
  53. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/getipython.py +0 -0
  54. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/guarded_eval.py +0 -0
  55. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/history.py +0 -0
  56. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/historyapp.py +0 -0
  57. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/hooks.py +0 -0
  58. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputsplitter.py +0 -0
  59. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputtransformer.py +0 -0
  60. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/inputtransformer2.py +0 -0
  61. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/latex_symbols.py +0 -0
  62. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/logger.py +0 -0
  63. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/macro.py +0 -0
  64. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magic.py +0 -0
  65. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magic_arguments.py +0 -0
  66. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/__init__.py +0 -0
  67. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/ast_mod.py +0 -0
  68. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/auto.py +0 -0
  69. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/basic.py +0 -0
  70. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/code.py +0 -0
  71. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/config.py +0 -0
  72. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/display.py +0 -0
  73. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/execution.py +0 -0
  74. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/extension.py +0 -0
  75. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/history.py +0 -0
  76. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/logging.py +0 -0
  77. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/namespace.py +0 -0
  78. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/osm.py +0 -0
  79. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/packaging.py +0 -0
  80. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/pylab.py +0 -0
  81. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/magics/script.py +0 -0
  82. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/oinspect.py +0 -0
  83. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/page.py +0 -0
  84. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/payload.py +0 -0
  85. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/payloadpage.py +0 -0
  86. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/prefilter.py +0 -0
  87. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profile/README_STARTUP +0 -0
  88. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profileapp.py +0 -0
  89. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/profiledir.py +0 -0
  90. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/prompts.py +0 -0
  91. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/pylabtools.py +0 -0
  92. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/shellapp.py +0 -0
  93. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/splitinput.py +0 -0
  94. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/2x2.jpg +0 -0
  95. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/2x2.png +0 -0
  96. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/__init__.py +0 -0
  97. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/bad_all.py +0 -0
  98. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  99. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/nonascii.py +0 -0
  100. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/nonascii2.py +0 -0
  101. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/print_argv.py +0 -0
  102. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/refbug.py +0 -0
  103. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/simpleerr.py +0 -0
  104. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/tclass.py +0 -0
  105. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_alias.py +0 -0
  106. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_application.py +0 -0
  107. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_async_helpers.py +0 -0
  108. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_compilerop.py +0 -0
  109. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_completerlib.py +0 -0
  110. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_display.py +0 -0
  111. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_displayhook.py +0 -0
  112. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_events.py +0 -0
  113. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  114. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_extension.py +0 -0
  115. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  116. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_handlers.py +0 -0
  117. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_history.py +0 -0
  118. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_hooks.py +0 -0
  119. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_imports.py +0 -0
  120. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  121. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  122. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  123. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  124. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_iplib.py +0 -0
  125. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_logger.py +0 -0
  126. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic.py +0 -0
  127. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  128. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  129. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_page.py +0 -0
  130. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_paths.py +0 -0
  131. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_prefilter.py +0 -0
  132. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_profile.py +0 -0
  133. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_prompts.py +0 -0
  134. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_pylabtools.py +0 -0
  135. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_run.py +0 -0
  136. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_shellapp.py +0 -0
  137. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_splitinput.py +0 -0
  138. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/tests/test_ultratb.py +0 -0
  139. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/ultratb.py +0 -0
  140. {ipython-8.25.0 → ipython-8.26.0}/IPython/core/usage.py +0 -0
  141. {ipython-8.25.0 → ipython-8.26.0}/IPython/display.py +0 -0
  142. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/__init__.py +0 -0
  143. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/autoreload.py +0 -0
  144. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/storemagic.py +0 -0
  145. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/__init__.py +0 -0
  146. {ipython-8.25.0 → ipython-8.26.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  147. {ipython-8.25.0 → ipython-8.26.0}/IPython/external/__init__.py +0 -0
  148. {ipython-8.25.0 → ipython-8.26.0}/IPython/external/qt_for_kernel.py +0 -0
  149. {ipython-8.25.0 → ipython-8.26.0}/IPython/external/qt_loaders.py +0 -0
  150. {ipython-8.25.0 → ipython-8.26.0}/IPython/external/tests/__init__.py +0 -0
  151. {ipython-8.25.0 → ipython-8.26.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  152. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/__init__.py +0 -0
  153. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/backgroundjobs.py +0 -0
  154. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/clipboard.py +0 -0
  155. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/deepreload.py +0 -0
  156. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/demo.py +0 -0
  157. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/display.py +0 -0
  158. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/editorhooks.py +0 -0
  159. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/guisupport.py +0 -0
  160. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/latextools.py +0 -0
  161. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/lexers.py +0 -0
  162. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/__init__.py +0 -0
  163. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test.wav +0 -0
  164. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  165. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_clipboard.py +0 -0
  166. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_deepreload.py +0 -0
  167. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_display.py +0 -0
  168. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  169. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_imports.py +0 -0
  170. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_latextools.py +0 -0
  171. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_lexers.py +0 -0
  172. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_pretty.py +0 -0
  173. {ipython-8.25.0 → ipython-8.26.0}/IPython/lib/tests/test_pygments.py +0 -0
  174. {ipython-8.25.0 → ipython-8.26.0}/IPython/paths.py +0 -0
  175. {ipython-8.25.0 → ipython-8.26.0}/IPython/py.typed +0 -0
  176. {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/__init__.py +0 -0
  177. {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/custom_doctests.py +0 -0
  178. {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  179. {ipython-8.25.0 → ipython-8.26.0}/IPython/sphinxext/ipython_directive.py +0 -0
  180. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/__init__.py +0 -0
  181. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/console.py +0 -0
  182. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/debugger.py +0 -0
  183. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/embed.py +0 -0
  184. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/ipapp.py +0 -0
  185. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/magics.py +0 -0
  186. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/prompts.py +0 -0
  187. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  188. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  189. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  190. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  191. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  192. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  193. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  194. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  195. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  196. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  197. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/ptutils.py +0 -0
  198. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  199. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  200. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  201. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/shortcuts/filters.py +0 -0
  202. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/__init__.py +0 -0
  203. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  204. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_embed.py +0 -0
  205. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_help.py +0 -0
  206. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  207. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  208. {ipython-8.25.0 → ipython-8.26.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  209. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/__init__.py +0 -0
  210. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/globalipapp.py +0 -0
  211. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/ipunittest.py +0 -0
  212. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/Makefile +0 -0
  213. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/README.txt +0 -0
  214. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/__init__.py +0 -0
  215. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/dtexample.py +0 -0
  216. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  217. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  218. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/setup.py +0 -0
  219. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/simple.py +0 -0
  220. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/simplevars.py +0 -0
  221. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_combo.txt +0 -0
  222. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_example.txt +0 -0
  223. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  224. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  225. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/plugin/test_refs.py +0 -0
  226. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/skipdoctest.py +0 -0
  227. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/__init__.py +0 -0
  228. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_decorators.py +0 -0
  229. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  230. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tests/test_tools.py +0 -0
  231. {ipython-8.25.0 → ipython-8.26.0}/IPython/testing/tools.py +0 -0
  232. {ipython-8.25.0 → ipython-8.26.0}/IPython/tests/cve.py +0 -0
  233. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/PyColorize.py +0 -0
  234. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/__init__.py +0 -0
  235. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_cli.py +0 -0
  236. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_common.py +0 -0
  237. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_posix.py +0 -0
  238. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_win32.py +0 -0
  239. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/_process_win32_controller.py +0 -0
  240. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/capture.py +0 -0
  241. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/colorable.py +0 -0
  242. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/coloransi.py +0 -0
  243. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/contexts.py +0 -0
  244. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/daemonize.py +0 -0
  245. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/data.py +0 -0
  246. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/decorators.py +0 -0
  247. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/dir2.py +0 -0
  248. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/docs.py +0 -0
  249. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/encoding.py +0 -0
  250. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/eventful.py +0 -0
  251. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/frame.py +0 -0
  252. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/generics.py +0 -0
  253. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/importstring.py +0 -0
  254. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/ipstruct.py +0 -0
  255. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/jsonutil.py +0 -0
  256. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/localinterfaces.py +0 -0
  257. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/log.py +0 -0
  258. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/module_paths.py +0 -0
  259. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/openpy.py +0 -0
  260. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/path.py +0 -0
  261. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/process.py +0 -0
  262. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/py3compat.py +0 -0
  263. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/sentinel.py +0 -0
  264. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/shimmodule.py +0 -0
  265. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/signatures.py +0 -0
  266. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/strdispatch.py +0 -0
  267. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/sysinfo.py +0 -0
  268. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/syspathcontext.py +0 -0
  269. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tempdir.py +0 -0
  270. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/terminal.py +0 -0
  271. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/__init__.py +0 -0
  272. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_capture.py +0 -0
  273. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_decorators.py +0 -0
  274. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_deprecated.py +0 -0
  275. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_dir2.py +0 -0
  276. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_imports.py +0 -0
  277. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_importstring.py +0 -0
  278. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_io.py +0 -0
  279. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_module_paths.py +0 -0
  280. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_openpy.py +0 -0
  281. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_path.py +0 -0
  282. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_process.py +0 -0
  283. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  284. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  285. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  286. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_tempdir.py +0 -0
  287. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_text.py +0 -0
  288. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  289. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tests/test_wildcard.py +0 -0
  290. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/text.py +0 -0
  291. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/timing.py +0 -0
  292. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tokenutil.py +0 -0
  293. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/traitlets.py +0 -0
  294. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/tz.py +0 -0
  295. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/ulinecache.py +0 -0
  296. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/version.py +0 -0
  297. {ipython-8.25.0 → ipython-8.26.0}/IPython/utils/wildcard.py +0 -0
  298. {ipython-8.25.0 → ipython-8.26.0}/LICENSE +0 -0
  299. {ipython-8.25.0 → ipython-8.26.0}/MANIFEST.in +0 -0
  300. {ipython-8.25.0 → ipython-8.26.0}/_build_meta.py +0 -0
  301. {ipython-8.25.0 → ipython-8.26.0}/docs/Makefile +0 -0
  302. {ipython-8.25.0 → ipython-8.26.0}/docs/README.rst +0 -0
  303. {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_api.py +0 -0
  304. {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_config.py +0 -0
  305. {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_magics.py +0 -0
  306. {ipython-8.25.0 → ipython-8.26.0}/docs/autogen_shortcuts.py +0 -0
  307. {ipython-8.25.0 → ipython-8.26.0}/docs/make.cmd +0 -0
  308. {ipython-8.25.0 → ipython-8.26.0}/docs/man/ipython.1 +0 -0
  309. {ipython-8.25.0 → ipython-8.26.0}/docs/requirements.txt +0 -0
  310. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/running-crop.png +0 -0
  311. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/running.png +0 -0
  312. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/treeview.png +0 -0
  313. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/user-interface.png +0 -0
  314. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/2.0/widgets.png +0 -0
  315. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  316. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  317. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  318. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  319. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  320. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  321. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  322. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  323. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  324. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  325. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  326. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/autosuggest.gif +0 -0
  327. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  328. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  329. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  330. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  331. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  332. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  333. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  334. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  335. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  336. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  337. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  338. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  339. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  340. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  341. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  342. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ms_visual_studio.png +0 -0
  343. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/notebook_specgram.png +0 -0
  344. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/ptshell_features.png +0 -0
  345. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/qtconsole.png +0 -0
  346. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  347. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_images/unicode_completion.png +0 -0
  348. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/favicon.ico +0 -0
  349. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/logo.png +0 -0
  350. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_static/theme_overrides.css +0 -0
  351. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_templates/breadcrumbs.html +0 -0
  352. {ipython-8.25.0 → ipython-8.26.0}/docs/source/_templates/notebook_redirect.html +0 -0
  353. {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/history.rst +0 -0
  354. {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/index.rst +0 -0
  355. {ipython-8.25.0 → ipython-8.26.0}/docs/source/about/license_and_copyright.rst +0 -0
  356. {ipython-8.25.0 → ipython-8.26.0}/docs/source/api/index.rst +0 -0
  357. {ipython-8.25.0 → ipython-8.26.0}/docs/source/conf.py +0 -0
  358. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/callbacks.rst +0 -0
  359. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/custommagics.rst +0 -0
  360. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/details.rst +0 -0
  361. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/eventloops.rst +0 -0
  362. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/autoreload.rst +0 -0
  363. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/index.rst +0 -0
  364. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/extensions/storemagic.rst +0 -0
  365. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/index.rst +0 -0
  366. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/inputtransforms.rst +0 -0
  367. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/integrating.rst +0 -0
  368. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/intro.rst +0 -0
  369. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/options/index.rst +0 -0
  370. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  371. {ipython-8.25.0 → ipython-8.26.0}/docs/source/config/shortcuts/index.rst +0 -0
  372. {ipython-8.25.0 → ipython-8.26.0}/docs/source/coredev/index.rst +0 -0
  373. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/config.rst +0 -0
  374. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/execution.rst +0 -0
  375. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  376. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  377. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/other_kernels.png +0 -0
  378. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/figs/other_kernels.svg +0 -0
  379. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/how_ipython_works.rst +0 -0
  380. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/index.rst +0 -0
  381. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/inputhook_app.rst +0 -0
  382. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/kernels.rst +0 -0
  383. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/lexer.rst +0 -0
  384. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/messaging.rst +0 -0
  385. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/pycompat.rst +0 -0
  386. {ipython-8.25.0 → ipython-8.26.0}/docs/source/development/wrapperkernels.rst +0 -0
  387. {ipython-8.25.0 → ipython-8.26.0}/docs/source/index.rst +0 -0
  388. {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/index.rst +0 -0
  389. {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/install.rst +0 -0
  390. {ipython-8.25.0 → ipython-8.26.0}/docs/source/install/kernel_install.rst +0 -0
  391. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/autoawait.rst +0 -0
  392. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/besselj.png +0 -0
  393. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  394. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/jn.html +0 -0
  395. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  396. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/index.rst +0 -0
  397. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/magics.rst +0 -0
  398. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/plotting.rst +0 -0
  399. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  400. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/reference.rst +0 -0
  401. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/shell.rst +0 -0
  402. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/tips.rst +0 -0
  403. {ipython-8.25.0 → ipython-8.26.0}/docs/source/interactive/tutorial.rst +0 -0
  404. {ipython-8.25.0 → ipython-8.26.0}/docs/source/links.txt +0 -0
  405. {ipython-8.25.0 → ipython-8.26.0}/docs/source/overview.rst +0 -0
  406. {ipython-8.25.0 → ipython-8.26.0}/docs/source/parallel/index.rst +0 -0
  407. {ipython-8.25.0 → ipython-8.26.0}/docs/source/sphinx.toml +0 -0
  408. {ipython-8.25.0 → ipython-8.26.0}/docs/source/sphinxext.rst +0 -0
  409. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/development.rst +0 -0
  410. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  411. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  412. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  413. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  414. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  415. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  416. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  417. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  418. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  419. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  420. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  421. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/index.rst +0 -0
  422. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/README.md +0 -0
  423. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  424. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  425. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.10.rst +0 -0
  426. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.11.rst +0 -0
  427. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.12.rst +0 -0
  428. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.13.rst +0 -0
  429. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.8.rst +0 -0
  430. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version0.9.rst +0 -0
  431. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version1.0.rst +0 -0
  432. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version2.0.rst +0 -0
  433. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version3.rst +0 -0
  434. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  435. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version4.rst +0 -0
  436. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version5.rst +0 -0
  437. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version6.rst +0 -0
  438. {ipython-8.25.0 → ipython-8.26.0}/docs/source/whatsnew/version7.rst +0 -0
  439. {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/apigen.py +0 -0
  440. {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/configtraits.py +0 -0
  441. {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/github.py +0 -0
  442. {ipython-8.25.0 → ipython-8.26.0}/docs/sphinxext/magics.py +0 -0
  443. {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/Index.ipynb +0 -0
  444. {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_class_long.py +0 -0
  445. {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_class_short.py +0 -0
  446. {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/embed_function.py +0 -0
  447. {ipython-8.25.0 → ipython-8.26.0}/examples/Embedding/start_ipython_config.py +0 -0
  448. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  449. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  450. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  451. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  452. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  453. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  454. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  455. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Index.ipynb +0 -0
  456. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  457. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  458. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  459. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  460. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  461. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  462. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  463. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  464. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  465. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  466. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/data/flare.json +0 -0
  467. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/example-demo.py +0 -0
  468. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  469. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  470. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  471. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  472. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  473. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/ipython.desktop +0 -0
  474. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  475. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  476. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  477. {ipython-8.25.0 → ipython-8.26.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  478. {ipython-8.25.0 → ipython-8.26.0}/examples/Index.ipynb +0 -0
  479. {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  480. {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  481. {ipython-8.25.0 → ipython-8.26.0}/examples/images/FrontendKernel.png +0 -0
  482. {ipython-8.25.0 → ipython-8.26.0}/examples/images/animation.m4v +0 -0
  483. {ipython-8.25.0 → ipython-8.26.0}/examples/images/ipython_logo.png +0 -0
  484. {ipython-8.25.0 → ipython-8.26.0}/examples/images/python_logo.svg +0 -0
  485. {ipython-8.25.0 → ipython-8.26.0}/examples/utils/cwd_prompt.py +0 -0
  486. {ipython-8.25.0 → ipython-8.26.0}/examples/utils/list_pyfiles.ipy +0 -0
  487. {ipython-8.25.0 → ipython-8.26.0}/examples/utils/list_subdirs.ipy +0 -0
  488. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/dependency_links.txt +0 -0
  489. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/entry_points.txt +0 -0
  490. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/not-zip-safe +0 -0
  491. {ipython-8.25.0 → ipython-8.26.0}/ipython.egg-info/top_level.txt +0 -0
  492. {ipython-8.25.0 → ipython-8.26.0}/long_description.rst +0 -0
  493. {ipython-8.25.0 → ipython-8.26.0}/scripts/ipython.ico +0 -0
  494. {ipython-8.25.0 → ipython-8.26.0}/scripts/ipython_nb.ico +0 -0
  495. {ipython-8.25.0 → ipython-8.26.0}/setup.cfg +0 -0
  496. {ipython-8.25.0 → ipython-8.26.0}/setup.py +0 -0
  497. {ipython-8.25.0 → ipython-8.26.0}/setupbase.py +0 -0
@@ -10,7 +10,6 @@ explicitly to actually raise a SyntaxError and stay as close as possible to
10
10
  Python semantics.
11
11
  """
12
12
 
13
-
14
13
  import ast
15
14
  import asyncio
16
15
  import inspect
@@ -2033,7 +2033,7 @@ class InteractiveShell(SingletonConfigurable):
2033
2033
  print(self.InteractiveTB.stb2text(stb))
2034
2034
  print("The original exception:")
2035
2035
  stb = self.InteractiveTB.structured_traceback(
2036
- (etype,value,tb), tb_offset=tb_offset
2036
+ etype, value, tb, tb_offset=tb_offset
2037
2037
  )
2038
2038
  return stb
2039
2039
 
@@ -16,7 +16,7 @@
16
16
  # release. 'dev' as a _version_extra string means this is a development
17
17
  # version
18
18
  _version_major = 8
19
- _version_minor = 25
19
+ _version_minor = 26
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -5,6 +5,7 @@ directory, which we are removing. For now putting this here ensures at least
5
5
  we do run the test, though ultimately this functionality should all be tested
6
6
  with better-isolated tests that don't rely on the global instance in iptest.
7
7
  """
8
+
8
9
  from IPython.core.splitinput import LineInfo
9
10
  from IPython.core.prefilter import AutocallChecker
10
11
 
@@ -10,6 +10,9 @@ import sys
10
10
  import textwrap
11
11
  import unittest
12
12
 
13
+ from importlib.metadata import version
14
+
15
+
13
16
  from contextlib import contextmanager
14
17
 
15
18
  from traitlets.config.loader import Config
@@ -30,6 +33,9 @@ from IPython.core.completer import (
30
33
  CompletionContext,
31
34
  )
32
35
 
36
+ from packaging.version import parse
37
+
38
+
33
39
  # -----------------------------------------------------------------------------
34
40
  # Test functions
35
41
  # -----------------------------------------------------------------------------
@@ -531,7 +537,11 @@ class TestCompleter(unittest.TestCase):
531
537
  c = next(completions) # should be `%time` or similar
532
538
  assert c.type == "magic", "Type of magic was not assigned by completer"
533
539
 
534
- @pytest.mark.xfail(reason="Known failure on jedi<=0.18.0")
540
+ @pytest.mark.xfail(
541
+ parse(version("jedi")) <= parse("0.18.0"),
542
+ reason="Known failure on jedi<=0.18.0",
543
+ strict=True,
544
+ )
535
545
  def test_deduplicate_completions(self):
536
546
  """
537
547
  Test that completions are correctly deduplicated (even if ranges are not the same)
@@ -447,6 +447,11 @@ def test_decorator_skip_disabled():
447
447
  child.close()
448
448
 
449
449
 
450
+ @pytest.mark.xfail(
451
+ sys.version_info.releaselevel not in ("final", "candidate"),
452
+ reason="fails on 3.13.dev",
453
+ strict=True,
454
+ )
450
455
  @pytest.mark.skipif(platform.python_implementation() == "PyPy", reason="issues on PyPy")
451
456
  @skip_win32
452
457
  def test_decorator_skip_with_breakpoint():
@@ -103,7 +103,7 @@ def test_bad_precision():
103
103
 
104
104
  def test_for_type():
105
105
  f = PlainTextFormatter()
106
-
106
+
107
107
  # initial return, None
108
108
  assert f.for_type(C, foo_printer) is None
109
109
  # no func queries
@@ -116,9 +116,9 @@ def test_for_type():
116
116
 
117
117
  def test_for_type_string():
118
118
  f = PlainTextFormatter()
119
-
119
+
120
120
  type_str = '%s.%s' % (C.__module__, 'C')
121
-
121
+
122
122
  # initial return, None
123
123
  assert f.for_type(type_str, foo_printer) is None
124
124
  # no func queries
@@ -130,9 +130,9 @@ def test_for_type_string():
130
130
 
131
131
  def test_for_type_by_name():
132
132
  f = PlainTextFormatter()
133
-
133
+
134
134
  mod = C.__module__
135
-
135
+
136
136
  # initial return, None
137
137
  assert f.for_type_by_name(mod, "C", foo_printer) is None
138
138
  # no func queries
@@ -146,7 +146,7 @@ def test_for_type_by_name():
146
146
 
147
147
  def test_lookup():
148
148
  f = PlainTextFormatter()
149
-
149
+
150
150
  f.for_type(C, foo_printer)
151
151
  assert f.lookup(C()) is foo_printer
152
152
  with pytest.raises(KeyError):
@@ -155,7 +155,7 @@ def test_lookup():
155
155
  def test_lookup_string():
156
156
  f = PlainTextFormatter()
157
157
  type_str = '%s.%s' % (C.__module__, 'C')
158
-
158
+
159
159
  f.for_type(type_str, foo_printer)
160
160
  assert f.lookup(C()) is foo_printer
161
161
  # should move from deferred to imported dict
@@ -173,16 +173,16 @@ def test_lookup_by_type_string():
173
173
  f = PlainTextFormatter()
174
174
  type_str = '%s.%s' % (C.__module__, 'C')
175
175
  f.for_type(type_str, foo_printer)
176
-
176
+
177
177
  # verify insertion
178
178
  assert _mod_name_key(C) in f.deferred_printers
179
179
  assert C not in f.type_printers
180
-
180
+
181
181
  assert f.lookup_by_type(type_str) is foo_printer
182
182
  # lookup by string doesn't cause import
183
183
  assert _mod_name_key(C) in f.deferred_printers
184
184
  assert C not in f.type_printers
185
-
185
+
186
186
  assert f.lookup_by_type(C) is foo_printer
187
187
  # should move from deferred to imported dict
188
188
  assert _mod_name_key(C) not in f.deferred_printers
@@ -220,10 +220,10 @@ def test_pop():
220
220
  def test_pop_string():
221
221
  f = PlainTextFormatter()
222
222
  type_str = '%s.%s' % (C.__module__, 'C')
223
-
223
+
224
224
  with pytest.raises(KeyError):
225
225
  f.pop(type_str)
226
-
226
+
227
227
  f.for_type(type_str, foo_printer)
228
228
  f.pop(type_str)
229
229
  with pytest.raises(KeyError):
@@ -238,7 +238,7 @@ def test_pop_string():
238
238
  with pytest.raises(KeyError):
239
239
  f.pop(type_str)
240
240
  assert f.pop(type_str, None) is None
241
-
241
+
242
242
 
243
243
  def test_error_method():
244
244
  f = HTMLFormatter()
@@ -341,14 +341,14 @@ def test_print_method_weird():
341
341
  assert text_hat._repr_html_ == "_repr_html_"
342
342
  with capture_output() as captured:
343
343
  result = f(text_hat)
344
-
344
+
345
345
  assert result is None
346
346
  assert "FormatterWarning" not in captured.stderr
347
347
 
348
348
  class CallableMagicHat(object):
349
349
  def __getattr__(self, key):
350
350
  return lambda : key
351
-
351
+
352
352
  call_hat = CallableMagicHat()
353
353
  with capture_output() as captured:
354
354
  result = f(call_hat)
@@ -358,11 +358,11 @@ def test_print_method_weird():
358
358
  class BadReprArgs(object):
359
359
  def _repr_html_(self, extra, args):
360
360
  return "html"
361
-
361
+
362
362
  bad = BadReprArgs()
363
363
  with capture_output() as captured:
364
364
  result = f(bad)
365
-
365
+
366
366
  assert result is None
367
367
  assert "FormatterWarning" not in captured.stderr
368
368
 
@@ -406,13 +406,13 @@ def test_ipython_display_formatter():
406
406
  class NotSelfDisplaying(object):
407
407
  def __repr__(self):
408
408
  return "NotSelfDisplaying"
409
-
409
+
410
410
  def _ipython_display_(self):
411
411
  raise NotImplementedError
412
-
412
+
413
413
  save_enabled = f.ipython_display_formatter.enabled
414
414
  f.ipython_display_formatter.enabled = True
415
-
415
+
416
416
  yes = SelfDisplaying()
417
417
  no = NotSelfDisplaying()
418
418
 
@@ -444,7 +444,7 @@ def test_repr_mime():
444
444
  return 'should-be-overwritten'
445
445
  def _repr_html_(self):
446
446
  return '<b>hi!</b>'
447
-
447
+
448
448
  f = get_ipython().display_formatter
449
449
  html_f = f.formatters['text/html']
450
450
  save_enabled = html_f.enabled
@@ -507,7 +507,7 @@ def test_repr_mime_meta():
507
507
  }
508
508
  }
509
509
  return (data, metadata)
510
-
510
+
511
511
  f = get_ipython().display_formatter
512
512
  obj = HasReprMimeMeta()
513
513
  d, md = f.format(obj)
@@ -529,3 +529,18 @@ def test_repr_mime_failure():
529
529
  obj = BadReprMime()
530
530
  d, md = f.format(obj)
531
531
  assert "text/plain" in d
532
+
533
+
534
+ def test_custom_repr_namedtuple_partialmethod():
535
+ from functools import partialmethod
536
+ from typing import NamedTuple
537
+
538
+ class Foo(NamedTuple):
539
+ ...
540
+
541
+ Foo.__repr__ = partialmethod(lambda obj: "Hello World")
542
+ foo = Foo()
543
+
544
+ f = PlainTextFormatter()
545
+ assert f.pprint
546
+ assert f(foo) == "Hello World"
@@ -27,7 +27,11 @@ from IPython.core.inputtransformer import InputTransformer
27
27
  from IPython.core import interactiveshell
28
28
  from IPython.core.oinspect import OInfo
29
29
  from IPython.testing.decorators import (
30
- skipif, skip_win32, onlyif_unicode_paths, onlyif_cmds_exist,
30
+ skipif,
31
+ skip_win32,
32
+ onlyif_unicode_paths,
33
+ onlyif_cmds_exist,
34
+ skip_if_not_osx,
31
35
  )
32
36
  from IPython.testing import tools as tt
33
37
  from IPython.utils.process import find_cmd
@@ -124,16 +128,16 @@ class InteractiveShellTestCase(unittest.TestCase):
124
128
  newlen = len(ip.user_ns['In'])
125
129
  self.assertEqual(oldlen+1, newlen)
126
130
  self.assertEqual(ip.user_ns['In'][-1],'1;')
127
-
131
+
128
132
  def test_magic_names_in_string(self):
129
133
  ip.run_cell('a = """\n%exit\n"""')
130
134
  self.assertEqual(ip.user_ns['a'], '\n%exit\n')
131
-
135
+
132
136
  def test_trailing_newline(self):
133
137
  """test that running !(command) does not raise a SyntaxError"""
134
138
  ip.run_cell('!(true)\n', False)
135
139
  ip.run_cell('!(true)\n\n\n', False)
136
-
140
+
137
141
  def test_gh_597(self):
138
142
  """Pretty-printing lists of objects with non-ascii reprs may cause
139
143
  problems."""
@@ -142,8 +146,7 @@ class InteractiveShellTestCase(unittest.TestCase):
142
146
  return "\xe9"*50
143
147
  import IPython.core.formatters
144
148
  f = IPython.core.formatters.PlainTextFormatter()
145
- f([Spam(),Spam()])
146
-
149
+ f([Spam(), Spam()])
147
150
 
148
151
  def test_future_flags(self):
149
152
  """Check that future flags are used for parsing code (gh-777)"""
@@ -163,9 +166,9 @@ class InteractiveShellTestCase(unittest.TestCase):
163
166
  " def __init__(self,x=[]):\n"
164
167
  " list.__init__(self,x)"))
165
168
  ip.run_cell("w=Mylist([1,2,3])")
166
-
169
+
167
170
  from pickle import dumps
168
-
171
+
169
172
  # We need to swap in our main module - this is only necessary
170
173
  # inside the test framework, because IPython puts the interactive module
171
174
  # in place (but the test framework undoes this).
@@ -176,7 +179,7 @@ class InteractiveShellTestCase(unittest.TestCase):
176
179
  finally:
177
180
  sys.modules['__main__'] = _main
178
181
  self.assertTrue(isinstance(res, bytes))
179
-
182
+
180
183
  def test_global_ns(self):
181
184
  "Code in functions must be able to access variables outside them."
182
185
  ip = get_ipython()
@@ -222,13 +225,13 @@ class InteractiveShellTestCase(unittest.TestCase):
222
225
  self.assertEqual(ip.var_expand(u'echo {f}'), u'echo Ca\xf1o')
223
226
  self.assertEqual(ip.var_expand(u'echo {f[:-1]}'), u'echo Ca\xf1')
224
227
  self.assertEqual(ip.var_expand(u'echo {1*2}'), u'echo 2')
225
-
228
+
226
229
  self.assertEqual(ip.var_expand(u"grep x | awk '{print $1}'"), u"grep x | awk '{print $1}'")
227
230
 
228
231
  ip.user_ns['f'] = b'Ca\xc3\xb1o'
229
232
  # This should not raise any exception:
230
233
  ip.var_expand(u'echo $f')
231
-
234
+
232
235
  def test_var_expand_local(self):
233
236
  """Test local variable expansion in !system and %magic calls"""
234
237
  # !system
@@ -253,7 +256,7 @@ class InteractiveShellTestCase(unittest.TestCase):
253
256
 
254
257
  def test_var_expand_self(self):
255
258
  """Test variable expansion with the name 'self', which was failing.
256
-
259
+
257
260
  See https://github.com/ipython/ipython/issues/1878#issuecomment-7698218
258
261
  """
259
262
  ip.run_cell(
@@ -273,7 +276,7 @@ class InteractiveShellTestCase(unittest.TestCase):
273
276
  self.assertEqual(ip.var_expand(u"{asdf}"), u"{asdf}")
274
277
  # ZeroDivisionError
275
278
  self.assertEqual(ip.var_expand(u"{1/0}"), u"{1/0}")
276
-
279
+
277
280
  def test_silent_postexec(self):
278
281
  """run_cell(silent=True) doesn't invoke pre/post_run_cell callbacks"""
279
282
  pre_explicit = mock.Mock()
@@ -281,12 +284,12 @@ class InteractiveShellTestCase(unittest.TestCase):
281
284
  post_explicit = mock.Mock()
282
285
  post_always = mock.Mock()
283
286
  all_mocks = [pre_explicit, pre_always, post_explicit, post_always]
284
-
287
+
285
288
  ip.events.register('pre_run_cell', pre_explicit)
286
289
  ip.events.register('pre_execute', pre_always)
287
290
  ip.events.register('post_run_cell', post_explicit)
288
291
  ip.events.register('post_execute', post_always)
289
-
292
+
290
293
  try:
291
294
  ip.run_cell("1", silent=True)
292
295
  assert pre_always.called
@@ -317,29 +320,29 @@ class InteractiveShellTestCase(unittest.TestCase):
317
320
  ip.events.unregister('pre_execute', pre_always)
318
321
  ip.events.unregister('post_run_cell', post_explicit)
319
322
  ip.events.unregister('post_execute', post_always)
320
-
323
+
321
324
  def test_silent_noadvance(self):
322
325
  """run_cell(silent=True) doesn't advance execution_count"""
323
326
  ec = ip.execution_count
324
327
  # silent should force store_history=False
325
328
  ip.run_cell("1", store_history=True, silent=True)
326
-
329
+
327
330
  self.assertEqual(ec, ip.execution_count)
328
331
  # double-check that non-silent exec did what we expected
329
332
  # silent to avoid
330
333
  ip.run_cell("1", store_history=True)
331
334
  self.assertEqual(ec+1, ip.execution_count)
332
-
335
+
333
336
  def test_silent_nodisplayhook(self):
334
337
  """run_cell(silent=True) doesn't trigger displayhook"""
335
338
  d = dict(called=False)
336
-
339
+
337
340
  trap = ip.display_trap
338
341
  save_hook = trap.hook
339
-
342
+
340
343
  def failing_hook(*args, **kwargs):
341
344
  d['called'] = True
342
-
345
+
343
346
  try:
344
347
  trap.hook = failing_hook
345
348
  res = ip.run_cell("1", silent=True)
@@ -354,7 +357,7 @@ class InteractiveShellTestCase(unittest.TestCase):
354
357
 
355
358
  def test_ofind_line_magic(self):
356
359
  from IPython.core.magic import register_line_magic
357
-
360
+
358
361
  @register_line_magic
359
362
  def lmagic(line):
360
363
  "A line magic"
@@ -370,10 +373,10 @@ class InteractiveShellTestCase(unittest.TestCase):
370
373
  parent=None,
371
374
  )
372
375
  self.assertEqual(lfind, info)
373
-
376
+
374
377
  def test_ofind_cell_magic(self):
375
378
  from IPython.core.magic import register_cell_magic
376
-
379
+
377
380
  @register_cell_magic
378
381
  def cmagic(line, cell):
379
382
  "A cell magic"
@@ -490,7 +493,7 @@ class InteractiveShellTestCase(unittest.TestCase):
490
493
  def my_handler(shell, etype, value, tb, tb_offset=None):
491
494
  called.append(etype)
492
495
  shell.showtraceback((etype, value, tb), tb_offset=tb_offset)
493
-
496
+
494
497
  ip.set_custom_exc((ValueError,), my_handler)
495
498
  try:
496
499
  res = ip.run_cell("raise ValueError('test')")
@@ -501,7 +504,7 @@ class InteractiveShellTestCase(unittest.TestCase):
501
504
  finally:
502
505
  # Reset the custom exception hook
503
506
  ip.set_custom_exc((), None)
504
-
507
+
505
508
  @mock.patch("builtins.print")
506
509
  def test_showtraceback_with_surrogates(self, mocked_print):
507
510
  values = []
@@ -618,7 +621,7 @@ class ExitCodeChecks(tt.TempFileMixin):
618
621
  def test_exit_code_error(self):
619
622
  self.system('exit 1')
620
623
  self.assertEqual(ip.user_ns['_exit_code'], 1)
621
-
624
+
622
625
  @skipif(not hasattr(signal, 'SIGALRM'))
623
626
  def test_exit_code_signal(self):
624
627
  self.mktmp("import signal, time\n"
@@ -626,7 +629,7 @@ class ExitCodeChecks(tt.TempFileMixin):
626
629
  "time.sleep(1)\n")
627
630
  self.system("%s %s" % (sys.executable, self.fname))
628
631
  self.assertEqual(ip.user_ns['_exit_code'], -signal.SIGALRM)
629
-
632
+
630
633
  @onlyif_cmds_exist("csh")
631
634
  def test_exit_code_signal_csh(self): # pragma: no cover
632
635
  SHELL = os.environ.get("SHELL", None)
@@ -730,7 +733,7 @@ class TestAstTransform(unittest.TestCase):
730
733
  def setUp(self):
731
734
  self.negator = Negator()
732
735
  ip.ast_transformers.append(self.negator)
733
-
736
+
734
737
  def tearDown(self):
735
738
  ip.ast_transformers.remove(self.negator)
736
739
 
@@ -752,7 +755,7 @@ class TestAstTransform(unittest.TestCase):
752
755
  def f(x):
753
756
  called.add(x)
754
757
  ip.push({'f':f})
755
-
758
+
756
759
  with tt.AssertPrints("std. dev. of"):
757
760
  ip.run_line_magic("timeit", "-n1 f(1)")
758
761
  self.assertEqual(called, {-1})
@@ -761,29 +764,29 @@ class TestAstTransform(unittest.TestCase):
761
764
  with tt.AssertPrints("std. dev. of"):
762
765
  ip.run_cell_magic("timeit", "-n1 f(2)", "f(3)")
763
766
  self.assertEqual(called, {-2, -3})
764
-
767
+
765
768
  def test_time(self):
766
769
  called = []
767
770
  def f(x):
768
771
  called.append(x)
769
772
  ip.push({'f':f})
770
-
773
+
771
774
  # Test with an expression
772
775
  with tt.AssertPrints("Wall time: "):
773
776
  ip.run_line_magic("time", "f(5+9)")
774
777
  self.assertEqual(called, [-14])
775
778
  called[:] = []
776
-
779
+
777
780
  # Test with a statement (different code path)
778
781
  with tt.AssertPrints("Wall time: "):
779
782
  ip.run_line_magic("time", "a = f(-3 + -2)")
780
783
  self.assertEqual(called, [5])
781
-
784
+
782
785
  def test_macro(self):
783
786
  ip.push({'a':10})
784
787
  # The AST transformation makes this do a+=-1
785
788
  ip.define_macro("amacro", "a+=1\nprint(a)")
786
-
789
+
787
790
  with tt.AssertPrints("9"):
788
791
  ip.run_cell("amacro")
789
792
  with tt.AssertPrints("8"):
@@ -836,21 +839,21 @@ class TestAstTransform2(unittest.TestCase):
836
839
  def setUp(self):
837
840
  self.intwrapper = IntegerWrapper()
838
841
  ip.ast_transformers.append(self.intwrapper)
839
-
842
+
840
843
  self.calls = []
841
844
  def Integer(*args):
842
845
  self.calls.append(args)
843
846
  return args
844
847
  ip.push({"Integer": Integer})
845
-
848
+
846
849
  def tearDown(self):
847
850
  ip.ast_transformers.remove(self.intwrapper)
848
851
  del ip.user_ns['Integer']
849
-
852
+
850
853
  def test_run_cell(self):
851
854
  ip.run_cell("n = 2")
852
855
  self.assertEqual(self.calls, [(2,)])
853
-
856
+
854
857
  # This shouldn't throw an error
855
858
  ip.run_cell("o = 2.0")
856
859
  self.assertEqual(ip.user_ns['o'], 2.0)
@@ -887,10 +890,10 @@ class TestAstTransformError(unittest.TestCase):
887
890
  def test_unregistering(self):
888
891
  err_transformer = ErrorTransformer()
889
892
  ip.ast_transformers.append(err_transformer)
890
-
893
+
891
894
  with self.assertWarnsRegex(UserWarning, "It will be unregistered"):
892
895
  ip.run_cell("1 + 2")
893
-
896
+
894
897
  # This should have been removed.
895
898
  self.assertNotIn(err_transformer, ip.ast_transformers)
896
899
 
@@ -901,7 +904,7 @@ class StringRejector(ast.NodeTransformer):
901
904
  Used to verify that NodeTransformers can signal that a piece of code should
902
905
  not be executed by throwing an InputRejected.
903
906
  """
904
-
907
+
905
908
  def visit_Constant(self, node):
906
909
  if isinstance(node.value, str):
907
910
  raise InputRejected("test")
@@ -941,18 +944,18 @@ def test__IPYTHON__():
941
944
  class DummyRepr(object):
942
945
  def __repr__(self):
943
946
  return "DummyRepr"
944
-
947
+
945
948
  def _repr_html_(self):
946
949
  return "<b>dummy</b>"
947
-
950
+
948
951
  def _repr_javascript_(self):
949
952
  return "console.log('hi');", {'key': 'value'}
950
-
953
+
951
954
 
952
955
  def test_user_variables():
953
956
  # enable all formatters
954
957
  ip.display_formatter.active_types = ip.display_formatter.format_types
955
-
958
+
956
959
  ip.user_ns['dummy'] = d = DummyRepr()
957
960
  keys = {'dummy', 'doesnotexist'}
958
961
  r = ip.user_expressions({ key:key for key in keys})
@@ -974,7 +977,7 @@ def test_user_variables():
974
977
 
975
978
  # back to text only
976
979
  ip.display_formatter.active_types = ['text/plain']
977
-
980
+
978
981
  def test_user_expression():
979
982
  # enable all formatters
980
983
  ip.display_formatter.active_types = ip.display_formatter.format_types
@@ -1199,3 +1202,20 @@ class TestShowTracebackAttack(unittest.TestCase):
1199
1202
  assert result.result is None
1200
1203
  assert isinstance(result.error_in_exec, AssertionError)
1201
1204
  assert str(result.error_in_exec) == "This should not raise an exception"
1205
+
1206
+
1207
+ @skip_if_not_osx
1208
+ def test_enable_gui_osx():
1209
+ simple_prompt = ip.simple_prompt
1210
+ ip.simple_prompt = False
1211
+
1212
+ ip.enable_gui("osx")
1213
+ assert ip.active_eventloop == "osx"
1214
+ ip.enable_gui()
1215
+
1216
+ # The following line fails for IPython <= 8.25.0
1217
+ ip.enable_gui("macosx")
1218
+ assert ip.active_eventloop == "osx"
1219
+ ip.enable_gui()
1220
+
1221
+ ip.simple_prompt = simple_prompt
@@ -488,7 +488,12 @@ def test_pinfo_docstring_if_detail_and_no_source():
488
488
  ip._inspect('pinfo', 'foo.bar', detail_level=1)
489
489
 
490
490
 
491
- def test_pinfo_docstring_dynamic():
491
+ @pytest.mark.xfail(
492
+ sys.version_info.releaselevel not in ("final", "candidate"),
493
+ reason="fails on 3.13.dev",
494
+ strict=True,
495
+ )
496
+ def test_pinfo_docstring_dynamic(capsys):
492
497
  obj_def = """class Bar:
493
498
  __custom_documentations__ = {
494
499
  "prop" : "cdoc for prop",
@@ -509,20 +514,25 @@ def test_pinfo_docstring_dynamic():
509
514
 
510
515
  ip.run_cell("b = Bar()")
511
516
 
512
- with AssertPrints("Docstring: cdoc for prop"):
513
- ip.run_line_magic("pinfo", "b.prop")
517
+ ip.run_line_magic("pinfo", "b.prop")
518
+ captured = capsys.readouterr()
519
+ assert "Docstring: cdoc for prop" in captured.out
514
520
 
515
- with AssertPrints("Docstring: cdoc for non_exist"):
516
- ip.run_line_magic("pinfo", "b.non_exist")
521
+ ip.run_line_magic("pinfo", "b.non_exist")
522
+ captured = capsys.readouterr()
523
+ assert "Docstring: cdoc for non_exist" in captured.out
517
524
 
518
- with AssertPrints("Docstring: cdoc for prop"):
519
- ip.run_cell("b.prop?")
525
+ ip.run_cell("b.prop?")
526
+ captured = capsys.readouterr()
527
+ assert "Docstring: cdoc for prop" in captured.out
520
528
 
521
- with AssertPrints("Docstring: cdoc for non_exist"):
522
- ip.run_cell("b.non_exist?")
529
+ ip.run_cell("b.non_exist?")
530
+ captured = capsys.readouterr()
531
+ assert "Docstring: cdoc for non_exist" in captured.out
523
532
 
524
- with AssertPrints("Docstring: <no docstring>"):
525
- ip.run_cell("b.undefined?")
533
+ ip.run_cell("b.undefined?")
534
+ captured = capsys.readouterr()
535
+ assert "Docstring: <no docstring>" in captured.out
526
536
 
527
537
 
528
538
  def test_pinfo_magic():
@@ -1,5 +1,6 @@
1
1
  """Tests for autoreload extension.
2
2
  """
3
+
3
4
  # -----------------------------------------------------------------------------
4
5
  # Copyright (c) 2012 IPython Development Team.
5
6
  #