ipython 8.28.0__tar.gz → 8.30.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 (621) hide show
  1. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/completer.py +5 -5
  2. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/completerlib.py +1 -1
  3. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/crashhandler.py +33 -21
  4. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/debugger.py +2 -2
  5. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display.py +103 -24
  6. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/formatters.py +92 -33
  7. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/guarded_eval.py +10 -13
  8. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputsplitter.py +2 -1
  9. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputtransformer2.py +4 -1
  10. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/interactiveshell.py +1 -1
  11. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/ast_mod.py +1 -1
  12. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/basic.py +2 -2
  13. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/code.py +3 -1
  14. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/execution.py +15 -5
  15. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/logging.py +2 -2
  16. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/packaging.py +17 -0
  17. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/oinspect.py +1 -1
  18. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/page.py +2 -2
  19. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/prefilter.py +4 -2
  20. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/prompts.py +3 -1
  21. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/pylabtools.py +1 -1
  22. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/release.py +5 -14
  23. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/nonascii2.py +2 -2
  24. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_completer.py +1 -1
  25. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_display.py +1 -1
  26. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_formatters.py +1 -2
  27. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2.py +1 -0
  28. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_interactiveshell.py +2 -2
  29. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_logger.py +1 -1
  30. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic.py +2 -2
  31. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_paths.py +10 -8
  32. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_prefilter.py +10 -0
  33. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_run.py +4 -4
  34. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_ultratb.py +7 -6
  35. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/test_storemagic.py +29 -24
  36. {ipython-8.28.0 → ipython-8.30.0}/IPython/external/qt_loaders.py +1 -0
  37. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/__init__.py +2 -2
  38. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/clipboard.py +1 -0
  39. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/latextools.py +4 -4
  40. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/pretty.py +11 -4
  41. {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/custom_doctests.py +1 -1
  42. {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/ipython_directive.py +16 -14
  43. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/interactiveshell.py +21 -12
  44. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/__init__.py +8 -0
  45. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_match.py +1 -0
  46. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_suggest.py +1 -1
  47. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/shortcuts/filters.py +1 -1
  48. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/__init__.py +2 -2
  49. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_tools.py +2 -2
  50. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tools.py +3 -8
  51. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_cli.py +3 -1
  52. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_win32.py +1 -1
  53. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_sysinfo.py +1 -1
  54. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/dir2.py +2 -2
  55. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/frame.py +5 -3
  56. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/sysinfo.py +1 -1
  57. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/text.py +95 -37
  58. {ipython-8.28.0/ipython.egg-info → ipython-8.30.0}/PKG-INFO +1 -1
  59. ipython-8.30.0/docs/source/api/generated/IPython.conftest.rst +28 -0
  60. ipython-8.30.0/docs/source/api/generated/IPython.core.alias.rst +36 -0
  61. ipython-8.30.0/docs/source/api/generated/IPython.core.application.rst +20 -0
  62. ipython-8.30.0/docs/source/api/generated/IPython.core.async_helpers.rst +13 -0
  63. ipython-8.30.0/docs/source/api/generated/IPython.core.autocall.rst +24 -0
  64. ipython-8.30.0/docs/source/api/generated/IPython.core.builtin_trap.rst +16 -0
  65. ipython-8.30.0/docs/source/api/generated/IPython.core.compilerop.rst +25 -0
  66. ipython-8.30.0/docs/source/api/generated/IPython.core.completer.rst +113 -0
  67. ipython-8.30.0/docs/source/api/generated/IPython.core.completerlib.rst +43 -0
  68. ipython-8.30.0/docs/source/api/generated/IPython.core.crashhandler.rst +22 -0
  69. ipython-8.30.0/docs/source/api/generated/IPython.core.debugger.rst +38 -0
  70. ipython-8.30.0/docs/source/api/generated/IPython.core.error.rst +30 -0
  71. ipython-8.30.0/docs/source/api/generated/IPython.core.events.rst +34 -0
  72. ipython-8.30.0/docs/source/api/generated/IPython.core.excolors.rst +13 -0
  73. ipython-8.30.0/docs/source/api/generated/IPython.core.extensions.rst +16 -0
  74. ipython-8.30.0/docs/source/api/generated/IPython.core.formatters.rst +83 -0
  75. ipython-8.30.0/docs/source/api/generated/IPython.core.getipython.rst +13 -0
  76. ipython-8.30.0/docs/source/api/generated/IPython.core.guarded_eval.rst +31 -0
  77. ipython-8.30.0/docs/source/api/generated/IPython.core.history.rst +44 -0
  78. ipython-8.30.0/docs/source/api/generated/IPython.core.historyapp.rst +22 -0
  79. ipython-8.30.0/docs/source/api/generated/IPython.core.hooks.rst +34 -0
  80. ipython-8.30.0/docs/source/api/generated/IPython.core.inputsplitter.rst +58 -0
  81. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer.rst +74 -0
  82. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +88 -0
  83. ipython-8.30.0/docs/source/api/generated/IPython.core.interactiveshell.rst +59 -0
  84. ipython-8.30.0/docs/source/api/generated/IPython.core.logger.rst +16 -0
  85. ipython-8.30.0/docs/source/api/generated/IPython.core.macro.rst +16 -0
  86. ipython-8.30.0/docs/source/api/generated/IPython.core.magic.rst +59 -0
  87. ipython-8.30.0/docs/source/api/generated/IPython.core.magic_arguments.rst +62 -0
  88. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +22 -0
  89. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.auto.rst +16 -0
  90. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.basic.rst +24 -0
  91. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.code.rst +38 -0
  92. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.display.rst +14 -0
  93. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.execution.rst +38 -0
  94. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.extension.rst +14 -0
  95. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.history.rst +14 -0
  96. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.logging.rst +14 -0
  97. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.namespace.rst +14 -0
  98. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.osm.rst +16 -0
  99. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.packaging.rst +20 -0
  100. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.pylab.rst +14 -0
  101. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.rst +14 -0
  102. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.script.rst +22 -0
  103. ipython-8.30.0/docs/source/api/generated/IPython.core.oinspect.rst +52 -0
  104. ipython-8.30.0/docs/source/api/generated/IPython.core.page.rst +37 -0
  105. ipython-8.30.0/docs/source/api/generated/IPython.core.payload.rst +14 -0
  106. ipython-8.30.0/docs/source/api/generated/IPython.core.payloadpage.rst +16 -0
  107. ipython-8.30.0/docs/source/api/generated/IPython.core.prefilter.rst +88 -0
  108. ipython-8.30.0/docs/source/api/generated/IPython.core.profileapp.rst +35 -0
  109. ipython-8.30.0/docs/source/api/generated/IPython.core.profiledir.rst +18 -0
  110. ipython-8.30.0/docs/source/api/generated/IPython.core.prompts.rst +16 -0
  111. ipython-8.30.0/docs/source/api/generated/IPython.core.pylabtools.rst +40 -0
  112. ipython-8.30.0/docs/source/api/generated/IPython.core.shellapp.rst +20 -0
  113. ipython-8.30.0/docs/source/api/generated/IPython.core.splitinput.rst +22 -0
  114. ipython-8.30.0/docs/source/api/generated/IPython.core.ultratb.rst +72 -0
  115. ipython-8.30.0/docs/source/api/generated/IPython.display.rst +187 -0
  116. ipython-8.30.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +34 -0
  117. ipython-8.30.0/docs/source/api/generated/IPython.lib.clipboard.rst +29 -0
  118. ipython-8.30.0/docs/source/api/generated/IPython.lib.deepreload.rst +37 -0
  119. ipython-8.30.0/docs/source/api/generated/IPython.lib.demo.rst +53 -0
  120. ipython-8.30.0/docs/source/api/generated/IPython.lib.editorhooks.rst +43 -0
  121. ipython-8.30.0/docs/source/api/generated/IPython.lib.guisupport.rst +28 -0
  122. ipython-8.30.0/docs/source/api/generated/IPython.lib.latextools.rst +35 -0
  123. ipython-8.30.0/docs/source/api/generated/IPython.lib.lexers.rst +38 -0
  124. ipython-8.30.0/docs/source/api/generated/IPython.lib.pretty.rst +83 -0
  125. ipython-8.30.0/docs/source/api/generated/IPython.paths.rst +25 -0
  126. ipython-8.30.0/docs/source/api/generated/IPython.rst +22 -0
  127. ipython-8.30.0/docs/source/api/generated/IPython.terminal.debugger.rst +22 -0
  128. ipython-8.30.0/docs/source/api/generated/IPython.terminal.embed.rst +30 -0
  129. ipython-8.30.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +34 -0
  130. ipython-8.30.0/docs/source/api/generated/IPython.terminal.ipapp.rst +30 -0
  131. ipython-8.30.0/docs/source/api/generated/IPython.terminal.magics.rst +22 -0
  132. ipython-8.30.0/docs/source/api/generated/IPython.terminal.prompts.rst +24 -0
  133. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +46 -0
  134. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +67 -0
  135. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +58 -0
  136. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +76 -0
  137. ipython-8.30.0/docs/source/api/generated/IPython.testing.decorators.rst +28 -0
  138. ipython-8.30.0/docs/source/api/generated/IPython.testing.globalipapp.rst +19 -0
  139. ipython-8.30.0/docs/source/api/generated/IPython.testing.ipunittest.rst +31 -0
  140. ipython-8.30.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +13 -0
  141. ipython-8.30.0/docs/source/api/generated/IPython.testing.tools.rst +66 -0
  142. ipython-8.30.0/docs/source/api/generated/IPython.utils.PyColorize.rst +16 -0
  143. ipython-8.30.0/docs/source/api/generated/IPython.utils.capture.rst +28 -0
  144. ipython-8.30.0/docs/source/api/generated/IPython.utils.colorable.rst +14 -0
  145. ipython-8.30.0/docs/source/api/generated/IPython.utils.coloransi.rst +40 -0
  146. ipython-8.30.0/docs/source/api/generated/IPython.utils.contexts.rst +16 -0
  147. ipython-8.30.0/docs/source/api/generated/IPython.utils.data.rst +16 -0
  148. ipython-8.30.0/docs/source/api/generated/IPython.utils.decorators.rst +19 -0
  149. ipython-8.30.0/docs/source/api/generated/IPython.utils.dir2.rst +19 -0
  150. ipython-8.30.0/docs/source/api/generated/IPython.utils.encoding.rst +16 -0
  151. ipython-8.30.0/docs/source/api/generated/IPython.utils.frame.rst +22 -0
  152. ipython-8.30.0/docs/source/api/generated/IPython.utils.generics.rst +16 -0
  153. ipython-8.30.0/docs/source/api/generated/IPython.utils.importstring.rst +13 -0
  154. ipython-8.30.0/docs/source/api/generated/IPython.utils.io.rst +25 -0
  155. ipython-8.30.0/docs/source/api/generated/IPython.utils.ipstruct.rst +16 -0
  156. ipython-8.30.0/docs/source/api/generated/IPython.utils.module_paths.rst +13 -0
  157. ipython-8.30.0/docs/source/api/generated/IPython.utils.openpy.rst +22 -0
  158. ipython-8.30.0/docs/source/api/generated/IPython.utils.path.rst +62 -0
  159. ipython-8.30.0/docs/source/api/generated/IPython.utils.process.rst +23 -0
  160. ipython-8.30.0/docs/source/api/generated/IPython.utils.sentinel.rst +16 -0
  161. ipython-8.30.0/docs/source/api/generated/IPython.utils.shimmodule.rst +26 -0
  162. ipython-8.30.0/docs/source/api/generated/IPython.utils.strdispatch.rst +16 -0
  163. ipython-8.30.0/docs/source/api/generated/IPython.utils.sysinfo.rst +25 -0
  164. ipython-8.30.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +22 -0
  165. ipython-8.30.0/docs/source/api/generated/IPython.utils.tempdir.rst +20 -0
  166. ipython-8.30.0/docs/source/api/generated/IPython.utils.terminal.rst +25 -0
  167. ipython-8.30.0/docs/source/api/generated/IPython.utils.text.rst +69 -0
  168. ipython-8.30.0/docs/source/api/generated/IPython.utils.timing.rst +31 -0
  169. ipython-8.30.0/docs/source/api/generated/IPython.utils.tokenutil.rst +22 -0
  170. ipython-8.30.0/docs/source/api/generated/IPython.utils.tz.rst +20 -0
  171. ipython-8.30.0/docs/source/api/generated/IPython.utils.ulinecache.rst +13 -0
  172. ipython-8.30.0/docs/source/api/generated/IPython.utils.wildcard.rst +28 -0
  173. ipython-8.30.0/docs/source/api/generated/gen.txt +119 -0
  174. {ipython-8.28.0 → ipython-8.30.0}/docs/source/conf.py +1 -2
  175. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/inputtransforms.rst +1 -1
  176. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/integrating.rst +4 -2
  177. ipython-8.30.0/docs/source/config/options/kernel.rst +1554 -0
  178. ipython-8.30.0/docs/source/config/options/terminal.rst +1975 -0
  179. ipython-8.30.0/docs/source/config/shortcuts/table.tsv +79 -0
  180. ipython-8.30.0/docs/source/interactive/magics-generated.txt +2506 -0
  181. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/magics.rst +1 -1
  182. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/tutorial.rst +1 -2
  183. ipython-8.30.0/docs/source/savefig/hist_simple.png +0 -0
  184. ipython-8.30.0/docs/source/savefig/hist_with_text.png +0 -0
  185. ipython-8.30.0/docs/source/savefig/plot_simple.png +0 -0
  186. ipython-8.30.0/docs/source/savefig/plot_simple_python.png +0 -0
  187. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.9.rst +1 -1
  188. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version7.rst +7 -7
  189. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version8.rst +141 -55
  190. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +1 -1
  191. ipython-8.30.0/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  192. {ipython-8.28.0 → ipython-8.30.0/ipython.egg-info}/PKG-INFO +1 -1
  193. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/SOURCES.txt +124 -0
  194. {ipython-8.28.0 → ipython-8.30.0}/pyproject.toml +27 -5
  195. {ipython-8.28.0 → ipython-8.30.0}/setupbase.py +29 -43
  196. {ipython-8.28.0 → ipython-8.30.0}/.flake8 +0 -0
  197. {ipython-8.28.0 → ipython-8.30.0}/.mailmap +0 -0
  198. {ipython-8.28.0 → ipython-8.30.0}/.pre-commit-config.yaml +0 -0
  199. {ipython-8.28.0 → ipython-8.30.0}/COPYING.rst +0 -0
  200. {ipython-8.28.0 → ipython-8.30.0}/IPython/__init__.py +0 -0
  201. {ipython-8.28.0 → ipython-8.30.0}/IPython/__main__.py +0 -0
  202. {ipython-8.28.0 → ipython-8.30.0}/IPython/conftest.py +0 -0
  203. {ipython-8.28.0 → ipython-8.30.0}/IPython/consoleapp.py +0 -0
  204. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/__init__.py +0 -0
  205. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/alias.py +0 -0
  206. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/application.py +0 -0
  207. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/async_helpers.py +0 -0
  208. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/autocall.py +0 -0
  209. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/builtin_trap.py +0 -0
  210. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/compilerop.py +0 -0
  211. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display_functions.py +0 -0
  212. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/display_trap.py +0 -0
  213. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/displayhook.py +0 -0
  214. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/displaypub.py +0 -0
  215. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/error.py +0 -0
  216. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/events.py +0 -0
  217. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/excolors.py +0 -0
  218. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/extensions.py +0 -0
  219. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/getipython.py +0 -0
  220. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/history.py +0 -0
  221. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/historyapp.py +0 -0
  222. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/hooks.py +0 -0
  223. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/inputtransformer.py +0 -0
  224. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/latex_symbols.py +0 -0
  225. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/logger.py +0 -0
  226. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/macro.py +0 -0
  227. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magic.py +0 -0
  228. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magic_arguments.py +0 -0
  229. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/__init__.py +0 -0
  230. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/auto.py +0 -0
  231. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/config.py +0 -0
  232. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/display.py +0 -0
  233. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/extension.py +0 -0
  234. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/history.py +0 -0
  235. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/namespace.py +0 -0
  236. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/osm.py +0 -0
  237. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/pylab.py +0 -0
  238. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/magics/script.py +0 -0
  239. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/payload.py +0 -0
  240. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/payloadpage.py +0 -0
  241. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profile/README_STARTUP +0 -0
  242. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profileapp.py +0 -0
  243. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/profiledir.py +0 -0
  244. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/shellapp.py +0 -0
  245. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/splitinput.py +0 -0
  246. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/2x2.jpg +0 -0
  247. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/2x2.png +0 -0
  248. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/__init__.py +0 -0
  249. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/bad_all.py +0 -0
  250. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  251. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/nonascii.py +0 -0
  252. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/print_argv.py +0 -0
  253. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/refbug.py +0 -0
  254. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/simpleerr.py +0 -0
  255. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/tclass.py +0 -0
  256. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_alias.py +0 -0
  257. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_application.py +0 -0
  258. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_async_helpers.py +0 -0
  259. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_autocall.py +0 -0
  260. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_compilerop.py +0 -0
  261. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_completerlib.py +0 -0
  262. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_debugger.py +0 -0
  263. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_displayhook.py +0 -0
  264. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_events.py +0 -0
  265. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  266. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_extension.py +0 -0
  267. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  268. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_handlers.py +0 -0
  269. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_history.py +0 -0
  270. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_hooks.py +0 -0
  271. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_imports.py +0 -0
  272. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  273. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  274. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  275. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_iplib.py +0 -0
  276. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  277. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  278. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_oinspect.py +0 -0
  279. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_page.py +0 -0
  280. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_profile.py +0 -0
  281. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_prompts.py +0 -0
  282. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_pylabtools.py +0 -0
  283. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_shellapp.py +0 -0
  284. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/tests/test_splitinput.py +0 -0
  285. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/ultratb.py +0 -0
  286. {ipython-8.28.0 → ipython-8.30.0}/IPython/core/usage.py +0 -0
  287. {ipython-8.28.0 → ipython-8.30.0}/IPython/display.py +0 -0
  288. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/__init__.py +0 -0
  289. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/autoreload.py +0 -0
  290. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/storemagic.py +0 -0
  291. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/__init__.py +0 -0
  292. {ipython-8.28.0 → ipython-8.30.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  293. {ipython-8.28.0 → ipython-8.30.0}/IPython/external/__init__.py +0 -0
  294. {ipython-8.28.0 → ipython-8.30.0}/IPython/external/qt_for_kernel.py +0 -0
  295. {ipython-8.28.0 → ipython-8.30.0}/IPython/external/tests/__init__.py +0 -0
  296. {ipython-8.28.0 → ipython-8.30.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  297. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/backgroundjobs.py +0 -0
  298. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/deepreload.py +0 -0
  299. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/demo.py +0 -0
  300. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/display.py +0 -0
  301. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/editorhooks.py +0 -0
  302. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/guisupport.py +0 -0
  303. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/lexers.py +0 -0
  304. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/__init__.py +0 -0
  305. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test.wav +0 -0
  306. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  307. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_clipboard.py +0 -0
  308. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_deepreload.py +0 -0
  309. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_display.py +0 -0
  310. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  311. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_imports.py +0 -0
  312. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_latextools.py +0 -0
  313. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_lexers.py +0 -0
  314. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_pretty.py +0 -0
  315. {ipython-8.28.0 → ipython-8.30.0}/IPython/lib/tests/test_pygments.py +0 -0
  316. {ipython-8.28.0 → ipython-8.30.0}/IPython/paths.py +0 -0
  317. {ipython-8.28.0 → ipython-8.30.0}/IPython/py.typed +0 -0
  318. {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/__init__.py +0 -0
  319. {ipython-8.28.0 → ipython-8.30.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  320. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/__init__.py +0 -0
  321. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/console.py +0 -0
  322. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/debugger.py +0 -0
  323. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/embed.py +0 -0
  324. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/ipapp.py +0 -0
  325. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/magics.py +0 -0
  326. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/prompts.py +0 -0
  327. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  328. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  329. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  330. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  331. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  332. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  333. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  334. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  335. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  336. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  337. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  338. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/ptutils.py +0 -0
  339. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/__init__.py +0 -0
  340. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  341. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_embed.py +0 -0
  342. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_help.py +0 -0
  343. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  344. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  345. {ipython-8.28.0 → ipython-8.30.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  346. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/__init__.py +0 -0
  347. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/decorators.py +0 -0
  348. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/globalipapp.py +0 -0
  349. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/ipunittest.py +0 -0
  350. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/Makefile +0 -0
  351. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/README.txt +0 -0
  352. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/__init__.py +0 -0
  353. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/dtexample.py +0 -0
  354. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  355. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  356. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/setup.py +0 -0
  357. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/simple.py +0 -0
  358. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/simplevars.py +0 -0
  359. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_combo.txt +0 -0
  360. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_example.txt +0 -0
  361. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  362. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  363. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/plugin/test_refs.py +0 -0
  364. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/skipdoctest.py +0 -0
  365. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_decorators.py +0 -0
  366. {ipython-8.28.0 → ipython-8.30.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  367. {ipython-8.28.0 → ipython-8.30.0}/IPython/tests/cve.py +0 -0
  368. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/PyColorize.py +0 -0
  369. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/__init__.py +0 -0
  370. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_common.py +0 -0
  371. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_emscripten.py +0 -0
  372. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_posix.py +0 -0
  373. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/_process_win32_controller.py +0 -0
  374. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/capture.py +0 -0
  375. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/colorable.py +0 -0
  376. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/coloransi.py +0 -0
  377. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/contexts.py +0 -0
  378. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/daemonize.py +0 -0
  379. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/data.py +0 -0
  380. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/decorators.py +0 -0
  381. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/docs.py +0 -0
  382. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/encoding.py +0 -0
  383. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/eventful.py +0 -0
  384. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/generics.py +0 -0
  385. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/importstring.py +0 -0
  386. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/io.py +0 -0
  387. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/ipstruct.py +0 -0
  388. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/jsonutil.py +0 -0
  389. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/localinterfaces.py +0 -0
  390. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/log.py +0 -0
  391. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/module_paths.py +0 -0
  392. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/openpy.py +0 -0
  393. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/path.py +0 -0
  394. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/process.py +0 -0
  395. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/py3compat.py +0 -0
  396. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/sentinel.py +0 -0
  397. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/shimmodule.py +0 -0
  398. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/signatures.py +0 -0
  399. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/strdispatch.py +0 -0
  400. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/syspathcontext.py +0 -0
  401. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tempdir.py +0 -0
  402. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/terminal.py +0 -0
  403. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/__init__.py +0 -0
  404. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_capture.py +0 -0
  405. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_decorators.py +0 -0
  406. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_deprecated.py +0 -0
  407. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_dir2.py +0 -0
  408. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_imports.py +0 -0
  409. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_importstring.py +0 -0
  410. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_io.py +0 -0
  411. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_module_paths.py +0 -0
  412. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_openpy.py +0 -0
  413. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_path.py +0 -0
  414. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_process.py +0 -0
  415. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  416. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  417. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  418. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_tempdir.py +0 -0
  419. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_text.py +0 -0
  420. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  421. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tests/test_wildcard.py +0 -0
  422. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/timing.py +0 -0
  423. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tokenutil.py +0 -0
  424. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/traitlets.py +0 -0
  425. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/tz.py +0 -0
  426. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/ulinecache.py +0 -0
  427. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/version.py +0 -0
  428. {ipython-8.28.0 → ipython-8.30.0}/IPython/utils/wildcard.py +0 -0
  429. {ipython-8.28.0 → ipython-8.30.0}/LICENSE +0 -0
  430. {ipython-8.28.0 → ipython-8.30.0}/MANIFEST.in +0 -0
  431. {ipython-8.28.0 → ipython-8.30.0}/README.rst +0 -0
  432. {ipython-8.28.0 → ipython-8.30.0}/_build_meta.py +0 -0
  433. {ipython-8.28.0 → ipython-8.30.0}/docs/Makefile +0 -0
  434. {ipython-8.28.0 → ipython-8.30.0}/docs/README.rst +0 -0
  435. {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_api.py +0 -0
  436. {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_config.py +0 -0
  437. {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_magics.py +0 -0
  438. {ipython-8.28.0 → ipython-8.30.0}/docs/autogen_shortcuts.py +0 -0
  439. {ipython-8.28.0 → ipython-8.30.0}/docs/make.cmd +0 -0
  440. {ipython-8.28.0 → ipython-8.30.0}/docs/man/ipython.1 +0 -0
  441. {ipython-8.28.0 → ipython-8.30.0}/docs/requirements.txt +0 -0
  442. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/running-crop.png +0 -0
  443. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/running.png +0 -0
  444. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/treeview.png +0 -0
  445. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/user-interface.png +0 -0
  446. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/2.0/widgets.png +0 -0
  447. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  448. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  449. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  450. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  451. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  452. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  453. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  454. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  455. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  456. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  457. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  458. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/autosuggest.gif +0 -0
  459. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  460. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  461. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  462. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  463. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  464. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  465. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  466. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  467. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  468. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  469. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  470. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  471. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  472. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  473. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  474. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ms_visual_studio.png +0 -0
  475. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/notebook_specgram.png +0 -0
  476. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/ptshell_features.png +0 -0
  477. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/qtconsole.png +0 -0
  478. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  479. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_images/unicode_completion.png +0 -0
  480. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/favicon.ico +0 -0
  481. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/logo.png +0 -0
  482. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_static/theme_overrides.css +0 -0
  483. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_templates/breadcrumbs.html +0 -0
  484. {ipython-8.28.0 → ipython-8.30.0}/docs/source/_templates/notebook_redirect.html +0 -0
  485. {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/history.rst +0 -0
  486. {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/index.rst +0 -0
  487. {ipython-8.28.0 → ipython-8.30.0}/docs/source/about/license_and_copyright.rst +0 -0
  488. {ipython-8.28.0 → ipython-8.30.0}/docs/source/api/index.rst +0 -0
  489. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/callbacks.rst +0 -0
  490. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/custommagics.rst +0 -0
  491. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/details.rst +0 -0
  492. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/eventloops.rst +0 -0
  493. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/autoreload.rst +0 -0
  494. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/index.rst +0 -0
  495. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/extensions/storemagic.rst +0 -0
  496. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/index.rst +0 -0
  497. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/intro.rst +0 -0
  498. /ipython-8.28.0/examples/IPython Kernel/nbpackage/__init__.py → /ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
  499. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/options/index.rst +0 -0
  500. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  501. {ipython-8.28.0 → ipython-8.30.0}/docs/source/config/shortcuts/index.rst +0 -0
  502. {ipython-8.28.0 → ipython-8.30.0}/docs/source/coredev/index.rst +0 -0
  503. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/config.rst +0 -0
  504. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/execution.rst +0 -0
  505. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  506. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  507. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.png +0 -0
  508. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.svg +0 -0
  509. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/how_ipython_works.rst +0 -0
  510. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/index.rst +0 -0
  511. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/inputhook_app.rst +0 -0
  512. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/kernels.rst +0 -0
  513. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/lexer.rst +0 -0
  514. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/messaging.rst +0 -0
  515. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/pycompat.rst +0 -0
  516. {ipython-8.28.0 → ipython-8.30.0}/docs/source/development/wrapperkernels.rst +0 -0
  517. {ipython-8.28.0 → ipython-8.30.0}/docs/source/index.rst +0 -0
  518. {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/index.rst +0 -0
  519. {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/install.rst +0 -0
  520. {ipython-8.28.0 → ipython-8.30.0}/docs/source/install/kernel_install.rst +0 -0
  521. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/autoawait.rst +0 -0
  522. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/besselj.png +0 -0
  523. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  524. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.html +0 -0
  525. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  526. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/index.rst +0 -0
  527. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/plotting.rst +0 -0
  528. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  529. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/reference.rst +0 -0
  530. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/shell.rst +0 -0
  531. {ipython-8.28.0 → ipython-8.30.0}/docs/source/interactive/tips.rst +0 -0
  532. {ipython-8.28.0 → ipython-8.30.0}/docs/source/links.txt +0 -0
  533. {ipython-8.28.0 → ipython-8.30.0}/docs/source/overview.rst +0 -0
  534. {ipython-8.28.0 → ipython-8.30.0}/docs/source/parallel/index.rst +0 -0
  535. {ipython-8.28.0 → ipython-8.30.0}/docs/source/sphinx.toml +0 -0
  536. {ipython-8.28.0 → ipython-8.30.0}/docs/source/sphinxext.rst +0 -0
  537. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/development.rst +0 -0
  538. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  539. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  540. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  541. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  542. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  543. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  544. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  545. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  546. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  547. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  548. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  549. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/index.rst +0 -0
  550. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/README.md +0 -0
  551. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  552. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  553. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.10.rst +0 -0
  554. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.11.rst +0 -0
  555. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.12.rst +0 -0
  556. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.13.rst +0 -0
  557. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version0.8.rst +0 -0
  558. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version1.0.rst +0 -0
  559. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version2.0.rst +0 -0
  560. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version3.rst +0 -0
  561. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  562. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version4.rst +0 -0
  563. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version5.rst +0 -0
  564. {ipython-8.28.0 → ipython-8.30.0}/docs/source/whatsnew/version6.rst +0 -0
  565. {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/apigen.py +0 -0
  566. {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/configtraits.py +0 -0
  567. {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/github.py +0 -0
  568. {ipython-8.28.0 → ipython-8.30.0}/docs/sphinxext/magics.py +0 -0
  569. {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/Index.ipynb +0 -0
  570. {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_class_long.py +0 -0
  571. {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_class_short.py +0 -0
  572. {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/embed_function.py +0 -0
  573. {ipython-8.28.0 → ipython-8.30.0}/examples/Embedding/start_ipython_config.py +0 -0
  574. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  575. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  576. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  577. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  578. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  579. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  580. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  581. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Index.ipynb +0 -0
  582. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  583. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  584. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  585. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  586. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  587. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  588. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  589. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  590. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  591. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/data/flare.json +0 -0
  592. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/example-demo.py +0 -0
  593. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  594. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  595. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  596. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  597. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  598. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/ipython.desktop +0 -0
  599. {ipython-8.28.0/examples/IPython Kernel/nbpackage/nbs → ipython-8.30.0/examples/IPython Kernel/nbpackage}/__init__.py +0 -0
  600. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  601. {ipython-8.28.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  602. {ipython-8.28.0 → ipython-8.30.0}/examples/Index.ipynb +0 -0
  603. {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  604. {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  605. {ipython-8.28.0 → ipython-8.30.0}/examples/images/FrontendKernel.png +0 -0
  606. {ipython-8.28.0 → ipython-8.30.0}/examples/images/animation.m4v +0 -0
  607. {ipython-8.28.0 → ipython-8.30.0}/examples/images/ipython_logo.png +0 -0
  608. {ipython-8.28.0 → ipython-8.30.0}/examples/images/python_logo.svg +0 -0
  609. {ipython-8.28.0 → ipython-8.30.0}/examples/utils/cwd_prompt.py +0 -0
  610. {ipython-8.28.0 → ipython-8.30.0}/examples/utils/list_pyfiles.ipy +0 -0
  611. {ipython-8.28.0 → ipython-8.30.0}/examples/utils/list_subdirs.ipy +0 -0
  612. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/dependency_links.txt +0 -0
  613. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/entry_points.txt +0 -0
  614. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/not-zip-safe +0 -0
  615. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/requires.txt +0 -0
  616. {ipython-8.28.0 → ipython-8.30.0}/ipython.egg-info/top_level.txt +0 -0
  617. {ipython-8.28.0 → ipython-8.30.0}/long_description.rst +0 -0
  618. {ipython-8.28.0 → ipython-8.30.0}/scripts/ipython.ico +0 -0
  619. {ipython-8.28.0 → ipython-8.30.0}/scripts/ipython_nb.ico +0 -0
  620. {ipython-8.28.0 → ipython-8.30.0}/setup.cfg +0 -0
  621. {ipython-8.28.0 → ipython-8.30.0}/setup.py +0 -0
@@ -159,7 +159,7 @@ By default results from all matchers are combined, in the order determined by
159
159
  their priority. Matchers can request to suppress results from subsequent
160
160
  matchers by setting ``suppress`` to ``True`` in the ``MatcherResult``.
161
161
 
162
- When multiple matchers simultaneously request surpression, the results from of
162
+ When multiple matchers simultaneously request suppression, the results from of
163
163
  the matcher with higher priority will be returned.
164
164
 
165
165
  Sometimes it is desirable to suppress most but not all other matchers;
@@ -1362,9 +1362,9 @@ def match_dict_keys(
1362
1362
  # All checks passed!
1363
1363
  return True
1364
1364
 
1365
- filtered_key_is_final: Dict[
1366
- Union[str, bytes, int, float], _DictKeyState
1367
- ] = defaultdict(lambda: _DictKeyState.BASELINE)
1365
+ filtered_key_is_final: Dict[Union[str, bytes, int, float], _DictKeyState] = (
1366
+ defaultdict(lambda: _DictKeyState.BASELINE)
1367
+ )
1368
1368
 
1369
1369
  for k in keys:
1370
1370
  # If at least one of the matches is not final, mark as undetermined.
@@ -2651,7 +2651,7 @@ class IPCompleter(Completer):
2651
2651
  )
2652
2652
  can_close_quote = can_close_quote and self.auto_close_dict_keys
2653
2653
 
2654
- # fast path if closing qoute should be appended but not suffix is allowed
2654
+ # fast path if closing quote should be appended but not suffix is allowed
2655
2655
  if not can_close_quote and not can_close_bracket and closing_quote:
2656
2656
  return [leading + k for k in matches]
2657
2657
 
@@ -167,7 +167,7 @@ def is_possible_submodule(module, attr):
167
167
  try:
168
168
  obj = getattr(module, attr)
169
169
  except AttributeError:
170
- # Is possilby an unimported submodule
170
+ # Is possibly an unimported submodule
171
171
  return True
172
172
  except TypeError:
173
173
  # https://github.com/ipython/ipython/issues/9678
@@ -24,14 +24,17 @@ import traceback
24
24
  from pprint import pformat
25
25
  from pathlib import Path
26
26
 
27
+ import builtins as builtin_mod
28
+
27
29
  from IPython.core import ultratb
30
+ from IPython.core.application import Application
28
31
  from IPython.core.release import author_email
29
32
  from IPython.utils.sysinfo import sys_info
30
- from IPython.utils.py3compat import input
31
33
 
32
34
  from IPython.core.release import __version__ as version
33
35
 
34
- from typing import Optional
36
+ from typing import Optional, Dict
37
+ import types
35
38
 
36
39
  #-----------------------------------------------------------------------------
37
40
  # Code
@@ -84,7 +87,7 @@ Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
84
87
  """
85
88
 
86
89
 
87
- class CrashHandler(object):
90
+ class CrashHandler:
88
91
  """Customizable crash handlers for IPython applications.
89
92
 
90
93
  Instances of this class provide a :meth:`__call__` method which can be
@@ -95,10 +98,11 @@ class CrashHandler(object):
95
98
 
96
99
  message_template = _default_message_template
97
100
  section_sep = '\n\n'+'*'*75+'\n\n'
101
+ info: Dict[str, Optional[str]]
98
102
 
99
103
  def __init__(
100
104
  self,
101
- app,
105
+ app: Application,
102
106
  contact_name: Optional[str] = None,
103
107
  contact_email: Optional[str] = None,
104
108
  bug_tracker: Optional[str] = None,
@@ -142,10 +146,14 @@ class CrashHandler(object):
142
146
  bug_tracker = bug_tracker,
143
147
  crash_report_fname = self.crash_report_fname)
144
148
 
145
-
146
- def __call__(self, etype, evalue, etb):
149
+ def __call__(
150
+ self,
151
+ etype: type[BaseException],
152
+ evalue: BaseException,
153
+ etb: types.TracebackType,
154
+ ) -> None:
147
155
  """Handle an exception, call for compatible with sys.excepthook"""
148
-
156
+
149
157
  # do not allow the crash handler to be called twice without reinstalling it
150
158
  # this prevents unlikely errors in the crash handling from entering an
151
159
  # infinite loop.
@@ -155,21 +163,23 @@ class CrashHandler(object):
155
163
  color_scheme = 'NoColor'
156
164
 
157
165
  # Use this ONLY for developer debugging (keep commented out for release)
158
- #color_scheme = 'Linux' # dbg
159
- try:
160
- rptdir = self.app.ipython_dir
161
- except:
166
+ # color_scheme = 'Linux' # dbg
167
+ ipython_dir = getattr(self.app, "ipython_dir", None)
168
+ if ipython_dir is not None:
169
+ assert isinstance(ipython_dir, str)
170
+ rptdir = Path(ipython_dir)
171
+ else:
162
172
  rptdir = Path.cwd()
163
- if rptdir is None or not Path.is_dir(rptdir):
173
+ if not rptdir.is_dir():
164
174
  rptdir = Path.cwd()
165
175
  report_name = rptdir / self.crash_report_fname
166
176
  # write the report filename into the instance dict so it can get
167
177
  # properly expanded out in the user message template
168
- self.crash_report_fname = report_name
169
- self.info['crash_report_fname'] = report_name
178
+ self.crash_report_fname = str(report_name)
179
+ self.info["crash_report_fname"] = str(report_name)
170
180
  TBhandler = ultratb.VerboseTB(
171
181
  color_scheme=color_scheme,
172
- long_header=1,
182
+ long_header=True,
173
183
  call_pdb=self.call_pdb,
174
184
  )
175
185
  if self.call_pdb:
@@ -195,11 +205,11 @@ class CrashHandler(object):
195
205
  print(self.message_template.format(**self.info), file=sys.stderr)
196
206
 
197
207
  # Construct report on disk
198
- report.write(self.make_report(traceback))
208
+ report.write(self.make_report(str(traceback)))
199
209
 
200
- input("Hit <Enter> to quit (your terminal may close):")
210
+ builtin_mod.input("Hit <Enter> to quit (your terminal may close):")
201
211
 
202
- def make_report(self,traceback):
212
+ def make_report(self, traceback: str) -> str:
203
213
  """Return a string containing a crash report."""
204
214
 
205
215
  sec_sep = self.section_sep
@@ -211,8 +221,8 @@ class CrashHandler(object):
211
221
  try:
212
222
  config = pformat(self.app.config)
213
223
  rpt_add(sec_sep)
214
- rpt_add('Application name: %s\n\n' % self.app_name)
215
- rpt_add('Current user configuration structure:\n\n')
224
+ rpt_add("Application name: %s\n\n" % self.app.name)
225
+ rpt_add("Current user configuration structure:\n\n")
216
226
  rpt_add(config)
217
227
  except:
218
228
  pass
@@ -221,7 +231,9 @@ class CrashHandler(object):
221
231
  return ''.join(report)
222
232
 
223
233
 
224
- def crash_handler_lite(etype, evalue, tb):
234
+ def crash_handler_lite(
235
+ etype: type[BaseException], evalue: BaseException, tb: types.TracebackType
236
+ ) -> None:
225
237
  """a light excepthook, adding a small message to the usual traceback"""
226
238
  traceback.print_exception(etype, evalue, tb)
227
239
 
@@ -19,7 +19,7 @@ Global Configuration
19
19
  --------------------
20
20
 
21
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`
22
+ That is to say you can list all commands supported by ipdb in your `~/.pdbrc`
23
23
  configuration file, to globally configure pdb.
24
24
 
25
25
  Example::
@@ -177,7 +177,7 @@ def BdbQuit_excepthook(et, ev, tb, excepthook=None):
177
177
  parameter.
178
178
  """
179
179
  raise ValueError(
180
- "`BdbQuit_excepthook` is deprecated since version 5.1. It is still arround only because it is still imported by ipdb.",
180
+ "`BdbQuit_excepthook` is deprecated since version 5.1. It is still around only because it is still imported by ipdb.",
181
181
  )
182
182
 
183
183
 
@@ -16,18 +16,41 @@ from copy import deepcopy
16
16
  from os.path import splitext
17
17
  from pathlib import Path, PurePath
18
18
 
19
- from IPython.utils.py3compat import cast_unicode
19
+ from typing import Optional
20
+
20
21
  from IPython.testing.skipdoctest import skip_doctest
21
22
  from . import display_functions
22
23
 
23
24
 
24
- __all__ = ['display_pretty', 'display_html', 'display_markdown',
25
- 'display_svg', 'display_png', 'display_jpeg', 'display_latex', 'display_json',
26
- 'display_javascript', 'display_pdf', 'DisplayObject', 'TextDisplayObject',
27
- 'Pretty', 'HTML', 'Markdown', 'Math', 'Latex', 'SVG', 'ProgressBar', 'JSON',
28
- 'GeoJSON', 'Javascript', 'Image', 'set_matplotlib_formats',
29
- 'set_matplotlib_close',
30
- 'Video']
25
+ __all__ = [
26
+ "display_pretty",
27
+ "display_html",
28
+ "display_markdown",
29
+ "display_svg",
30
+ "display_png",
31
+ "display_jpeg",
32
+ "display_webp",
33
+ "display_latex",
34
+ "display_json",
35
+ "display_javascript",
36
+ "display_pdf",
37
+ "DisplayObject",
38
+ "TextDisplayObject",
39
+ "Pretty",
40
+ "HTML",
41
+ "Markdown",
42
+ "Math",
43
+ "Latex",
44
+ "SVG",
45
+ "ProgressBar",
46
+ "JSON",
47
+ "GeoJSON",
48
+ "Javascript",
49
+ "Image",
50
+ "set_matplotlib_formats",
51
+ "set_matplotlib_close",
52
+ "Video",
53
+ ]
31
54
 
32
55
  _deprecated_names = ["display", "clear_output", "publish_display_data", "update_display", "DisplayHandle"]
33
56
 
@@ -200,6 +223,23 @@ def display_jpeg(*objs, **kwargs):
200
223
  _display_mimetype('image/jpeg', objs, **kwargs)
201
224
 
202
225
 
226
+ def display_webp(*objs, **kwargs):
227
+ """Display the WEBP representation of an object.
228
+
229
+ Parameters
230
+ ----------
231
+ *objs : object
232
+ The Python objects to display, or if raw=True raw JPEG data to
233
+ display.
234
+ raw : bool
235
+ Are the data objects raw data or Python objects that need to be
236
+ formatted before display? [default: False]
237
+ metadata : dict (optional)
238
+ Metadata to be associated with the specific mimetype output.
239
+ """
240
+ _display_mimetype("image/webp", objs, **kwargs)
241
+
242
+
203
243
  def display_latex(*objs, **kwargs):
204
244
  """Display the LaTeX representation of an object.
205
245
 
@@ -479,7 +519,7 @@ class SVG(DisplayObject):
479
519
  _read_flags = 'rb'
480
520
  # wrap data in a property, which extracts the <svg> tag, discarding
481
521
  # document headers
482
- _data = None
522
+ _data: Optional[str] = None
483
523
 
484
524
  @property
485
525
  def data(self):
@@ -501,8 +541,10 @@ class SVG(DisplayObject):
501
541
  # fallback on the input, trust the user
502
542
  # but this is probably an error.
503
543
  pass
504
- svg = cast_unicode(svg)
505
- self._data = svg
544
+ if isinstance(svg, bytes):
545
+ self._data = svg.decode(errors="replace")
546
+ else:
547
+ self._data = svg
506
548
 
507
549
  def _repr_svg_(self):
508
550
  return self._data_and_metadata()
@@ -776,9 +818,14 @@ class Javascript(TextDisplayObject):
776
818
  r += _lib_t2*len(self.lib)
777
819
  return r
778
820
 
779
- # constants for identifying png/jpeg data
780
- _PNG = b'\x89PNG\r\n\x1a\n'
781
- _JPEG = b'\xff\xd8'
821
+
822
+ # constants for identifying png/jpeg/gif/webp data
823
+ _PNG = b"\x89PNG\r\n\x1a\n"
824
+ _JPEG = b"\xff\xd8"
825
+ _GIF1 = b"GIF87a"
826
+ _GIF2 = b"GIF89a"
827
+ _WEBP = b"WEBP"
828
+
782
829
 
783
830
  def _pngxy(data):
784
831
  """read the (width, height) from a PNG header"""
@@ -786,6 +833,7 @@ def _pngxy(data):
786
833
  # next 8 bytes are width/height
787
834
  return struct.unpack('>ii', data[ihdr+4:ihdr+12])
788
835
 
836
+
789
837
  def _jpegxy(data):
790
838
  """read the (width, height) from a JPEG header"""
791
839
  # adapted from http://www.64lines.com/jpeg-width-height
@@ -805,22 +853,45 @@ def _jpegxy(data):
805
853
  h, w = struct.unpack('>HH', data[iSOF+5:iSOF+9])
806
854
  return w, h
807
855
 
856
+
808
857
  def _gifxy(data):
809
858
  """read the (width, height) from a GIF header"""
810
859
  return struct.unpack('<HH', data[6:10])
811
860
 
812
861
 
862
+ def _webpxy(data):
863
+ """read the (width, height) from a WEBP header"""
864
+ if data[12:16] == b"VP8 ":
865
+ width, height = struct.unpack("<HH", data[24:30])
866
+ width = width & 0x3FFF
867
+ height = height & 0x3FFF
868
+ return (width, height)
869
+ elif data[12:16] == b"VP8L":
870
+ size_info = struct.unpack("<I", data[21:25])[0]
871
+ width = 1 + ((size_info & 0x3F) << 8) | (size_info >> 24)
872
+ height = 1 + (
873
+ (((size_info >> 8) & 0xF) << 10)
874
+ | (((size_info >> 14) & 0x3FC) << 2)
875
+ | ((size_info >> 22) & 0x3)
876
+ )
877
+ return (width, height)
878
+ else:
879
+ raise ValueError("Not a valid WEBP header")
880
+
881
+
813
882
  class Image(DisplayObject):
814
883
 
815
- _read_flags = 'rb'
816
- _FMT_JPEG = u'jpeg'
817
- _FMT_PNG = u'png'
818
- _FMT_GIF = u'gif'
819
- _ACCEPTABLE_EMBEDDINGS = [_FMT_JPEG, _FMT_PNG, _FMT_GIF]
884
+ _read_flags = "rb"
885
+ _FMT_JPEG = "jpeg"
886
+ _FMT_PNG = "png"
887
+ _FMT_GIF = "gif"
888
+ _FMT_WEBP = "webp"
889
+ _ACCEPTABLE_EMBEDDINGS = [_FMT_JPEG, _FMT_PNG, _FMT_GIF, _FMT_WEBP]
820
890
  _MIMETYPES = {
821
- _FMT_PNG: 'image/png',
822
- _FMT_JPEG: 'image/jpeg',
823
- _FMT_GIF: 'image/gif',
891
+ _FMT_PNG: "image/png",
892
+ _FMT_JPEG: "image/jpeg",
893
+ _FMT_GIF: "image/gif",
894
+ _FMT_WEBP: "image/webp",
824
895
  }
825
896
 
826
897
  def __init__(
@@ -837,7 +908,7 @@ class Image(DisplayObject):
837
908
  metadata=None,
838
909
  alt=None,
839
910
  ):
840
- """Create a PNG/JPEG/GIF image object given raw data.
911
+ """Create a PNG/JPEG/GIF/WEBP image object given raw data.
841
912
 
842
913
  When this object is returned by an input cell or passed to the
843
914
  display function, it will result in the image being displayed
@@ -858,7 +929,7 @@ class Image(DisplayObject):
858
929
  Images from a file are always embedded.
859
930
 
860
931
  format : unicode
861
- The format of the image data (png/jpeg/jpg/gif). If a filename or URL is given
932
+ The format of the image data (png/jpeg/jpg/gif/webp). If a filename or URL is given
862
933
  for format will be inferred from the filename extension.
863
934
 
864
935
  embed : bool
@@ -942,6 +1013,8 @@ class Image(DisplayObject):
942
1013
  format = self._FMT_PNG
943
1014
  elif ext == u'gif':
944
1015
  format = self._FMT_GIF
1016
+ elif ext == "webp":
1017
+ format = self._FMT_WEBP
945
1018
  else:
946
1019
  format = ext.lower()
947
1020
  elif isinstance(data, bytes):
@@ -949,6 +1022,12 @@ class Image(DisplayObject):
949
1022
  # only if format has not been specified.
950
1023
  if data[:2] == _JPEG:
951
1024
  format = self._FMT_JPEG
1025
+ elif data[:8] == _PNG:
1026
+ format = self._FMT_PNG
1027
+ elif data[8:12] == _WEBP:
1028
+ format = self._FMT_WEBP
1029
+ elif data[:6] == _GIF1 or data[:6] == _GIF2:
1030
+ format = self._FMT_GIF
952
1031
 
953
1032
  # failed to detect format, default png
954
1033
  if format is None: