ipython 8.22.2__tar.gz → 8.24.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 (498) hide show
  1. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/debugger.py +38 -48
  2. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/display_functions.py +1 -1
  3. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/excolors.py +20 -3
  4. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/guarded_eval.py +183 -45
  5. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/interactiveshell.py +8 -1
  6. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/basic.py +3 -0
  7. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/execution.py +1 -1
  8. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/pylab.py +10 -6
  9. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/pylabtools.py +106 -21
  10. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/release.py +2 -2
  11. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/shellapp.py +65 -25
  12. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_guarded_eval.py +192 -9
  13. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_pylabtools.py +93 -9
  14. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/embed.py +1 -1
  15. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/interactiveshell.py +11 -5
  16. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_sysinfo.py +1 -1
  17. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/coloransi.py +28 -3
  18. {ipython-8.22.2/ipython.egg-info → ipython-8.24.0}/PKG-INFO +6 -4
  19. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.11.rst +1 -1
  20. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version8.rst +62 -0
  21. {ipython-8.22.2 → ipython-8.24.0/ipython.egg-info}/PKG-INFO +6 -4
  22. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/SOURCES.txt +0 -2
  23. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/requires.txt +8 -5
  24. {ipython-8.22.2 → ipython-8.24.0}/pyproject.toml +6 -3
  25. ipython-8.22.2/docs/source/development/parallel_connections.rst +0 -8
  26. ipython-8.22.2/docs/source/development/parallel_messages.rst +0 -8
  27. {ipython-8.22.2 → ipython-8.24.0}/.flake8 +0 -0
  28. {ipython-8.22.2 → ipython-8.24.0}/.mailmap +0 -0
  29. {ipython-8.22.2 → ipython-8.24.0}/.pre-commit-config.yaml +0 -0
  30. {ipython-8.22.2 → ipython-8.24.0}/COPYING.rst +0 -0
  31. {ipython-8.22.2 → ipython-8.24.0}/IPython/__init__.py +0 -0
  32. {ipython-8.22.2 → ipython-8.24.0}/IPython/__main__.py +0 -0
  33. {ipython-8.22.2 → ipython-8.24.0}/IPython/conftest.py +0 -0
  34. {ipython-8.22.2 → ipython-8.24.0}/IPython/consoleapp.py +0 -0
  35. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/__init__.py +0 -0
  36. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/alias.py +0 -0
  37. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/application.py +0 -0
  38. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/async_helpers.py +0 -0
  39. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/autocall.py +0 -0
  40. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/builtin_trap.py +0 -0
  41. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/compilerop.py +0 -0
  42. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/completer.py +0 -0
  43. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/completerlib.py +0 -0
  44. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/crashhandler.py +0 -0
  45. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/display.py +0 -0
  46. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/display_trap.py +0 -0
  47. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/displayhook.py +0 -0
  48. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/displaypub.py +0 -0
  49. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/error.py +0 -0
  50. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/events.py +0 -0
  51. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/extensions.py +0 -0
  52. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/formatters.py +0 -0
  53. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/getipython.py +0 -0
  54. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/history.py +0 -0
  55. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/historyapp.py +0 -0
  56. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/hooks.py +0 -0
  57. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/inputsplitter.py +0 -0
  58. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/inputtransformer.py +0 -0
  59. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/inputtransformer2.py +0 -0
  60. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/latex_symbols.py +0 -0
  61. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/logger.py +0 -0
  62. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/macro.py +0 -0
  63. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magic.py +0 -0
  64. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magic_arguments.py +0 -0
  65. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/__init__.py +0 -0
  66. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/ast_mod.py +0 -0
  67. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/auto.py +0 -0
  68. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/code.py +0 -0
  69. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/config.py +0 -0
  70. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/display.py +0 -0
  71. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/extension.py +0 -0
  72. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/history.py +0 -0
  73. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/logging.py +0 -0
  74. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/namespace.py +0 -0
  75. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/osm.py +0 -0
  76. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/packaging.py +0 -0
  77. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/magics/script.py +0 -0
  78. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/oinspect.py +0 -0
  79. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/page.py +0 -0
  80. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/payload.py +0 -0
  81. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/payloadpage.py +0 -0
  82. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/prefilter.py +0 -0
  83. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/profile/README_STARTUP +0 -0
  84. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/profileapp.py +0 -0
  85. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/profiledir.py +0 -0
  86. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/prompts.py +0 -0
  87. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/splitinput.py +0 -0
  88. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/2x2.jpg +0 -0
  89. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/2x2.png +0 -0
  90. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/__init__.py +0 -0
  91. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/bad_all.py +0 -0
  92. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  93. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/nonascii.py +0 -0
  94. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/nonascii2.py +0 -0
  95. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/print_argv.py +0 -0
  96. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/refbug.py +0 -0
  97. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/simpleerr.py +0 -0
  98. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/tclass.py +0 -0
  99. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_alias.py +0 -0
  100. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_application.py +0 -0
  101. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_async_helpers.py +0 -0
  102. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_autocall.py +0 -0
  103. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_compilerop.py +0 -0
  104. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_completer.py +0 -0
  105. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_completerlib.py +0 -0
  106. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_debugger.py +0 -0
  107. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_display.py +0 -0
  108. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_displayhook.py +0 -0
  109. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_events.py +0 -0
  110. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  111. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_extension.py +0 -0
  112. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_formatters.py +0 -0
  113. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_handlers.py +0 -0
  114. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_history.py +0 -0
  115. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_hooks.py +0 -0
  116. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_imports.py +0 -0
  117. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  118. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  119. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  120. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  121. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_interactiveshell.py +0 -0
  122. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_iplib.py +0 -0
  123. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_logger.py +0 -0
  124. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_magic.py +0 -0
  125. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  126. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  127. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_oinspect.py +0 -0
  128. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_page.py +0 -0
  129. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_paths.py +0 -0
  130. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_prefilter.py +0 -0
  131. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_profile.py +0 -0
  132. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_prompts.py +0 -0
  133. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_run.py +0 -0
  134. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_shellapp.py +0 -0
  135. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_splitinput.py +0 -0
  136. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/tests/test_ultratb.py +0 -0
  137. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/ultratb.py +0 -0
  138. {ipython-8.22.2 → ipython-8.24.0}/IPython/core/usage.py +0 -0
  139. {ipython-8.22.2 → ipython-8.24.0}/IPython/display.py +0 -0
  140. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/__init__.py +0 -0
  141. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/autoreload.py +0 -0
  142. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/storemagic.py +0 -0
  143. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/tests/__init__.py +0 -0
  144. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  145. {ipython-8.22.2 → ipython-8.24.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  146. {ipython-8.22.2 → ipython-8.24.0}/IPython/external/__init__.py +0 -0
  147. {ipython-8.22.2 → ipython-8.24.0}/IPython/external/qt_for_kernel.py +0 -0
  148. {ipython-8.22.2 → ipython-8.24.0}/IPython/external/qt_loaders.py +0 -0
  149. {ipython-8.22.2 → ipython-8.24.0}/IPython/external/tests/__init__.py +0 -0
  150. {ipython-8.22.2 → ipython-8.24.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  151. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/__init__.py +0 -0
  152. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/backgroundjobs.py +0 -0
  153. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/clipboard.py +0 -0
  154. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/deepreload.py +0 -0
  155. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/demo.py +0 -0
  156. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/display.py +0 -0
  157. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/editorhooks.py +0 -0
  158. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/guisupport.py +0 -0
  159. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/latextools.py +0 -0
  160. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/lexers.py +0 -0
  161. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/pretty.py +0 -0
  162. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/__init__.py +0 -0
  163. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test.wav +0 -0
  164. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  165. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_clipboard.py +0 -0
  166. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_deepreload.py +0 -0
  167. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_display.py +0 -0
  168. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  169. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_imports.py +0 -0
  170. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_latextools.py +0 -0
  171. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_lexers.py +0 -0
  172. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_pretty.py +0 -0
  173. {ipython-8.22.2 → ipython-8.24.0}/IPython/lib/tests/test_pygments.py +0 -0
  174. {ipython-8.22.2 → ipython-8.24.0}/IPython/paths.py +0 -0
  175. {ipython-8.22.2 → ipython-8.24.0}/IPython/py.typed +0 -0
  176. {ipython-8.22.2 → ipython-8.24.0}/IPython/sphinxext/__init__.py +0 -0
  177. {ipython-8.22.2 → ipython-8.24.0}/IPython/sphinxext/custom_doctests.py +0 -0
  178. {ipython-8.22.2 → ipython-8.24.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  179. {ipython-8.22.2 → ipython-8.24.0}/IPython/sphinxext/ipython_directive.py +0 -0
  180. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/__init__.py +0 -0
  181. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/console.py +0 -0
  182. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/debugger.py +0 -0
  183. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/ipapp.py +0 -0
  184. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/magics.py +0 -0
  185. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/prompts.py +0 -0
  186. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  187. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  188. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  189. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  190. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  191. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  192. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  193. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  194. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  195. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  196. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  197. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/ptutils.py +0 -0
  198. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  199. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  200. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  201. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/shortcuts/filters.py +0 -0
  202. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/__init__.py +0 -0
  203. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  204. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_embed.py +0 -0
  205. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_help.py +0 -0
  206. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  207. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  208. {ipython-8.22.2 → ipython-8.24.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  209. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/__init__.py +0 -0
  210. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/decorators.py +0 -0
  211. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/globalipapp.py +0 -0
  212. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/ipunittest.py +0 -0
  213. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/Makefile +0 -0
  214. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/README.txt +0 -0
  215. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/__init__.py +0 -0
  216. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/dtexample.py +0 -0
  217. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  218. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  219. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/setup.py +0 -0
  220. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/simple.py +0 -0
  221. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/simplevars.py +0 -0
  222. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/test_combo.txt +0 -0
  223. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/test_example.txt +0 -0
  224. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  225. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  226. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/plugin/test_refs.py +0 -0
  227. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/skipdoctest.py +0 -0
  228. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/tests/__init__.py +0 -0
  229. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/tests/test_decorators.py +0 -0
  230. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  231. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/tests/test_tools.py +0 -0
  232. {ipython-8.22.2 → ipython-8.24.0}/IPython/testing/tools.py +0 -0
  233. {ipython-8.22.2 → ipython-8.24.0}/IPython/tests/cve.py +0 -0
  234. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/PyColorize.py +0 -0
  235. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/__init__.py +0 -0
  236. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_cli.py +0 -0
  237. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_common.py +0 -0
  238. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_emscripten.py +0 -0
  239. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_posix.py +0 -0
  240. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_win32.py +0 -0
  241. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/_process_win32_controller.py +0 -0
  242. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/capture.py +0 -0
  243. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/colorable.py +0 -0
  244. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/contexts.py +0 -0
  245. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/daemonize.py +0 -0
  246. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/data.py +0 -0
  247. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/decorators.py +0 -0
  248. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/dir2.py +0 -0
  249. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/docs.py +0 -0
  250. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/encoding.py +0 -0
  251. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/eventful.py +0 -0
  252. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/frame.py +0 -0
  253. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/generics.py +0 -0
  254. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/importstring.py +0 -0
  255. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/io.py +0 -0
  256. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/ipstruct.py +0 -0
  257. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/jsonutil.py +0 -0
  258. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/localinterfaces.py +0 -0
  259. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/log.py +0 -0
  260. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/module_paths.py +0 -0
  261. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/openpy.py +0 -0
  262. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/path.py +0 -0
  263. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/process.py +0 -0
  264. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/py3compat.py +0 -0
  265. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/sentinel.py +0 -0
  266. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/shimmodule.py +0 -0
  267. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/signatures.py +0 -0
  268. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/strdispatch.py +0 -0
  269. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/sysinfo.py +0 -0
  270. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/syspathcontext.py +0 -0
  271. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tempdir.py +0 -0
  272. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/terminal.py +0 -0
  273. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/__init__.py +0 -0
  274. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_capture.py +0 -0
  275. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_decorators.py +0 -0
  276. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_deprecated.py +0 -0
  277. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_dir2.py +0 -0
  278. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_imports.py +0 -0
  279. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_importstring.py +0 -0
  280. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_io.py +0 -0
  281. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_module_paths.py +0 -0
  282. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_openpy.py +0 -0
  283. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_path.py +0 -0
  284. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_process.py +0 -0
  285. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  286. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  287. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  288. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_tempdir.py +0 -0
  289. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_text.py +0 -0
  290. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  291. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tests/test_wildcard.py +0 -0
  292. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/text.py +0 -0
  293. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/timing.py +0 -0
  294. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tokenutil.py +0 -0
  295. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/traitlets.py +0 -0
  296. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/tz.py +0 -0
  297. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/ulinecache.py +0 -0
  298. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/version.py +0 -0
  299. {ipython-8.22.2 → ipython-8.24.0}/IPython/utils/wildcard.py +0 -0
  300. {ipython-8.22.2 → ipython-8.24.0}/LICENSE +0 -0
  301. {ipython-8.22.2 → ipython-8.24.0}/MANIFEST.in +0 -0
  302. {ipython-8.22.2 → ipython-8.24.0}/README.rst +0 -0
  303. {ipython-8.22.2 → ipython-8.24.0}/_build_meta.py +0 -0
  304. {ipython-8.22.2 → ipython-8.24.0}/docs/Makefile +0 -0
  305. {ipython-8.22.2 → ipython-8.24.0}/docs/README.rst +0 -0
  306. {ipython-8.22.2 → ipython-8.24.0}/docs/autogen_api.py +0 -0
  307. {ipython-8.22.2 → ipython-8.24.0}/docs/autogen_config.py +0 -0
  308. {ipython-8.22.2 → ipython-8.24.0}/docs/autogen_magics.py +0 -0
  309. {ipython-8.22.2 → ipython-8.24.0}/docs/autogen_shortcuts.py +0 -0
  310. {ipython-8.22.2 → ipython-8.24.0}/docs/make.cmd +0 -0
  311. {ipython-8.22.2 → ipython-8.24.0}/docs/man/ipython.1 +0 -0
  312. {ipython-8.22.2 → ipython-8.24.0}/docs/requirements.txt +0 -0
  313. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/2.0/running-crop.png +0 -0
  314. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/2.0/running.png +0 -0
  315. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/2.0/treeview.png +0 -0
  316. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/2.0/user-interface.png +0 -0
  317. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/2.0/widgets.png +0 -0
  318. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  319. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  320. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  321. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  322. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  323. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  324. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  325. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  326. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  327. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  328. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  329. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/autosuggest.gif +0 -0
  330. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  331. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  332. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  333. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  334. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  335. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  336. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  337. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  338. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  339. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  340. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  341. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  342. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  343. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  344. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  345. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ms_visual_studio.png +0 -0
  346. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/notebook_specgram.png +0 -0
  347. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/ptshell_features.png +0 -0
  348. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/qtconsole.png +0 -0
  349. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  350. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_images/unicode_completion.png +0 -0
  351. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_static/favicon.ico +0 -0
  352. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_static/logo.png +0 -0
  353. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_static/theme_overrides.css +0 -0
  354. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_templates/breadcrumbs.html +0 -0
  355. {ipython-8.22.2 → ipython-8.24.0}/docs/source/_templates/notebook_redirect.html +0 -0
  356. {ipython-8.22.2 → ipython-8.24.0}/docs/source/about/history.rst +0 -0
  357. {ipython-8.22.2 → ipython-8.24.0}/docs/source/about/index.rst +0 -0
  358. {ipython-8.22.2 → ipython-8.24.0}/docs/source/about/license_and_copyright.rst +0 -0
  359. {ipython-8.22.2 → ipython-8.24.0}/docs/source/api/index.rst +0 -0
  360. {ipython-8.22.2 → ipython-8.24.0}/docs/source/conf.py +0 -0
  361. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/callbacks.rst +0 -0
  362. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/custommagics.rst +0 -0
  363. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/details.rst +0 -0
  364. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/eventloops.rst +0 -0
  365. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/extensions/autoreload.rst +0 -0
  366. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/extensions/index.rst +0 -0
  367. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/extensions/storemagic.rst +0 -0
  368. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/index.rst +0 -0
  369. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/inputtransforms.rst +0 -0
  370. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/integrating.rst +0 -0
  371. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/intro.rst +0 -0
  372. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/options/index.rst +0 -0
  373. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  374. {ipython-8.22.2 → ipython-8.24.0}/docs/source/config/shortcuts/index.rst +0 -0
  375. {ipython-8.22.2 → ipython-8.24.0}/docs/source/coredev/index.rst +0 -0
  376. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/config.rst +0 -0
  377. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/execution.rst +0 -0
  378. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  379. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  380. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/figs/other_kernels.png +0 -0
  381. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/figs/other_kernels.svg +0 -0
  382. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/how_ipython_works.rst +0 -0
  383. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/index.rst +0 -0
  384. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/inputhook_app.rst +0 -0
  385. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/kernels.rst +0 -0
  386. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/lexer.rst +0 -0
  387. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/messaging.rst +0 -0
  388. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/pycompat.rst +0 -0
  389. {ipython-8.22.2 → ipython-8.24.0}/docs/source/development/wrapperkernels.rst +0 -0
  390. {ipython-8.22.2 → ipython-8.24.0}/docs/source/index.rst +0 -0
  391. {ipython-8.22.2 → ipython-8.24.0}/docs/source/install/index.rst +0 -0
  392. {ipython-8.22.2 → ipython-8.24.0}/docs/source/install/install.rst +0 -0
  393. {ipython-8.22.2 → ipython-8.24.0}/docs/source/install/kernel_install.rst +0 -0
  394. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/autoawait.rst +0 -0
  395. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/figs/besselj.png +0 -0
  396. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  397. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/figs/jn.html +0 -0
  398. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  399. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/index.rst +0 -0
  400. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/magics.rst +0 -0
  401. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/plotting.rst +0 -0
  402. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  403. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/reference.rst +0 -0
  404. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/shell.rst +0 -0
  405. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/tips.rst +0 -0
  406. {ipython-8.22.2 → ipython-8.24.0}/docs/source/interactive/tutorial.rst +0 -0
  407. {ipython-8.22.2 → ipython-8.24.0}/docs/source/links.txt +0 -0
  408. {ipython-8.22.2 → ipython-8.24.0}/docs/source/overview.rst +0 -0
  409. {ipython-8.22.2 → ipython-8.24.0}/docs/source/parallel/index.rst +0 -0
  410. {ipython-8.22.2 → ipython-8.24.0}/docs/source/sphinxext.rst +0 -0
  411. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/development.rst +0 -0
  412. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  413. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  414. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  415. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  416. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  417. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  418. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  419. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  420. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  421. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  422. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  423. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/index.rst +0 -0
  424. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/pr/README.md +0 -0
  425. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  426. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  427. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.10.rst +0 -0
  428. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.12.rst +0 -0
  429. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.13.rst +0 -0
  430. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.8.rst +0 -0
  431. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version0.9.rst +0 -0
  432. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version1.0.rst +0 -0
  433. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version2.0.rst +0 -0
  434. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version3.rst +0 -0
  435. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  436. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version4.rst +0 -0
  437. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version5.rst +0 -0
  438. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version6.rst +0 -0
  439. {ipython-8.22.2 → ipython-8.24.0}/docs/source/whatsnew/version7.rst +0 -0
  440. {ipython-8.22.2 → ipython-8.24.0}/docs/sphinxext/apigen.py +0 -0
  441. {ipython-8.22.2 → ipython-8.24.0}/docs/sphinxext/configtraits.py +0 -0
  442. {ipython-8.22.2 → ipython-8.24.0}/docs/sphinxext/github.py +0 -0
  443. {ipython-8.22.2 → ipython-8.24.0}/docs/sphinxext/magics.py +0 -0
  444. {ipython-8.22.2 → ipython-8.24.0}/examples/Embedding/Index.ipynb +0 -0
  445. {ipython-8.22.2 → ipython-8.24.0}/examples/Embedding/embed_class_long.py +0 -0
  446. {ipython-8.22.2 → ipython-8.24.0}/examples/Embedding/embed_class_short.py +0 -0
  447. {ipython-8.22.2 → ipython-8.24.0}/examples/Embedding/embed_function.py +0 -0
  448. {ipython-8.22.2 → ipython-8.24.0}/examples/Embedding/start_ipython_config.py +0 -0
  449. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  450. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  451. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  452. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  453. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  454. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  455. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  456. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Index.ipynb +0 -0
  457. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  458. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  459. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  460. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  461. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  462. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  463. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  464. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  465. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  466. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  467. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/data/flare.json +0 -0
  468. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/example-demo.py +0 -0
  469. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  470. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  471. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  472. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  473. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  474. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/ipython.desktop +0 -0
  475. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  476. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  477. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  478. {ipython-8.22.2 → ipython-8.24.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  479. {ipython-8.22.2 → ipython-8.24.0}/examples/Index.ipynb +0 -0
  480. {ipython-8.22.2 → ipython-8.24.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  481. {ipython-8.22.2 → ipython-8.24.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  482. {ipython-8.22.2 → ipython-8.24.0}/examples/images/FrontendKernel.png +0 -0
  483. {ipython-8.22.2 → ipython-8.24.0}/examples/images/animation.m4v +0 -0
  484. {ipython-8.22.2 → ipython-8.24.0}/examples/images/ipython_logo.png +0 -0
  485. {ipython-8.22.2 → ipython-8.24.0}/examples/images/python_logo.svg +0 -0
  486. {ipython-8.22.2 → ipython-8.24.0}/examples/utils/cwd_prompt.py +0 -0
  487. {ipython-8.22.2 → ipython-8.24.0}/examples/utils/list_pyfiles.ipy +0 -0
  488. {ipython-8.22.2 → ipython-8.24.0}/examples/utils/list_subdirs.ipy +0 -0
  489. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/dependency_links.txt +0 -0
  490. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/entry_points.txt +0 -0
  491. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/not-zip-safe +0 -0
  492. {ipython-8.22.2 → ipython-8.24.0}/ipython.egg-info/top_level.txt +0 -0
  493. {ipython-8.22.2 → ipython-8.24.0}/long_description.rst +0 -0
  494. {ipython-8.22.2 → ipython-8.24.0}/scripts/ipython.ico +0 -0
  495. {ipython-8.22.2 → ipython-8.24.0}/scripts/ipython_nb.ico +0 -0
  496. {ipython-8.22.2 → ipython-8.24.0}/setup.cfg +0 -0
  497. {ipython-8.22.2 → ipython-8.24.0}/setup.py +0 -0
  498. {ipython-8.22.2 → ipython-8.24.0}/setupbase.py +0 -0
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  Pdb debugger class.
4
3
 
@@ -101,17 +100,25 @@ All the changes since then are under the same license as IPython.
101
100
  #
102
101
  #*****************************************************************************
103
102
 
103
+ from __future__ import annotations
104
+
104
105
  import inspect
105
106
  import linecache
106
- import sys
107
- import re
108
107
  import os
108
+ import re
109
+ import sys
110
+ from contextlib import contextmanager
111
+ from functools import lru_cache
109
112
 
110
113
  from IPython import get_ipython
111
- from contextlib import contextmanager
112
- from IPython.utils import PyColorize
113
- from IPython.utils import coloransi, py3compat
114
114
  from IPython.core.excolors import exception_colors
115
+ from IPython.utils import PyColorize, coloransi, py3compat
116
+
117
+ from typing import TYPE_CHECKING
118
+
119
+ if TYPE_CHECKING:
120
+ # otherwise circular import
121
+ from IPython.core.interactiveshell import InteractiveShell
115
122
 
116
123
  # skip module docstests
117
124
  __skip_doctest__ = True
@@ -149,16 +156,10 @@ def BdbQuit_excepthook(et, ev, tb, excepthook=None):
149
156
  parameter.
150
157
  """
151
158
  raise ValueError(
152
- "`BdbQuit_excepthook` is deprecated since version 5.1",
159
+ "`BdbQuit_excepthook` is deprecated since version 5.1. It is still arround only because it is still imported by ipdb.",
153
160
  )
154
161
 
155
162
 
156
- def BdbQuit_IPython_excepthook(self, et, ev, tb, tb_offset=None):
157
- raise ValueError(
158
- "`BdbQuit_IPython_excepthook` is deprecated since version 5.1",
159
- DeprecationWarning, stacklevel=2)
160
-
161
-
162
163
  RGX_EXTRA_INDENT = re.compile(r'(?<=\n)\s+')
163
164
 
164
165
 
@@ -191,6 +192,8 @@ class Pdb(OldPdb):
191
192
 
192
193
  """
193
194
 
195
+ shell: InteractiveShell
196
+
194
197
  if CHAIN_EXCEPTIONS:
195
198
  MAX_CHAINED_EXCEPTION_DEPTH = 999
196
199
 
@@ -261,21 +264,6 @@ class Pdb(OldPdb):
261
264
  C = coloransi.TermColors
262
265
  cst = self.color_scheme_table
263
266
 
264
- cst['NoColor'].colors.prompt = C.NoColor
265
- cst['NoColor'].colors.breakpoint_enabled = C.NoColor
266
- cst['NoColor'].colors.breakpoint_disabled = C.NoColor
267
-
268
- cst['Linux'].colors.prompt = C.Green
269
- cst['Linux'].colors.breakpoint_enabled = C.LightRed
270
- cst['Linux'].colors.breakpoint_disabled = C.Red
271
-
272
- cst['LightBG'].colors.prompt = C.Blue
273
- cst['LightBG'].colors.breakpoint_enabled = C.LightRed
274
- cst['LightBG'].colors.breakpoint_disabled = C.Red
275
-
276
- cst['Neutral'].colors.prompt = C.Blue
277
- cst['Neutral'].colors.breakpoint_enabled = C.LightRed
278
- cst['Neutral'].colors.breakpoint_disabled = C.Red
279
267
 
280
268
  # Add a python parser so we can syntax highlight source while
281
269
  # debugging.
@@ -471,24 +459,11 @@ class Pdb(OldPdb):
471
459
 
472
460
  return line
473
461
 
474
- def new_do_frame(self, arg):
475
- OldPdb.do_frame(self, arg)
476
-
477
462
  def new_do_quit(self, arg):
478
-
479
- if hasattr(self, 'old_all_completions'):
480
- self.shell.Completer.all_completions = self.old_all_completions
481
-
482
463
  return OldPdb.do_quit(self, arg)
483
464
 
484
465
  do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
485
466
 
486
- def new_do_restart(self, arg):
487
- """Restart command. In the context of ipython this is exactly the same
488
- thing as 'quit'."""
489
- self.msg("Restart doesn't make sense here. Using 'quit' instead.")
490
- return self.do_quit(arg)
491
-
492
467
  def print_stack_trace(self, context=None):
493
468
  Colors = self.color_scheme_table.active_colors
494
469
  ColorsNormal = Colors.Normal
@@ -941,22 +916,37 @@ class Pdb(OldPdb):
941
916
  Utility to tell us whether we are in a decorator internal and should stop.
942
917
 
943
918
  """
944
-
945
919
  # if we are disabled don't skip
946
920
  if not self._predicates["debuggerskip"]:
947
921
  return False
948
922
 
923
+ return self._cachable_skip(frame)
924
+
925
+ @lru_cache(1024)
926
+ def _cached_one_parent_frame_debuggerskip(self, frame):
927
+ """
928
+ Cache looking up for DEBUGGERSKIP on parent frame.
929
+
930
+ This should speedup walking through deep frame when one of the highest
931
+ one does have a debugger skip.
932
+
933
+ This is likely to introduce fake positive though.
934
+ """
935
+ while getattr(frame, "f_back", None):
936
+ frame = frame.f_back
937
+ if self._get_frame_locals(frame).get(DEBUGGERSKIP):
938
+ return True
939
+ return None
940
+
941
+ @lru_cache(1024)
942
+ def _cachable_skip(self, frame):
949
943
  # if frame is tagged, skip by default.
950
944
  if DEBUGGERSKIP in frame.f_code.co_varnames:
951
945
  return True
952
946
 
953
947
  # if one of the parent frame value set to True skip as well.
954
-
955
- cframe = frame
956
- while getattr(cframe, "f_back", None):
957
- cframe = cframe.f_back
958
- if self._get_frame_locals(cframe).get(DEBUGGERSKIP):
959
- return True
948
+ if self._cached_one_parent_frame_debuggerskip(frame):
949
+ return True
960
950
 
961
951
  return False
962
952
 
@@ -111,7 +111,7 @@ def display(
111
111
  display_id=None,
112
112
  raw=False,
113
113
  clear=False,
114
- **kwargs
114
+ **kwargs,
115
115
  ):
116
116
  """Display a Python object in all frontends.
117
117
 
@@ -34,9 +34,10 @@ def exception_colors():
34
34
  >>> ec.active_scheme_name
35
35
  'NoColor'
36
36
  >>> sorted(ec.active_colors.keys())
37
- ['Normal', 'caret', 'em', 'excName', 'filename', 'filenameEm', 'line',
38
- 'lineno', 'linenoEm', 'name', 'nameEm', 'normalEm', 'topline', 'vName',
39
- 'val', 'valEm']
37
+ ['Normal', 'breakpoint_disabled', 'breakpoint_enabled', 'caret', 'em',
38
+ 'excName', 'filename', 'filenameEm', 'line', 'lineno', 'linenoEm', 'name',
39
+ 'nameEm', 'normalEm', 'prompt', 'topline', 'vName', 'val', 'valEm']
40
+
40
41
  """
41
42
 
42
43
  ex_colors = ColorSchemeTable()
@@ -70,6 +71,10 @@ def exception_colors():
70
71
  "line": C.NoColor,
71
72
  "caret": C.NoColor,
72
73
  "Normal": C.NoColor,
74
+ # debugger
75
+ "prompt": C.NoColor,
76
+ "breakpoint_enabled": C.NoColor,
77
+ "breakpoint_disabled": C.NoColor,
73
78
  },
74
79
  )
75
80
  )
@@ -99,6 +104,10 @@ def exception_colors():
99
104
  "line": C.Yellow,
100
105
  "caret": C.White,
101
106
  "Normal": C.Normal,
107
+ # debugger
108
+ "prompt": C.Green,
109
+ "breakpoint_enabled": C.LightRed,
110
+ "breakpoint_disabled": C.Red,
102
111
  },
103
112
  )
104
113
  )
@@ -132,6 +141,10 @@ def exception_colors():
132
141
  "line": C.Red,
133
142
  "caret": C.Normal,
134
143
  "Normal": C.Normal,
144
+ # debugger
145
+ "prompt": C.Blue,
146
+ "breakpoint_enabled": C.LightRed,
147
+ "breakpoint_disabled": C.Red,
135
148
  },
136
149
  )
137
150
  )
@@ -161,6 +174,10 @@ def exception_colors():
161
174
  "line": C.Red,
162
175
  "caret": C.Normal,
163
176
  "Normal": C.Normal,
177
+ # debugger
178
+ "prompt": C.Blue,
179
+ "breakpoint_enabled": C.LightRed,
180
+ "breakpoint_disabled": C.Red,
164
181
  },
165
182
  )
166
183
  )
@@ -1,16 +1,23 @@
1
- from inspect import signature, Signature
1
+ from inspect import isclass, signature, Signature
2
2
  from typing import (
3
- Any,
3
+ Annotated,
4
+ AnyStr,
4
5
  Callable,
5
6
  Dict,
7
+ Literal,
8
+ NamedTuple,
9
+ NewType,
10
+ Optional,
11
+ Protocol,
6
12
  Set,
7
13
  Sequence,
8
14
  Tuple,
9
- NamedTuple,
10
15
  Type,
11
- Literal,
16
+ TypeGuard,
12
17
  Union,
13
- TYPE_CHECKING,
18
+ get_args,
19
+ get_origin,
20
+ is_typeddict,
14
21
  )
15
22
  import ast
16
23
  import builtins
@@ -21,15 +28,18 @@ from functools import cached_property
21
28
  from dataclasses import dataclass, field
22
29
  from types import MethodDescriptorType, ModuleType
23
30
 
24
- from IPython.utils.docs import GENERATING_DOCUMENTATION
25
31
  from IPython.utils.decorators import undoc
26
32
 
27
33
 
28
- if TYPE_CHECKING or GENERATING_DOCUMENTATION:
29
- from typing_extensions import Protocol
34
+ if sys.version_info < (3, 11):
35
+ from typing_extensions import Self, LiteralString
36
+ else:
37
+ from typing import Self, LiteralString
38
+
39
+ if sys.version_info < (3, 12):
40
+ from typing_extensions import TypeAliasType
30
41
  else:
31
- # do not require on runtime
32
- Protocol = object # requires Python >=3.8
42
+ from typing import TypeAliasType
33
43
 
34
44
 
35
45
  @undoc
@@ -337,6 +347,7 @@ class _IdentitySubscript:
337
347
  IDENTITY_SUBSCRIPT = _IdentitySubscript()
338
348
  SUBSCRIPT_MARKER = "__SUBSCRIPT_SENTINEL__"
339
349
  UNKNOWN_SIGNATURE = Signature()
350
+ NOT_EVALUATED = object()
340
351
 
341
352
 
342
353
  class GuardRejection(Exception):
@@ -417,9 +428,37 @@ UNARY_OP_DUNDERS: Dict[Type[ast.unaryop], Tuple[str, ...]] = {
417
428
  }
418
429
 
419
430
 
420
- class Duck:
431
+ class ImpersonatingDuck:
421
432
  """A dummy class used to create objects of other classes without calling their ``__init__``"""
422
433
 
434
+ # no-op: override __class__ to impersonate
435
+
436
+
437
+ class _Duck:
438
+ """A dummy class used to create objects pretending to have given attributes"""
439
+
440
+ def __init__(self, attributes: Optional[dict] = None, items: Optional[dict] = None):
441
+ self.attributes = attributes or {}
442
+ self.items = items or {}
443
+
444
+ def __getattr__(self, attr: str):
445
+ return self.attributes[attr]
446
+
447
+ def __hasattr__(self, attr: str):
448
+ return attr in self.attributes
449
+
450
+ def __dir__(self):
451
+ return [*dir(super), *self.attributes]
452
+
453
+ def __getitem__(self, key: str):
454
+ return self.items[key]
455
+
456
+ def __hasitem__(self, key: str):
457
+ return self.items[key]
458
+
459
+ def _ipython_key_completions_(self):
460
+ return self.items.keys()
461
+
423
462
 
424
463
  def _find_dunder(node_op, dunders) -> Union[Tuple[str, ...], None]:
425
464
  dunder = None
@@ -557,19 +596,7 @@ def eval_node(node: Union[ast.AST, None], context: EvaluationContext):
557
596
  f" not allowed in {context.evaluation} mode",
558
597
  )
559
598
  if isinstance(node, ast.Name):
560
- if policy.allow_locals_access and node.id in context.locals:
561
- return context.locals[node.id]
562
- if policy.allow_globals_access and node.id in context.globals:
563
- return context.globals[node.id]
564
- if policy.allow_builtins_access and hasattr(builtins, node.id):
565
- # note: do not use __builtins__, it is implementation detail of cPython
566
- return getattr(builtins, node.id)
567
- if not policy.allow_globals_access and not policy.allow_locals_access:
568
- raise GuardRejection(
569
- f"Namespace access not allowed in {context.evaluation} mode"
570
- )
571
- else:
572
- raise NameError(f"{node.id} not found in locals, globals, nor builtins")
599
+ return _eval_node_name(node.id, context)
573
600
  if isinstance(node, ast.Attribute):
574
601
  value = eval_node(node.value, context)
575
602
  if policy.can_get_attr(value, node.attr):
@@ -590,27 +617,19 @@ def eval_node(node: Union[ast.AST, None], context: EvaluationContext):
590
617
  if policy.can_call(func) and not node.keywords:
591
618
  args = [eval_node(arg, context) for arg in node.args]
592
619
  return func(*args)
593
- try:
594
- sig = signature(func)
595
- except ValueError:
596
- sig = UNKNOWN_SIGNATURE
597
- # if annotation was not stringized, or it was stringized
598
- # but resolved by signature call we know the return type
599
- not_empty = sig.return_annotation is not Signature.empty
600
- not_stringized = not isinstance(sig.return_annotation, str)
601
- if not_empty and not_stringized:
602
- duck = Duck()
603
- # if allow-listed builtin is on type annotation, instantiate it
604
- if policy.can_call(sig.return_annotation) and not node.keywords:
605
- args = [eval_node(arg, context) for arg in node.args]
606
- return sig.return_annotation(*args)
607
- try:
608
- # if custom class is in type annotation, mock it;
609
- # this only works for heap types, not builtins
610
- duck.__class__ = sig.return_annotation
611
- return duck
612
- except TypeError:
613
- pass
620
+ if isclass(func):
621
+ # this code path gets entered when calling class e.g. `MyClass()`
622
+ # or `my_instance.__class__()` - in both cases `func` is `MyClass`.
623
+ # Should return `MyClass` if `__new__` is not overridden,
624
+ # otherwise whatever `__new__` return type is.
625
+ overridden_return_type = _eval_return_type(func.__new__, node, context)
626
+ if overridden_return_type is not NOT_EVALUATED:
627
+ return overridden_return_type
628
+ return _create_duck_for_heap_type(func)
629
+ else:
630
+ return_type = _eval_return_type(func, node, context)
631
+ if return_type is not NOT_EVALUATED:
632
+ return return_type
614
633
  raise GuardRejection(
615
634
  "Call for",
616
635
  func, # not joined to avoid calling `repr`
@@ -619,6 +638,125 @@ def eval_node(node: Union[ast.AST, None], context: EvaluationContext):
619
638
  raise ValueError("Unhandled node", ast.dump(node))
620
639
 
621
640
 
641
+ def _eval_return_type(func: Callable, node: ast.Call, context: EvaluationContext):
642
+ """Evaluate return type of a given callable function.
643
+
644
+ Returns the built-in type, a duck or NOT_EVALUATED sentinel.
645
+ """
646
+ try:
647
+ sig = signature(func)
648
+ except ValueError:
649
+ sig = UNKNOWN_SIGNATURE
650
+ # if annotation was not stringized, or it was stringized
651
+ # but resolved by signature call we know the return type
652
+ not_empty = sig.return_annotation is not Signature.empty
653
+ if not_empty:
654
+ return _resolve_annotation(sig.return_annotation, sig, func, node, context)
655
+ return NOT_EVALUATED
656
+
657
+
658
+ def _resolve_annotation(
659
+ annotation,
660
+ sig: Signature,
661
+ func: Callable,
662
+ node: ast.Call,
663
+ context: EvaluationContext,
664
+ ):
665
+ """Resolve annotation created by user with `typing` module and custom objects."""
666
+ annotation = (
667
+ _eval_node_name(annotation, context)
668
+ if isinstance(annotation, str)
669
+ else annotation
670
+ )
671
+ origin = get_origin(annotation)
672
+ if annotation is Self and hasattr(func, "__self__"):
673
+ return func.__self__
674
+ elif origin is Literal:
675
+ type_args = get_args(annotation)
676
+ if len(type_args) == 1:
677
+ return type_args[0]
678
+ elif annotation is LiteralString:
679
+ return ""
680
+ elif annotation is AnyStr:
681
+ index = None
682
+ for i, (key, value) in enumerate(sig.parameters.items()):
683
+ if value.annotation is AnyStr:
684
+ index = i
685
+ break
686
+ if index is not None and index < len(node.args):
687
+ return eval_node(node.args[index], context)
688
+ elif origin is TypeGuard:
689
+ return bool()
690
+ elif origin is Union:
691
+ attributes = [
692
+ attr
693
+ for type_arg in get_args(annotation)
694
+ for attr in dir(_resolve_annotation(type_arg, sig, func, node, context))
695
+ ]
696
+ return _Duck(attributes=dict.fromkeys(attributes))
697
+ elif is_typeddict(annotation):
698
+ return _Duck(
699
+ attributes=dict.fromkeys(dir(dict())),
700
+ items={
701
+ k: _resolve_annotation(v, sig, func, node, context)
702
+ for k, v in annotation.__annotations__.items()
703
+ },
704
+ )
705
+ elif hasattr(annotation, "_is_protocol"):
706
+ return _Duck(attributes=dict.fromkeys(dir(annotation)))
707
+ elif origin is Annotated:
708
+ type_arg = get_args(annotation)[0]
709
+ return _resolve_annotation(type_arg, sig, func, node, context)
710
+ elif isinstance(annotation, NewType):
711
+ return _eval_or_create_duck(annotation.__supertype__, node, context)
712
+ elif isinstance(annotation, TypeAliasType):
713
+ return _eval_or_create_duck(annotation.__value__, node, context)
714
+ else:
715
+ return _eval_or_create_duck(annotation, node, context)
716
+
717
+
718
+ def _eval_node_name(node_id: str, context: EvaluationContext):
719
+ policy = EVALUATION_POLICIES[context.evaluation]
720
+ if policy.allow_locals_access and node_id in context.locals:
721
+ return context.locals[node_id]
722
+ if policy.allow_globals_access and node_id in context.globals:
723
+ return context.globals[node_id]
724
+ if policy.allow_builtins_access and hasattr(builtins, node_id):
725
+ # note: do not use __builtins__, it is implementation detail of cPython
726
+ return getattr(builtins, node_id)
727
+ if not policy.allow_globals_access and not policy.allow_locals_access:
728
+ raise GuardRejection(
729
+ f"Namespace access not allowed in {context.evaluation} mode"
730
+ )
731
+ else:
732
+ raise NameError(f"{node_id} not found in locals, globals, nor builtins")
733
+
734
+
735
+ def _eval_or_create_duck(duck_type, node: ast.Call, context: EvaluationContext):
736
+ policy = EVALUATION_POLICIES[context.evaluation]
737
+ # if allow-listed builtin is on type annotation, instantiate it
738
+ if policy.can_call(duck_type) and not node.keywords:
739
+ args = [eval_node(arg, context) for arg in node.args]
740
+ return duck_type(*args)
741
+ # if custom class is in type annotation, mock it
742
+ return _create_duck_for_heap_type(duck_type)
743
+
744
+
745
+ def _create_duck_for_heap_type(duck_type):
746
+ """Create an imitation of an object of a given type (a duck).
747
+
748
+ Returns the duck or NOT_EVALUATED sentinel if duck could not be created.
749
+ """
750
+ duck = ImpersonatingDuck()
751
+ try:
752
+ # this only works for heap types, not builtins
753
+ duck.__class__ = duck_type
754
+ return duck
755
+ except TypeError:
756
+ pass
757
+ return NOT_EVALUATED
758
+
759
+
622
760
  SUPPORTED_EXTERNAL_GETITEM = {
623
761
  ("pandas", "core", "indexing", "_iLocIndexer"),
624
762
  ("pandas", "core", "indexing", "_LocIndexer"),
@@ -3654,10 +3654,17 @@ class InteractiveShell(SingletonConfigurable):
3654
3654
  make sense in all contexts, for example a terminal ipython can't
3655
3655
  display figures inline.
3656
3656
  """
3657
+ from .pylabtools import _matplotlib_manages_backends
3658
+
3659
+ if not _matplotlib_manages_backends() and gui in (None, "auto"):
3660
+ # Early import of backend_inline required for its side effect of
3661
+ # calling _enable_matplotlib_integration()
3662
+ import matplotlib_inline.backend_inline
3663
+
3657
3664
  from IPython.core import pylabtools as pt
3658
3665
  gui, backend = pt.find_gui_and_backend(gui, self.pylab_gui_select)
3659
3666
 
3660
- if gui != 'inline':
3667
+ if gui != None:
3661
3668
  # If we have our first gui selection, store it
3662
3669
  if self.pylab_gui_select is None:
3663
3670
  self.pylab_gui_select = gui
@@ -40,6 +40,9 @@ class MagicsDisplay(object):
40
40
  def _repr_pretty_(self, p, cycle):
41
41
  p.text(self._lsmagic())
42
42
 
43
+ def __repr__(self):
44
+ return self.__str__()
45
+
43
46
  def __str__(self):
44
47
  return self._lsmagic()
45
48
 
@@ -1506,7 +1506,7 @@ class ExecutionMagics(Magics):
1506
1506
  @line_cell_magic
1507
1507
  def code_wrap(self, line, cell=None):
1508
1508
  """
1509
- Simple magic to quickly define a code transformer for all IPython's future imput.
1509
+ Simple magic to quickly define a code transformer for all IPython's future input.
1510
1510
 
1511
1511
  ``__code__`` and ``__ret__`` are special variable that represent the code to run
1512
1512
  and the value of the last expression of ``__code__`` respectively.
@@ -18,19 +18,19 @@ from IPython.core import magic_arguments
18
18
  from IPython.core.magic import Magics, magics_class, line_magic
19
19
  from IPython.testing.skipdoctest import skip_doctest
20
20
  from warnings import warn
21
- from IPython.core.pylabtools import backends
22
21
 
23
22
  #-----------------------------------------------------------------------------
24
23
  # Magic implementation classes
25
24
  #-----------------------------------------------------------------------------
26
25
 
27
26
  magic_gui_arg = magic_arguments.argument(
28
- 'gui', nargs='?',
29
- help="""Name of the matplotlib backend to use %s.
27
+ "gui",
28
+ nargs="?",
29
+ help="""Name of the matplotlib backend to use such as 'qt' or 'widget'.
30
30
  If given, the corresponding matplotlib backend is used,
31
31
  otherwise it will be matplotlib's default
32
32
  (which you can set in your matplotlib config file).
33
- """ % str(tuple(sorted(backends.keys())))
33
+ """,
34
34
  )
35
35
 
36
36
 
@@ -93,8 +93,12 @@ class PylabMagics(Magics):
93
93
  """
94
94
  args = magic_arguments.parse_argstring(self.matplotlib, line)
95
95
  if args.list:
96
- backends_list = list(backends.keys())
97
- print("Available matplotlib backends: %s" % backends_list)
96
+ from IPython.core.pylabtools import _list_matplotlib_backends_and_gui_loops
97
+
98
+ print(
99
+ "Available matplotlib backends: %s"
100
+ % _list_matplotlib_backends_and_gui_loops()
101
+ )
98
102
  else:
99
103
  gui, backend = self.shell.enable_matplotlib(args.gui.lower() if isinstance(args.gui, str) else args.gui)
100
104
  self._show_matplotlib_backend(args.gui, backend)