ipython 8.27.0__tar.gz → 8.28.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.27.0 → ipython-8.28.0}/IPython/core/debugger.py +27 -4
  2. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display.py +5 -1
  3. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/packaging.py +15 -2
  4. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/release.py +1 -1
  5. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/ultratb.py +4 -4
  6. {ipython-8.27.0 → ipython-8.28.0}/IPython/external/qt_loaders.py +14 -2
  7. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_sysinfo.py +1 -1
  8. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/terminal.py +7 -1
  9. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_path.py +85 -88
  10. {ipython-8.27.0/ipython.egg-info → ipython-8.28.0}/PKG-INFO +1 -1
  11. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version8.rst +56 -8
  12. {ipython-8.27.0 → ipython-8.28.0/ipython.egg-info}/PKG-INFO +1 -1
  13. {ipython-8.27.0 → ipython-8.28.0}/.flake8 +0 -0
  14. {ipython-8.27.0 → ipython-8.28.0}/.mailmap +0 -0
  15. {ipython-8.27.0 → ipython-8.28.0}/.pre-commit-config.yaml +0 -0
  16. {ipython-8.27.0 → ipython-8.28.0}/COPYING.rst +0 -0
  17. {ipython-8.27.0 → ipython-8.28.0}/IPython/__init__.py +0 -0
  18. {ipython-8.27.0 → ipython-8.28.0}/IPython/__main__.py +0 -0
  19. {ipython-8.27.0 → ipython-8.28.0}/IPython/conftest.py +0 -0
  20. {ipython-8.27.0 → ipython-8.28.0}/IPython/consoleapp.py +0 -0
  21. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/__init__.py +0 -0
  22. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/alias.py +0 -0
  23. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/application.py +0 -0
  24. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/async_helpers.py +0 -0
  25. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/autocall.py +0 -0
  26. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/builtin_trap.py +0 -0
  27. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/compilerop.py +0 -0
  28. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/completer.py +0 -0
  29. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/completerlib.py +0 -0
  30. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/crashhandler.py +0 -0
  31. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display_functions.py +0 -0
  32. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/display_trap.py +0 -0
  33. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/displayhook.py +0 -0
  34. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/displaypub.py +0 -0
  35. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/error.py +0 -0
  36. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/events.py +0 -0
  37. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/excolors.py +0 -0
  38. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/extensions.py +0 -0
  39. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/formatters.py +0 -0
  40. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/getipython.py +0 -0
  41. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/guarded_eval.py +0 -0
  42. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/history.py +0 -0
  43. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/historyapp.py +0 -0
  44. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/hooks.py +0 -0
  45. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputsplitter.py +0 -0
  46. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputtransformer.py +0 -0
  47. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/inputtransformer2.py +0 -0
  48. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/interactiveshell.py +0 -0
  49. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/latex_symbols.py +0 -0
  50. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/logger.py +0 -0
  51. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/macro.py +0 -0
  52. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magic.py +0 -0
  53. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magic_arguments.py +0 -0
  54. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/__init__.py +0 -0
  55. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/ast_mod.py +0 -0
  56. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/auto.py +0 -0
  57. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/basic.py +0 -0
  58. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/code.py +0 -0
  59. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/config.py +0 -0
  60. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/display.py +0 -0
  61. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/execution.py +0 -0
  62. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/extension.py +0 -0
  63. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/history.py +0 -0
  64. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/logging.py +0 -0
  65. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/namespace.py +0 -0
  66. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/osm.py +0 -0
  67. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/pylab.py +0 -0
  68. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/magics/script.py +0 -0
  69. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/oinspect.py +0 -0
  70. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/page.py +0 -0
  71. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/payload.py +0 -0
  72. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/payloadpage.py +0 -0
  73. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/prefilter.py +0 -0
  74. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profile/README_STARTUP +0 -0
  75. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profileapp.py +0 -0
  76. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/profiledir.py +0 -0
  77. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/prompts.py +0 -0
  78. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/pylabtools.py +0 -0
  79. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/shellapp.py +0 -0
  80. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/splitinput.py +0 -0
  81. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/2x2.jpg +0 -0
  82. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/2x2.png +0 -0
  83. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/__init__.py +0 -0
  84. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/bad_all.py +0 -0
  85. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  86. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/nonascii.py +0 -0
  87. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/nonascii2.py +0 -0
  88. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/print_argv.py +0 -0
  89. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/refbug.py +0 -0
  90. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/simpleerr.py +0 -0
  91. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/tclass.py +0 -0
  92. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_alias.py +0 -0
  93. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_application.py +0 -0
  94. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_async_helpers.py +0 -0
  95. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_autocall.py +0 -0
  96. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_compilerop.py +0 -0
  97. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_completer.py +0 -0
  98. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_completerlib.py +0 -0
  99. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_debugger.py +0 -0
  100. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_display.py +0 -0
  101. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_displayhook.py +0 -0
  102. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_events.py +0 -0
  103. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  104. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_extension.py +0 -0
  105. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_formatters.py +0 -0
  106. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  107. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_handlers.py +0 -0
  108. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_history.py +0 -0
  109. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_hooks.py +0 -0
  110. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_imports.py +0 -0
  111. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  112. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  113. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  114. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  115. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_interactiveshell.py +0 -0
  116. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_iplib.py +0 -0
  117. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_logger.py +0 -0
  118. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic.py +0 -0
  119. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  120. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  121. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_oinspect.py +0 -0
  122. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_page.py +0 -0
  123. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_paths.py +0 -0
  124. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_prefilter.py +0 -0
  125. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_profile.py +0 -0
  126. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_prompts.py +0 -0
  127. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_pylabtools.py +0 -0
  128. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_run.py +0 -0
  129. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_shellapp.py +0 -0
  130. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_splitinput.py +0 -0
  131. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/tests/test_ultratb.py +0 -0
  132. {ipython-8.27.0 → ipython-8.28.0}/IPython/core/usage.py +0 -0
  133. {ipython-8.27.0 → ipython-8.28.0}/IPython/display.py +0 -0
  134. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/__init__.py +0 -0
  135. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/autoreload.py +0 -0
  136. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/storemagic.py +0 -0
  137. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/__init__.py +0 -0
  138. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  139. {ipython-8.27.0 → ipython-8.28.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  140. {ipython-8.27.0 → ipython-8.28.0}/IPython/external/__init__.py +0 -0
  141. {ipython-8.27.0 → ipython-8.28.0}/IPython/external/qt_for_kernel.py +0 -0
  142. {ipython-8.27.0 → ipython-8.28.0}/IPython/external/tests/__init__.py +0 -0
  143. {ipython-8.27.0 → ipython-8.28.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  144. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/__init__.py +0 -0
  145. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/backgroundjobs.py +0 -0
  146. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/clipboard.py +0 -0
  147. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/deepreload.py +0 -0
  148. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/demo.py +0 -0
  149. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/display.py +0 -0
  150. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/editorhooks.py +0 -0
  151. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/guisupport.py +0 -0
  152. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/latextools.py +0 -0
  153. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/lexers.py +0 -0
  154. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/pretty.py +0 -0
  155. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/__init__.py +0 -0
  156. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test.wav +0 -0
  157. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  158. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_clipboard.py +0 -0
  159. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_deepreload.py +0 -0
  160. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_display.py +0 -0
  161. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  162. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_imports.py +0 -0
  163. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_latextools.py +0 -0
  164. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_lexers.py +0 -0
  165. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_pretty.py +0 -0
  166. {ipython-8.27.0 → ipython-8.28.0}/IPython/lib/tests/test_pygments.py +0 -0
  167. {ipython-8.27.0 → ipython-8.28.0}/IPython/paths.py +0 -0
  168. {ipython-8.27.0 → ipython-8.28.0}/IPython/py.typed +0 -0
  169. {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/__init__.py +0 -0
  170. {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/custom_doctests.py +0 -0
  171. {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  172. {ipython-8.27.0 → ipython-8.28.0}/IPython/sphinxext/ipython_directive.py +0 -0
  173. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/__init__.py +0 -0
  174. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/console.py +0 -0
  175. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/debugger.py +0 -0
  176. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/embed.py +0 -0
  177. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/interactiveshell.py +0 -0
  178. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/ipapp.py +0 -0
  179. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/magics.py +0 -0
  180. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/prompts.py +0 -0
  181. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  182. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  183. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  184. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  185. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  186. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  187. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  188. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  189. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  190. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  191. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  192. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/ptutils.py +0 -0
  193. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  194. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  195. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  196. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/shortcuts/filters.py +0 -0
  197. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/__init__.py +0 -0
  198. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  199. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_embed.py +0 -0
  200. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_help.py +0 -0
  201. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  202. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  203. {ipython-8.27.0 → ipython-8.28.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  204. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/__init__.py +0 -0
  205. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/decorators.py +0 -0
  206. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/globalipapp.py +0 -0
  207. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/ipunittest.py +0 -0
  208. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/Makefile +0 -0
  209. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/README.txt +0 -0
  210. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/__init__.py +0 -0
  211. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/dtexample.py +0 -0
  212. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  213. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  214. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/setup.py +0 -0
  215. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/simple.py +0 -0
  216. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/simplevars.py +0 -0
  217. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_combo.txt +0 -0
  218. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_example.txt +0 -0
  219. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  220. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  221. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/plugin/test_refs.py +0 -0
  222. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/skipdoctest.py +0 -0
  223. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/__init__.py +0 -0
  224. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_decorators.py +0 -0
  225. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  226. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tests/test_tools.py +0 -0
  227. {ipython-8.27.0 → ipython-8.28.0}/IPython/testing/tools.py +0 -0
  228. {ipython-8.27.0 → ipython-8.28.0}/IPython/tests/cve.py +0 -0
  229. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/PyColorize.py +0 -0
  230. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/__init__.py +0 -0
  231. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_cli.py +0 -0
  232. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_common.py +0 -0
  233. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_emscripten.py +0 -0
  234. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_posix.py +0 -0
  235. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_win32.py +0 -0
  236. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/_process_win32_controller.py +0 -0
  237. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/capture.py +0 -0
  238. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/colorable.py +0 -0
  239. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/coloransi.py +0 -0
  240. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/contexts.py +0 -0
  241. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/daemonize.py +0 -0
  242. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/data.py +0 -0
  243. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/decorators.py +0 -0
  244. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/dir2.py +0 -0
  245. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/docs.py +0 -0
  246. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/encoding.py +0 -0
  247. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/eventful.py +0 -0
  248. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/frame.py +0 -0
  249. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/generics.py +0 -0
  250. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/importstring.py +0 -0
  251. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/io.py +0 -0
  252. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/ipstruct.py +0 -0
  253. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/jsonutil.py +0 -0
  254. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/localinterfaces.py +0 -0
  255. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/log.py +0 -0
  256. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/module_paths.py +0 -0
  257. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/openpy.py +0 -0
  258. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/path.py +0 -0
  259. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/process.py +0 -0
  260. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/py3compat.py +0 -0
  261. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/sentinel.py +0 -0
  262. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/shimmodule.py +0 -0
  263. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/signatures.py +0 -0
  264. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/strdispatch.py +0 -0
  265. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/sysinfo.py +0 -0
  266. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/syspathcontext.py +0 -0
  267. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tempdir.py +0 -0
  268. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/__init__.py +0 -0
  269. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_capture.py +0 -0
  270. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_decorators.py +0 -0
  271. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_deprecated.py +0 -0
  272. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_dir2.py +0 -0
  273. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_imports.py +0 -0
  274. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_importstring.py +0 -0
  275. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_io.py +0 -0
  276. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_module_paths.py +0 -0
  277. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_openpy.py +0 -0
  278. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_process.py +0 -0
  279. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  280. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  281. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  282. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_tempdir.py +0 -0
  283. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_text.py +0 -0
  284. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  285. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tests/test_wildcard.py +0 -0
  286. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/text.py +0 -0
  287. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/timing.py +0 -0
  288. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tokenutil.py +0 -0
  289. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/traitlets.py +0 -0
  290. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/tz.py +0 -0
  291. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/ulinecache.py +0 -0
  292. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/version.py +0 -0
  293. {ipython-8.27.0 → ipython-8.28.0}/IPython/utils/wildcard.py +0 -0
  294. {ipython-8.27.0 → ipython-8.28.0}/LICENSE +0 -0
  295. {ipython-8.27.0 → ipython-8.28.0}/MANIFEST.in +0 -0
  296. {ipython-8.27.0 → ipython-8.28.0}/README.rst +0 -0
  297. {ipython-8.27.0 → ipython-8.28.0}/_build_meta.py +0 -0
  298. {ipython-8.27.0 → ipython-8.28.0}/docs/Makefile +0 -0
  299. {ipython-8.27.0 → ipython-8.28.0}/docs/README.rst +0 -0
  300. {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_api.py +0 -0
  301. {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_config.py +0 -0
  302. {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_magics.py +0 -0
  303. {ipython-8.27.0 → ipython-8.28.0}/docs/autogen_shortcuts.py +0 -0
  304. {ipython-8.27.0 → ipython-8.28.0}/docs/make.cmd +0 -0
  305. {ipython-8.27.0 → ipython-8.28.0}/docs/man/ipython.1 +0 -0
  306. {ipython-8.27.0 → ipython-8.28.0}/docs/requirements.txt +0 -0
  307. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/running-crop.png +0 -0
  308. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/running.png +0 -0
  309. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/treeview.png +0 -0
  310. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/user-interface.png +0 -0
  311. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/2.0/widgets.png +0 -0
  312. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  313. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  314. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  315. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  316. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  317. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  318. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  319. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  320. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  321. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  322. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  323. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/autosuggest.gif +0 -0
  324. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  325. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  326. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  327. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  328. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  329. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  330. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  331. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  332. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  333. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  334. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  335. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  336. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  337. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  338. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  339. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ms_visual_studio.png +0 -0
  340. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/notebook_specgram.png +0 -0
  341. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/ptshell_features.png +0 -0
  342. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/qtconsole.png +0 -0
  343. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  344. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_images/unicode_completion.png +0 -0
  345. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/favicon.ico +0 -0
  346. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/logo.png +0 -0
  347. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_static/theme_overrides.css +0 -0
  348. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_templates/breadcrumbs.html +0 -0
  349. {ipython-8.27.0 → ipython-8.28.0}/docs/source/_templates/notebook_redirect.html +0 -0
  350. {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/history.rst +0 -0
  351. {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/index.rst +0 -0
  352. {ipython-8.27.0 → ipython-8.28.0}/docs/source/about/license_and_copyright.rst +0 -0
  353. {ipython-8.27.0 → ipython-8.28.0}/docs/source/api/index.rst +0 -0
  354. {ipython-8.27.0 → ipython-8.28.0}/docs/source/conf.py +0 -0
  355. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/callbacks.rst +0 -0
  356. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/custommagics.rst +0 -0
  357. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/details.rst +0 -0
  358. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/eventloops.rst +0 -0
  359. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/autoreload.rst +0 -0
  360. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/index.rst +0 -0
  361. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/extensions/storemagic.rst +0 -0
  362. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/index.rst +0 -0
  363. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/inputtransforms.rst +0 -0
  364. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/integrating.rst +0 -0
  365. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/intro.rst +0 -0
  366. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/options/index.rst +0 -0
  367. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  368. {ipython-8.27.0 → ipython-8.28.0}/docs/source/config/shortcuts/index.rst +0 -0
  369. {ipython-8.27.0 → ipython-8.28.0}/docs/source/coredev/index.rst +0 -0
  370. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/config.rst +0 -0
  371. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/execution.rst +0 -0
  372. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  373. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  374. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/other_kernels.png +0 -0
  375. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/figs/other_kernels.svg +0 -0
  376. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/how_ipython_works.rst +0 -0
  377. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/index.rst +0 -0
  378. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/inputhook_app.rst +0 -0
  379. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/kernels.rst +0 -0
  380. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/lexer.rst +0 -0
  381. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/messaging.rst +0 -0
  382. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/pycompat.rst +0 -0
  383. {ipython-8.27.0 → ipython-8.28.0}/docs/source/development/wrapperkernels.rst +0 -0
  384. {ipython-8.27.0 → ipython-8.28.0}/docs/source/index.rst +0 -0
  385. {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/index.rst +0 -0
  386. {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/install.rst +0 -0
  387. {ipython-8.27.0 → ipython-8.28.0}/docs/source/install/kernel_install.rst +0 -0
  388. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/autoawait.rst +0 -0
  389. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/besselj.png +0 -0
  390. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  391. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/jn.html +0 -0
  392. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  393. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/index.rst +0 -0
  394. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/magics.rst +0 -0
  395. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/plotting.rst +0 -0
  396. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  397. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/reference.rst +0 -0
  398. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/shell.rst +0 -0
  399. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/tips.rst +0 -0
  400. {ipython-8.27.0 → ipython-8.28.0}/docs/source/interactive/tutorial.rst +0 -0
  401. {ipython-8.27.0 → ipython-8.28.0}/docs/source/links.txt +0 -0
  402. {ipython-8.27.0 → ipython-8.28.0}/docs/source/overview.rst +0 -0
  403. {ipython-8.27.0 → ipython-8.28.0}/docs/source/parallel/index.rst +0 -0
  404. {ipython-8.27.0 → ipython-8.28.0}/docs/source/sphinx.toml +0 -0
  405. {ipython-8.27.0 → ipython-8.28.0}/docs/source/sphinxext.rst +0 -0
  406. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/development.rst +0 -0
  407. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  408. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  409. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  410. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  411. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  412. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  413. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  414. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  415. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  416. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  417. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  418. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/index.rst +0 -0
  419. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/README.md +0 -0
  420. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  421. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  422. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.10.rst +0 -0
  423. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.11.rst +0 -0
  424. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.12.rst +0 -0
  425. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.13.rst +0 -0
  426. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.8.rst +0 -0
  427. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version0.9.rst +0 -0
  428. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version1.0.rst +0 -0
  429. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version2.0.rst +0 -0
  430. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version3.rst +0 -0
  431. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  432. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version4.rst +0 -0
  433. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version5.rst +0 -0
  434. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version6.rst +0 -0
  435. {ipython-8.27.0 → ipython-8.28.0}/docs/source/whatsnew/version7.rst +0 -0
  436. {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/apigen.py +0 -0
  437. {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/configtraits.py +0 -0
  438. {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/github.py +0 -0
  439. {ipython-8.27.0 → ipython-8.28.0}/docs/sphinxext/magics.py +0 -0
  440. {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/Index.ipynb +0 -0
  441. {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_class_long.py +0 -0
  442. {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_class_short.py +0 -0
  443. {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/embed_function.py +0 -0
  444. {ipython-8.27.0 → ipython-8.28.0}/examples/Embedding/start_ipython_config.py +0 -0
  445. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  446. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  447. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  448. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  449. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  450. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  451. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  452. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Index.ipynb +0 -0
  453. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  454. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  455. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  456. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  457. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  458. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  459. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  460. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  461. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  462. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  463. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/data/flare.json +0 -0
  464. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/example-demo.py +0 -0
  465. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  466. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  467. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  468. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  469. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  470. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/ipython.desktop +0 -0
  471. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  472. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  473. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  474. {ipython-8.27.0 → ipython-8.28.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  475. {ipython-8.27.0 → ipython-8.28.0}/examples/Index.ipynb +0 -0
  476. {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  477. {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  478. {ipython-8.27.0 → ipython-8.28.0}/examples/images/FrontendKernel.png +0 -0
  479. {ipython-8.27.0 → ipython-8.28.0}/examples/images/animation.m4v +0 -0
  480. {ipython-8.27.0 → ipython-8.28.0}/examples/images/ipython_logo.png +0 -0
  481. {ipython-8.27.0 → ipython-8.28.0}/examples/images/python_logo.svg +0 -0
  482. {ipython-8.27.0 → ipython-8.28.0}/examples/utils/cwd_prompt.py +0 -0
  483. {ipython-8.27.0 → ipython-8.28.0}/examples/utils/list_pyfiles.ipy +0 -0
  484. {ipython-8.27.0 → ipython-8.28.0}/examples/utils/list_subdirs.ipy +0 -0
  485. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/SOURCES.txt +0 -0
  486. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/dependency_links.txt +0 -0
  487. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/entry_points.txt +0 -0
  488. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/not-zip-safe +0 -0
  489. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/requires.txt +0 -0
  490. {ipython-8.27.0 → ipython-8.28.0}/ipython.egg-info/top_level.txt +0 -0
  491. {ipython-8.27.0 → ipython-8.28.0}/long_description.rst +0 -0
  492. {ipython-8.27.0 → ipython-8.28.0}/pyproject.toml +0 -0
  493. {ipython-8.27.0 → ipython-8.28.0}/scripts/ipython.ico +0 -0
  494. {ipython-8.27.0 → ipython-8.28.0}/scripts/ipython_nb.ico +0 -0
  495. {ipython-8.27.0 → ipython-8.28.0}/setup.cfg +0 -0
  496. {ipython-8.27.0 → ipython-8.28.0}/setup.py +0 -0
  497. {ipython-8.27.0 → ipython-8.28.0}/setupbase.py +0 -0
@@ -14,14 +14,35 @@ Among other things, this subclass of PDB:
14
14
  - hide frames in tracebacks based on `__tracebackhide__`
15
15
  - allows to skip frames based on `__debuggerskip__`
16
16
 
17
+
18
+ Global Configuration
19
+ --------------------
20
+
21
+ The IPython debugger will by read the global ``~/.pdbrc`` file.
22
+ That is to say you can list all comands supported by ipdb in your `~/.pdbrc`
23
+ configuration file, to globally configure pdb.
24
+
25
+ Example::
26
+
27
+ # ~/.pdbrc
28
+ skip_predicates debuggerskip false
29
+ skip_hidden false
30
+ context 25
31
+
32
+ Features
33
+ --------
34
+
35
+ The IPython debugger can hide and skip frames when printing or moving through
36
+ the stack. This can have a performance impact, so can be configures.
37
+
17
38
  The skipping and hiding frames are configurable via the `skip_predicates`
18
39
  command.
19
40
 
20
41
  By default, frames from readonly files will be hidden, frames containing
21
- ``__tracebackhide__=True`` will be hidden.
42
+ ``__tracebackhide__ = True`` will be hidden.
22
43
 
23
- Frames containing ``__debuggerskip__`` will be stepped over, frames who's parent
24
- frames value of ``__debuggerskip__`` is ``True`` will be skipped.
44
+ Frames containing ``__debuggerskip__`` will be stepped over, frames whose parent
45
+ frames value of ``__debuggerskip__`` is ``True`` will also be skipped.
25
46
 
26
47
  >>> def helpers_helper():
27
48
  ... pass
@@ -1070,7 +1091,9 @@ class Pdb(OldPdb):
1070
1091
  raise ValueError()
1071
1092
  self.context = new_context
1072
1093
  except ValueError:
1073
- self.error("The 'context' command requires a positive integer argument.")
1094
+ self.error(
1095
+ f"The 'context' command requires a positive integer argument (current value {self.context})."
1096
+ )
1074
1097
 
1075
1098
 
1076
1099
  class InterruptiblePdb(Pdb):
@@ -41,7 +41,11 @@ from warnings import warn
41
41
 
42
42
  def __getattr__(name):
43
43
  if name in _deprecated_names:
44
- warn(f"Importing {name} from IPython.core.display is deprecated since IPython 7.14, please import from IPython display", DeprecationWarning, stacklevel=2)
44
+ warn(
45
+ f"Importing {name} from IPython.core.display is deprecated since IPython 7.14, please import from IPython.display",
46
+ DeprecationWarning,
47
+ stacklevel=2,
48
+ )
45
49
  return getattr(display_functions, name)
46
50
 
47
51
  if name in globals().keys():
@@ -9,6 +9,7 @@
9
9
  #-----------------------------------------------------------------------------
10
10
 
11
11
  import functools
12
+ import os
12
13
  import re
13
14
  import shlex
14
15
  import sys
@@ -41,6 +42,16 @@ def _get_conda_like_executable(command):
41
42
  executable: string
42
43
  Value should be: conda, mamba or micromamba
43
44
  """
45
+ # Check for a environment variable bound to the base executable, both conda and mamba
46
+ # set these when activating an environment.
47
+ base_executable = "CONDA_EXE"
48
+ if "mamba" in command.lower():
49
+ base_executable = "MAMBA_EXE"
50
+ if base_executable in os.environ:
51
+ executable = Path(os.environ[base_executable])
52
+ if executable.is_file():
53
+ return str(executable.resolve())
54
+
44
55
  # Check if there is a conda executable in the same directory as the Python executable.
45
56
  # This is the case within conda's root environment.
46
57
  executable = Path(sys.executable).parent / command
@@ -48,10 +59,12 @@ def _get_conda_like_executable(command):
48
59
  return str(executable)
49
60
 
50
61
  # Otherwise, attempt to extract the executable from conda history.
51
- # This applies in any conda environment.
62
+ # This applies in any conda environment. Parsing this way is error prone because
63
+ # different versions of conda and mamba include differing cmd values such as
64
+ # `conda`, `conda-script.py`, or `path/to/conda`, here use the raw command provided.
52
65
  history = Path(sys.prefix, "conda-meta", "history").read_text(encoding="utf-8")
53
66
  match = re.search(
54
- rf"^#\s*cmd:\s*(?P<command>.*{executable})\s[create|install]",
67
+ rf"^#\s*cmd:\s*(?P<command>.*{command})\s[create|install]",
55
68
  history,
56
69
  flags=re.MULTILINE,
57
70
  )
@@ -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 = 27
19
+ _version_minor = 28
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -830,8 +830,8 @@ class VerboseTB(TBTools):
830
830
  traceback, to be used with alternate interpreters (because their own code
831
831
  would appear in the traceback)."""
832
832
 
833
- _tb_highlight = "bg:ansiyellow"
834
- _tb_highlight_style = "default"
833
+ tb_highlight = "bg:ansiyellow"
834
+ tb_highlight_style = "default"
835
835
 
836
836
  def __init__(
837
837
  self,
@@ -1133,8 +1133,8 @@ class VerboseTB(TBTools):
1133
1133
  after = context // 2
1134
1134
  before = context - after
1135
1135
  if self.has_colors:
1136
- style = get_style_by_name(self._tb_highlight_style)
1137
- style = stack_data.style_with_executing_node(style, self._tb_highlight)
1136
+ style = get_style_by_name(self.tb_highlight_style)
1137
+ style = stack_data.style_with_executing_node(style, self.tb_highlight)
1138
1138
  formatter = Terminal256Formatter(style=style)
1139
1139
  else:
1140
1140
  formatter = None
@@ -302,13 +302,25 @@ def import_pyside6():
302
302
 
303
303
  ImportErrors raised within this function are non-recoverable
304
304
  """
305
+
306
+ def get_attrs(module):
307
+ return {
308
+ name: getattr(module, name)
309
+ for name in dir(module)
310
+ if not name.startswith("_")
311
+ }
312
+
305
313
  from PySide6 import QtGui, QtCore, QtSvg, QtWidgets, QtPrintSupport
306
314
 
307
315
  # Join QtGui and QtWidgets for Qt4 compatibility.
308
316
  QtGuiCompat = types.ModuleType("QtGuiCompat")
309
317
  QtGuiCompat.__dict__.update(QtGui.__dict__)
310
- QtGuiCompat.__dict__.update(QtWidgets.__dict__)
311
- QtGuiCompat.__dict__.update(QtPrintSupport.__dict__)
318
+ if QtCore.__version_info__ < (6, 7):
319
+ QtGuiCompat.__dict__.update(QtWidgets.__dict__)
320
+ QtGuiCompat.__dict__.update(QtPrintSupport.__dict__)
321
+ else:
322
+ QtGuiCompat.__dict__.update(get_attrs(QtWidgets))
323
+ QtGuiCompat.__dict__.update(get_attrs(QtPrintSupport))
312
324
 
313
325
  return QtCore, QtGuiCompat, QtSvg, QT_API_PYSIDE6
314
326
 
@@ -1,2 +1,2 @@
1
1
  # GENERATED BY setup.py
2
- commit = "82690a067"
2
+ commit = "a9c7369d7"
@@ -80,7 +80,13 @@ def _set_term_title_xterm(title):
80
80
  def _restore_term_title_xterm():
81
81
  # Make sure the restore has at least one accompanying set.
82
82
  global _xterm_term_title_saved
83
- assert _xterm_term_title_saved
83
+ if not _xterm_term_title_saved:
84
+ warnings.warn(
85
+ "Expecting xterm_term_title_saved to be True, but is not; will not restore terminal title.",
86
+ stacklevel=1,
87
+ )
88
+ return
89
+
84
90
  sys.stdout.write('\033[23;0t')
85
91
  _xterm_term_title_saved = False
86
92
 
@@ -75,20 +75,29 @@ def teardown_module():
75
75
  shutil.rmtree(TMP_TEST_DIR)
76
76
 
77
77
 
78
- def setup_environment():
79
- """Setup testenvironment for some functions that are tested
80
- in this module. In particular this functions stores attributes
81
- and other things that we need to stub in some test functions.
82
- This needs to be done on a function level and not module level because
83
- each testfunction needs a pristine environment.
84
- """
78
+ # Build decorator that uses the setup_environment/setup_environment
79
+ @pytest.fixture
80
+ def environment():
85
81
  global oldstuff, platformstuff
86
- oldstuff = (env.copy(), os.name, sys.platform, path.get_home_dir, IPython.__file__, os.getcwd())
82
+ oldstuff = (
83
+ env.copy(),
84
+ os.name,
85
+ sys.platform,
86
+ path.get_home_dir,
87
+ IPython.__file__,
88
+ os.getcwd(),
89
+ )
87
90
 
88
- def teardown_environment():
89
- """Restore things that were remembered by the setup_environment function
90
- """
91
- (oldenv, os.name, sys.platform, path.get_home_dir, IPython.__file__, old_wd) = oldstuff
91
+ yield
92
+
93
+ (
94
+ oldenv,
95
+ os.name,
96
+ sys.platform,
97
+ path.get_home_dir,
98
+ IPython.__file__,
99
+ old_wd,
100
+ ) = oldstuff
92
101
  os.chdir(old_wd)
93
102
  reload(path)
94
103
 
@@ -96,16 +105,7 @@ def teardown_environment():
96
105
  if key not in oldenv:
97
106
  del env[key]
98
107
  env.update(oldenv)
99
- if hasattr(sys, 'frozen'):
100
- del sys.frozen
101
-
102
-
103
- # Build decorator that uses the setup_environment/setup_environment
104
- @pytest.fixture
105
- def environment():
106
- setup_environment()
107
- yield
108
- teardown_environment()
108
+ assert not hasattr(sys, "frozen")
109
109
 
110
110
 
111
111
  with_environment = pytest.mark.usefixtures("environment")
@@ -113,11 +113,11 @@ with_environment = pytest.mark.usefixtures("environment")
113
113
 
114
114
  @skip_if_not_win32
115
115
  @with_environment
116
- def test_get_home_dir_1():
116
+ def test_get_home_dir_1(monkeypatch):
117
117
  """Testcase for py2exe logic, un-compressed lib
118
118
  """
119
119
  unfrozen = path.get_home_dir()
120
- sys.frozen = True
120
+ monkeypatch.setattr(sys, "frozen", True, raising=False)
121
121
 
122
122
  #fake filename for IPython.__init__
123
123
  IPython.__file__ = abspath(join(HOME_TEST_DIR, "Lib/IPython/__init__.py"))
@@ -128,13 +128,15 @@ def test_get_home_dir_1():
128
128
 
129
129
  @skip_if_not_win32
130
130
  @with_environment
131
- def test_get_home_dir_2():
131
+ def test_get_home_dir_2(monkeypatch):
132
132
  """Testcase for py2exe logic, compressed lib
133
133
  """
134
134
  unfrozen = path.get_home_dir()
135
- sys.frozen = True
136
- #fake filename for IPython.__init__
137
- IPython.__file__ = abspath(join(HOME_TEST_DIR, "Library.zip/IPython/__init__.py")).lower()
135
+ monkeypatch.setattr(sys, "frozen", True, raising=False)
136
+ # fake filename for IPython.__init__
137
+ IPython.__file__ = abspath(
138
+ join(HOME_TEST_DIR, "Library.zip/IPython/__init__.py")
139
+ ).lower()
138
140
 
139
141
  home_dir = path.get_home_dir(True)
140
142
  assert home_dir == unfrozen
@@ -160,22 +162,22 @@ def test_get_home_dir_4():
160
162
 
161
163
  @skip_win32
162
164
  @with_environment
163
- def test_get_home_dir_5():
165
+ def test_get_home_dir_5(monkeypatch):
164
166
  """raise HomeDirError if $HOME is specified, but not a writable dir"""
165
167
  env['HOME'] = abspath(HOME_TEST_DIR+'garbage')
166
168
  # set os.name = posix, to prevent My Documents fallback on Windows
167
- os.name = 'posix'
169
+ monkeypatch.setattr(os, "name", "posix")
168
170
  pytest.raises(path.HomeDirError, path.get_home_dir, True)
169
171
 
170
172
  # Should we stub wreg fully so we can run the test on all platforms?
171
173
  @skip_if_not_win32
172
174
  @with_environment
173
- def test_get_home_dir_8():
175
+ def test_get_home_dir_8(monkeypatch):
174
176
  """Using registry hack for 'My Documents', os=='nt'
175
177
 
176
178
  HOMESHARE, HOMEDRIVE, HOMEPATH, USERPROFILE and others are missing.
177
179
  """
178
- os.name = 'nt'
180
+ monkeypatch.setattr(os, "name", "nt")
179
181
  # Remove from stub environment all keys that may be set
180
182
  for key in ['HOME', 'HOMESHARE', 'HOMEDRIVE', 'HOMEPATH', 'USERPROFILE']:
181
183
  env.pop(key, None)
@@ -194,13 +196,12 @@ def test_get_home_dir_8():
194
196
  assert home_dir == abspath(HOME_TEST_DIR)
195
197
 
196
198
  @with_environment
197
- def test_get_xdg_dir_0():
199
+ def test_get_xdg_dir_0(monkeypatch):
198
200
  """test_get_xdg_dir_0, check xdg_dir"""
199
- reload(path)
200
- path._writable_dir = lambda path: True
201
- path.get_home_dir = lambda : 'somewhere'
202
- os.name = "posix"
203
- sys.platform = "linux2"
201
+ monkeypatch.setattr(path, "_writable_dir", lambda path: True)
202
+ monkeypatch.setattr(path, "get_home_dir", lambda: "somewhere")
203
+ monkeypatch.setattr(os, "name", "posix")
204
+ monkeypatch.setattr(sys, "platform", "linux2")
204
205
  env.pop('IPYTHON_DIR', None)
205
206
  env.pop('IPYTHONDIR', None)
206
207
  env.pop('XDG_CONFIG_HOME', None)
@@ -209,44 +210,41 @@ def test_get_xdg_dir_0():
209
210
 
210
211
 
211
212
  @with_environment
212
- def test_get_xdg_dir_1():
213
+ def test_get_xdg_dir_1(monkeypatch):
213
214
  """test_get_xdg_dir_1, check nonexistent xdg_dir"""
214
- reload(path)
215
- path.get_home_dir = lambda : HOME_TEST_DIR
216
- os.name = "posix"
217
- sys.platform = "linux2"
218
- env.pop('IPYTHON_DIR', None)
219
- env.pop('IPYTHONDIR', None)
220
- env.pop('XDG_CONFIG_HOME', None)
215
+ monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
216
+ monkeypatch.setattr(os, "name", "posix")
217
+ monkeypatch.setattr(sys, "platform", "linux2")
218
+ env.pop("IPYTHON_DIR", None)
219
+ env.pop("IPYTHONDIR", None)
220
+ env.pop("XDG_CONFIG_HOME", None)
221
221
  assert path.get_xdg_dir() is None
222
222
 
223
223
  @with_environment
224
- def test_get_xdg_dir_2():
224
+ def test_get_xdg_dir_2(monkeypatch):
225
225
  """test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
226
- reload(path)
227
- path.get_home_dir = lambda : HOME_TEST_DIR
228
- os.name = "posix"
229
- sys.platform = "linux2"
230
- env.pop('IPYTHON_DIR', None)
231
- env.pop('IPYTHONDIR', None)
232
- env.pop('XDG_CONFIG_HOME', None)
233
- cfgdir=os.path.join(path.get_home_dir(), '.config')
226
+ monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
227
+ monkeypatch.setattr(os, "name", "posix")
228
+ monkeypatch.setattr(sys, "platform", "linux2")
229
+ env.pop("IPYTHON_DIR", None)
230
+ env.pop("IPYTHONDIR", None)
231
+ env.pop("XDG_CONFIG_HOME", None)
232
+ cfgdir = os.path.join(path.get_home_dir(), ".config")
234
233
  if not os.path.exists(cfgdir):
235
234
  os.makedirs(cfgdir)
236
235
 
237
236
  assert path.get_xdg_dir() == cfgdir
238
237
 
239
238
  @with_environment
240
- def test_get_xdg_dir_3():
239
+ def test_get_xdg_dir_3(monkeypatch):
241
240
  """test_get_xdg_dir_3, check xdg_dir not used on non-posix systems"""
242
- reload(path)
243
- path.get_home_dir = lambda : HOME_TEST_DIR
244
- os.name = "nt"
245
- sys.platform = "win32"
246
- env.pop('IPYTHON_DIR', None)
247
- env.pop('IPYTHONDIR', None)
248
- env.pop('XDG_CONFIG_HOME', None)
249
- cfgdir=os.path.join(path.get_home_dir(), '.config')
241
+ monkeypatch.setattr(path, "get_home_dir", lambda: HOME_TEST_DIR)
242
+ monkeypatch.setattr(os, "name", "nt")
243
+ monkeypatch.setattr(sys, "platform", "win32")
244
+ env.pop("IPYTHON_DIR", None)
245
+ env.pop("IPYTHONDIR", None)
246
+ env.pop("XDG_CONFIG_HOME", None)
247
+ cfgdir = os.path.join(path.get_home_dir(), ".config")
250
248
  os.makedirs(cfgdir, exist_ok=True)
251
249
 
252
250
  assert path.get_xdg_dir() is None
@@ -281,31 +279,30 @@ def test_get_long_path_name():
281
279
  assert p == "/usr/local"
282
280
 
283
281
 
284
- class TestRaiseDeprecation(unittest.TestCase):
282
+ @dec.skip_win32 # can't create not-user-writable dir on win
283
+ @with_environment
284
+ def test_not_writable_ipdir():
285
+ tmpdir = tempfile.mkdtemp()
286
+ os.name = "posix"
287
+ env.pop("IPYTHON_DIR", None)
288
+ env.pop("IPYTHONDIR", None)
289
+ env.pop("XDG_CONFIG_HOME", None)
290
+ env["HOME"] = tmpdir
291
+ ipdir = os.path.join(tmpdir, ".ipython")
292
+ os.mkdir(ipdir, 0o555)
293
+ try:
294
+ open(os.path.join(ipdir, "_foo_"), "w", encoding="utf-8").close()
295
+ except IOError:
296
+ pass
297
+ else:
298
+ # I can still write to an unwritable dir,
299
+ # assume I'm root and skip the test
300
+ pytest.skip("I can't create directories that I can't write to")
301
+
302
+ with pytest.warns(UserWarning, match="is not a writable location"):
303
+ ipdir = paths.get_ipython_dir()
304
+ env.pop("IPYTHON_DIR", None)
285
305
 
286
- @dec.skip_win32 # can't create not-user-writable dir on win
287
- @with_environment
288
- def test_not_writable_ipdir(self):
289
- tmpdir = tempfile.mkdtemp()
290
- os.name = "posix"
291
- env.pop('IPYTHON_DIR', None)
292
- env.pop('IPYTHONDIR', None)
293
- env.pop('XDG_CONFIG_HOME', None)
294
- env['HOME'] = tmpdir
295
- ipdir = os.path.join(tmpdir, '.ipython')
296
- os.mkdir(ipdir, 0o555)
297
- try:
298
- open(os.path.join(ipdir, "_foo_"), "w", encoding="utf-8").close()
299
- except IOError:
300
- pass
301
- else:
302
- # I can still write to an unwritable dir,
303
- # assume I'm root and skip the test
304
- pytest.skip("I can't create directories that I can't write to")
305
-
306
- with self.assertWarnsRegex(UserWarning, 'is not a writable location'):
307
- ipdir = paths.get_ipython_dir()
308
- env.pop('IPYTHON_DIR', None)
309
306
 
310
307
  @with_environment
311
308
  def test_get_py_filename():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipython
3
- Version: 8.27.0
3
+ Version: 8.28.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
@@ -1,6 +1,43 @@
1
1
  ============
2
2
  8.x Series
3
3
  ============
4
+ .. _version 8.28:
5
+
6
+ IPython 8.28
7
+ ============
8
+
9
+ Slight delay of this September release as I was busy at Pydata Paris last week.
10
+ Not many user visible changes for this release, a couple of bug fixes and
11
+ workaround:
12
+
13
+ - :ghpull:`14480` AssertionError: assert _xterm_term_title_saved in WSL – It is
14
+ unclear why the terminal title is not saved in WSL, if you've WSL experience
15
+ we'd love your feedback and help to not just ignore an error
16
+ - :ghpull:`14510` Fix use of pyside6 >= 6.7.0
17
+ - :ghpull:`14518` Make values public (_tb_highlight & _tb_highlight_style)
18
+ - :ghpull:`14515` Use environment variable to identify conda / mamba
19
+
20
+
21
+ As usual you can find the full list of PRs on GitHub under `the 8.28
22
+ <https://github.com/ipython/ipython/milestone/135?closed=1>`__ milestone.
23
+
24
+ For something completely different
25
+ ----------------------------------
26
+
27
+ One of the first works of Science Fiction (`Frankenstein
28
+ <https://en.wikipedia.org/wiki/Frankenstein>`__), was written by `Mary Shelley
29
+ <https://en.wikipedia.org/wiki/Mary_Shelley>`__ when she was 18, before being
30
+ published in London on 1 January 1818 when she was 20. This is often overlooked,
31
+ and the role of founders of science fiction attribute to Edgar Allan Poe and
32
+ Jules Verne despite being published later.
33
+
34
+ Thanks
35
+ ------
36
+
37
+ Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
38
+ work on IPython and related libraries.
39
+
40
+
4
41
  .. _version 8.27:
5
42
 
6
43
  IPython 8.27
@@ -392,16 +429,27 @@ Reverted in 8.17.1:
392
429
 
393
430
  - :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
394
431
 
395
- Mamba and Micromamba magic
396
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
397
432
 
398
- In addition to the conda command to manage conda environment, mamba and
399
- micromamba can now be used using the corresponding magic in IPython.
400
- Since these commands are compatible with conda, they are following the
401
- same logic.
433
+ Mamba and Micromamba magic commands
434
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
435
+
436
+ In addition to the ``%conda`` magic command for calling ``conda`` in IPython,
437
+ the ``%mamba`` and ``%micromamba`` magic commands now
438
+ call ``mamba`` and ``micromamba`` if they are on ``sys.path``.
439
+
440
+ .. code::
441
+
442
+ %mamba install pkgname
443
+ %micromamba install pkgname
444
+ %conda install pkgname
445
+ %pip install pkgname
446
+
447
+ %mamba --help
448
+ %micromamba --help
449
+ %conda --help
450
+ %pip --help # works w/ JupyterLite
451
+ !pip --help
402
452
 
403
- These two magic require to have the corresponding commands available
404
- either in the conda environment or system wide.
405
453
 
406
454
  :ghpull:`14191`
407
455
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ipython
3
- Version: 8.27.0
3
+ Version: 8.28.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes