ipython 8.29.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.29.0 → ipython-8.30.0}/IPython/core/completer.py +3 -3
  2. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/crashhandler.py +33 -21
  3. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display.py +7 -4
  4. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/formatters.py +92 -33
  5. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/guarded_eval.py +6 -9
  6. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputsplitter.py +1 -0
  7. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputtransformer2.py +4 -1
  8. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/basic.py +2 -2
  9. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/logging.py +2 -2
  10. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/prompts.py +3 -1
  11. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/release.py +1 -1
  12. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/nonascii2.py +2 -2
  13. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_formatters.py +1 -2
  14. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2.py +1 -0
  15. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_interactiveshell.py +1 -1
  16. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_logger.py +1 -1
  17. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic.py +2 -2
  18. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_paths.py +10 -8
  19. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_run.py +3 -3
  20. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_ultratb.py +4 -3
  21. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/test_storemagic.py +29 -24
  22. {ipython-8.29.0 → ipython-8.30.0}/IPython/external/qt_loaders.py +1 -0
  23. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/__init__.py +2 -2
  24. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/clipboard.py +1 -0
  25. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/latextools.py +4 -4
  26. {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/custom_doctests.py +1 -1
  27. {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/ipython_directive.py +16 -14
  28. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/interactiveshell.py +21 -12
  29. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/__init__.py +8 -0
  30. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_match.py +1 -0
  31. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/__init__.py +2 -2
  32. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_cli.py +3 -1
  33. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_win32.py +1 -1
  34. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_sysinfo.py +1 -1
  35. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/dir2.py +2 -2
  36. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/sysinfo.py +1 -1
  37. {ipython-8.29.0/ipython.egg-info → ipython-8.30.0}/PKG-INFO +1 -1
  38. ipython-8.30.0/docs/source/api/generated/IPython.conftest.rst +28 -0
  39. ipython-8.30.0/docs/source/api/generated/IPython.core.alias.rst +36 -0
  40. ipython-8.30.0/docs/source/api/generated/IPython.core.application.rst +20 -0
  41. ipython-8.30.0/docs/source/api/generated/IPython.core.async_helpers.rst +13 -0
  42. ipython-8.30.0/docs/source/api/generated/IPython.core.autocall.rst +24 -0
  43. ipython-8.30.0/docs/source/api/generated/IPython.core.builtin_trap.rst +16 -0
  44. ipython-8.30.0/docs/source/api/generated/IPython.core.compilerop.rst +25 -0
  45. ipython-8.30.0/docs/source/api/generated/IPython.core.completer.rst +113 -0
  46. ipython-8.30.0/docs/source/api/generated/IPython.core.completerlib.rst +43 -0
  47. ipython-8.30.0/docs/source/api/generated/IPython.core.crashhandler.rst +22 -0
  48. ipython-8.30.0/docs/source/api/generated/IPython.core.debugger.rst +38 -0
  49. ipython-8.30.0/docs/source/api/generated/IPython.core.error.rst +30 -0
  50. ipython-8.30.0/docs/source/api/generated/IPython.core.events.rst +34 -0
  51. ipython-8.30.0/docs/source/api/generated/IPython.core.excolors.rst +13 -0
  52. ipython-8.30.0/docs/source/api/generated/IPython.core.extensions.rst +16 -0
  53. ipython-8.30.0/docs/source/api/generated/IPython.core.formatters.rst +83 -0
  54. ipython-8.30.0/docs/source/api/generated/IPython.core.getipython.rst +13 -0
  55. ipython-8.30.0/docs/source/api/generated/IPython.core.guarded_eval.rst +31 -0
  56. ipython-8.30.0/docs/source/api/generated/IPython.core.history.rst +44 -0
  57. ipython-8.30.0/docs/source/api/generated/IPython.core.historyapp.rst +22 -0
  58. ipython-8.30.0/docs/source/api/generated/IPython.core.hooks.rst +34 -0
  59. ipython-8.30.0/docs/source/api/generated/IPython.core.inputsplitter.rst +58 -0
  60. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer.rst +74 -0
  61. ipython-8.30.0/docs/source/api/generated/IPython.core.inputtransformer2.rst +88 -0
  62. ipython-8.30.0/docs/source/api/generated/IPython.core.interactiveshell.rst +59 -0
  63. ipython-8.30.0/docs/source/api/generated/IPython.core.logger.rst +16 -0
  64. ipython-8.30.0/docs/source/api/generated/IPython.core.macro.rst +16 -0
  65. ipython-8.30.0/docs/source/api/generated/IPython.core.magic.rst +59 -0
  66. ipython-8.30.0/docs/source/api/generated/IPython.core.magic_arguments.rst +62 -0
  67. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.ast_mod.rst +22 -0
  68. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.auto.rst +16 -0
  69. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.basic.rst +24 -0
  70. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.code.rst +38 -0
  71. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.display.rst +14 -0
  72. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.execution.rst +38 -0
  73. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.extension.rst +14 -0
  74. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.history.rst +14 -0
  75. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.logging.rst +14 -0
  76. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.namespace.rst +14 -0
  77. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.osm.rst +16 -0
  78. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.packaging.rst +20 -0
  79. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.pylab.rst +14 -0
  80. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.rst +14 -0
  81. ipython-8.30.0/docs/source/api/generated/IPython.core.magics.script.rst +22 -0
  82. ipython-8.30.0/docs/source/api/generated/IPython.core.oinspect.rst +52 -0
  83. ipython-8.30.0/docs/source/api/generated/IPython.core.page.rst +37 -0
  84. ipython-8.30.0/docs/source/api/generated/IPython.core.payload.rst +14 -0
  85. ipython-8.30.0/docs/source/api/generated/IPython.core.payloadpage.rst +16 -0
  86. ipython-8.30.0/docs/source/api/generated/IPython.core.prefilter.rst +88 -0
  87. ipython-8.30.0/docs/source/api/generated/IPython.core.profileapp.rst +35 -0
  88. ipython-8.30.0/docs/source/api/generated/IPython.core.profiledir.rst +18 -0
  89. ipython-8.30.0/docs/source/api/generated/IPython.core.prompts.rst +16 -0
  90. ipython-8.30.0/docs/source/api/generated/IPython.core.pylabtools.rst +40 -0
  91. ipython-8.30.0/docs/source/api/generated/IPython.core.shellapp.rst +20 -0
  92. ipython-8.30.0/docs/source/api/generated/IPython.core.splitinput.rst +22 -0
  93. ipython-8.30.0/docs/source/api/generated/IPython.core.ultratb.rst +72 -0
  94. ipython-8.30.0/docs/source/api/generated/IPython.display.rst +187 -0
  95. ipython-8.30.0/docs/source/api/generated/IPython.lib.backgroundjobs.rst +34 -0
  96. ipython-8.30.0/docs/source/api/generated/IPython.lib.clipboard.rst +29 -0
  97. ipython-8.30.0/docs/source/api/generated/IPython.lib.deepreload.rst +37 -0
  98. ipython-8.30.0/docs/source/api/generated/IPython.lib.demo.rst +53 -0
  99. ipython-8.30.0/docs/source/api/generated/IPython.lib.editorhooks.rst +43 -0
  100. ipython-8.30.0/docs/source/api/generated/IPython.lib.guisupport.rst +28 -0
  101. ipython-8.30.0/docs/source/api/generated/IPython.lib.latextools.rst +35 -0
  102. ipython-8.30.0/docs/source/api/generated/IPython.lib.lexers.rst +38 -0
  103. ipython-8.30.0/docs/source/api/generated/IPython.lib.pretty.rst +83 -0
  104. ipython-8.30.0/docs/source/api/generated/IPython.paths.rst +25 -0
  105. ipython-8.30.0/docs/source/api/generated/IPython.rst +22 -0
  106. ipython-8.30.0/docs/source/api/generated/IPython.terminal.debugger.rst +22 -0
  107. ipython-8.30.0/docs/source/api/generated/IPython.terminal.embed.rst +30 -0
  108. ipython-8.30.0/docs/source/api/generated/IPython.terminal.interactiveshell.rst +34 -0
  109. ipython-8.30.0/docs/source/api/generated/IPython.terminal.ipapp.rst +30 -0
  110. ipython-8.30.0/docs/source/api/generated/IPython.terminal.magics.rst +22 -0
  111. ipython-8.30.0/docs/source/api/generated/IPython.terminal.prompts.rst +24 -0
  112. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +46 -0
  113. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +67 -0
  114. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +58 -0
  115. ipython-8.30.0/docs/source/api/generated/IPython.terminal.shortcuts.rst +76 -0
  116. ipython-8.30.0/docs/source/api/generated/IPython.testing.decorators.rst +28 -0
  117. ipython-8.30.0/docs/source/api/generated/IPython.testing.globalipapp.rst +19 -0
  118. ipython-8.30.0/docs/source/api/generated/IPython.testing.ipunittest.rst +31 -0
  119. ipython-8.30.0/docs/source/api/generated/IPython.testing.skipdoctest.rst +13 -0
  120. ipython-8.30.0/docs/source/api/generated/IPython.testing.tools.rst +66 -0
  121. ipython-8.30.0/docs/source/api/generated/IPython.utils.PyColorize.rst +16 -0
  122. ipython-8.30.0/docs/source/api/generated/IPython.utils.capture.rst +28 -0
  123. ipython-8.30.0/docs/source/api/generated/IPython.utils.colorable.rst +14 -0
  124. ipython-8.30.0/docs/source/api/generated/IPython.utils.coloransi.rst +40 -0
  125. ipython-8.30.0/docs/source/api/generated/IPython.utils.contexts.rst +16 -0
  126. ipython-8.30.0/docs/source/api/generated/IPython.utils.data.rst +16 -0
  127. ipython-8.30.0/docs/source/api/generated/IPython.utils.decorators.rst +19 -0
  128. ipython-8.30.0/docs/source/api/generated/IPython.utils.dir2.rst +19 -0
  129. ipython-8.30.0/docs/source/api/generated/IPython.utils.encoding.rst +16 -0
  130. ipython-8.30.0/docs/source/api/generated/IPython.utils.frame.rst +22 -0
  131. ipython-8.30.0/docs/source/api/generated/IPython.utils.generics.rst +16 -0
  132. ipython-8.30.0/docs/source/api/generated/IPython.utils.importstring.rst +13 -0
  133. ipython-8.30.0/docs/source/api/generated/IPython.utils.io.rst +25 -0
  134. ipython-8.30.0/docs/source/api/generated/IPython.utils.ipstruct.rst +16 -0
  135. ipython-8.30.0/docs/source/api/generated/IPython.utils.module_paths.rst +13 -0
  136. ipython-8.30.0/docs/source/api/generated/IPython.utils.openpy.rst +22 -0
  137. ipython-8.30.0/docs/source/api/generated/IPython.utils.path.rst +62 -0
  138. ipython-8.30.0/docs/source/api/generated/IPython.utils.process.rst +23 -0
  139. ipython-8.30.0/docs/source/api/generated/IPython.utils.sentinel.rst +16 -0
  140. ipython-8.30.0/docs/source/api/generated/IPython.utils.shimmodule.rst +26 -0
  141. ipython-8.30.0/docs/source/api/generated/IPython.utils.strdispatch.rst +16 -0
  142. ipython-8.30.0/docs/source/api/generated/IPython.utils.sysinfo.rst +25 -0
  143. ipython-8.30.0/docs/source/api/generated/IPython.utils.syspathcontext.rst +22 -0
  144. ipython-8.30.0/docs/source/api/generated/IPython.utils.tempdir.rst +20 -0
  145. ipython-8.30.0/docs/source/api/generated/IPython.utils.terminal.rst +25 -0
  146. ipython-8.30.0/docs/source/api/generated/IPython.utils.text.rst +69 -0
  147. ipython-8.30.0/docs/source/api/generated/IPython.utils.timing.rst +31 -0
  148. ipython-8.30.0/docs/source/api/generated/IPython.utils.tokenutil.rst +22 -0
  149. ipython-8.30.0/docs/source/api/generated/IPython.utils.tz.rst +20 -0
  150. ipython-8.30.0/docs/source/api/generated/IPython.utils.ulinecache.rst +13 -0
  151. ipython-8.30.0/docs/source/api/generated/IPython.utils.wildcard.rst +28 -0
  152. ipython-8.30.0/docs/source/api/generated/gen.txt +119 -0
  153. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/inputtransforms.rst +1 -1
  154. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/integrating.rst +4 -2
  155. ipython-8.30.0/docs/source/config/options/kernel.rst +1554 -0
  156. ipython-8.30.0/docs/source/config/options/terminal.rst +1975 -0
  157. ipython-8.30.0/docs/source/config/shortcuts/table.tsv +79 -0
  158. ipython-8.30.0/docs/source/interactive/magics-generated.txt +2506 -0
  159. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/magics.rst +1 -1
  160. ipython-8.30.0/docs/source/savefig/hist_simple.png +0 -0
  161. ipython-8.30.0/docs/source/savefig/hist_with_text.png +0 -0
  162. ipython-8.30.0/docs/source/savefig/plot_simple.png +0 -0
  163. ipython-8.30.0/docs/source/savefig/plot_simple_python.png +0 -0
  164. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version8.rst +91 -50
  165. ipython-8.30.0/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  166. {ipython-8.29.0 → ipython-8.30.0/ipython.egg-info}/PKG-INFO +1 -1
  167. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/SOURCES.txt +124 -0
  168. {ipython-8.29.0 → ipython-8.30.0}/pyproject.toml +17 -5
  169. {ipython-8.29.0 → ipython-8.30.0}/.flake8 +0 -0
  170. {ipython-8.29.0 → ipython-8.30.0}/.mailmap +0 -0
  171. {ipython-8.29.0 → ipython-8.30.0}/.pre-commit-config.yaml +0 -0
  172. {ipython-8.29.0 → ipython-8.30.0}/COPYING.rst +0 -0
  173. {ipython-8.29.0 → ipython-8.30.0}/IPython/__init__.py +0 -0
  174. {ipython-8.29.0 → ipython-8.30.0}/IPython/__main__.py +0 -0
  175. {ipython-8.29.0 → ipython-8.30.0}/IPython/conftest.py +0 -0
  176. {ipython-8.29.0 → ipython-8.30.0}/IPython/consoleapp.py +0 -0
  177. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/__init__.py +0 -0
  178. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/alias.py +0 -0
  179. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/application.py +0 -0
  180. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/async_helpers.py +0 -0
  181. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/autocall.py +0 -0
  182. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/builtin_trap.py +0 -0
  183. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/compilerop.py +0 -0
  184. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/completerlib.py +0 -0
  185. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/debugger.py +0 -0
  186. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display_functions.py +0 -0
  187. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/display_trap.py +0 -0
  188. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/displayhook.py +0 -0
  189. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/displaypub.py +0 -0
  190. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/error.py +0 -0
  191. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/events.py +0 -0
  192. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/excolors.py +0 -0
  193. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/extensions.py +0 -0
  194. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/getipython.py +0 -0
  195. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/history.py +0 -0
  196. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/historyapp.py +0 -0
  197. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/hooks.py +0 -0
  198. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/inputtransformer.py +0 -0
  199. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/interactiveshell.py +0 -0
  200. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/latex_symbols.py +0 -0
  201. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/logger.py +0 -0
  202. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/macro.py +0 -0
  203. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magic.py +0 -0
  204. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magic_arguments.py +0 -0
  205. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/__init__.py +0 -0
  206. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/ast_mod.py +0 -0
  207. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/auto.py +0 -0
  208. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/code.py +0 -0
  209. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/config.py +0 -0
  210. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/display.py +0 -0
  211. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/execution.py +0 -0
  212. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/extension.py +0 -0
  213. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/history.py +0 -0
  214. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/namespace.py +0 -0
  215. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/osm.py +0 -0
  216. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/packaging.py +0 -0
  217. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/pylab.py +0 -0
  218. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/magics/script.py +0 -0
  219. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/oinspect.py +0 -0
  220. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/page.py +0 -0
  221. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/payload.py +0 -0
  222. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/payloadpage.py +0 -0
  223. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/prefilter.py +0 -0
  224. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profile/README_STARTUP +0 -0
  225. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profileapp.py +0 -0
  226. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/profiledir.py +0 -0
  227. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/pylabtools.py +0 -0
  228. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/shellapp.py +0 -0
  229. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/splitinput.py +0 -0
  230. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/2x2.jpg +0 -0
  231. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/2x2.png +0 -0
  232. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/__init__.py +0 -0
  233. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/bad_all.py +0 -0
  234. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  235. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/nonascii.py +0 -0
  236. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/print_argv.py +0 -0
  237. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/refbug.py +0 -0
  238. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/simpleerr.py +0 -0
  239. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/tclass.py +0 -0
  240. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_alias.py +0 -0
  241. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_application.py +0 -0
  242. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_async_helpers.py +0 -0
  243. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_autocall.py +0 -0
  244. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_compilerop.py +0 -0
  245. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_completer.py +0 -0
  246. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_completerlib.py +0 -0
  247. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_debugger.py +0 -0
  248. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_display.py +0 -0
  249. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_displayhook.py +0 -0
  250. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_events.py +0 -0
  251. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  252. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_extension.py +0 -0
  253. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  254. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_handlers.py +0 -0
  255. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_history.py +0 -0
  256. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_hooks.py +0 -0
  257. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_imports.py +0 -0
  258. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  259. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  260. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  261. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_iplib.py +0 -0
  262. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  263. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  264. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_oinspect.py +0 -0
  265. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_page.py +0 -0
  266. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_prefilter.py +0 -0
  267. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_profile.py +0 -0
  268. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_prompts.py +0 -0
  269. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_pylabtools.py +0 -0
  270. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_shellapp.py +0 -0
  271. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/tests/test_splitinput.py +0 -0
  272. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/ultratb.py +0 -0
  273. {ipython-8.29.0 → ipython-8.30.0}/IPython/core/usage.py +0 -0
  274. {ipython-8.29.0 → ipython-8.30.0}/IPython/display.py +0 -0
  275. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/__init__.py +0 -0
  276. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/autoreload.py +0 -0
  277. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/storemagic.py +0 -0
  278. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/__init__.py +0 -0
  279. {ipython-8.29.0 → ipython-8.30.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  280. {ipython-8.29.0 → ipython-8.30.0}/IPython/external/__init__.py +0 -0
  281. {ipython-8.29.0 → ipython-8.30.0}/IPython/external/qt_for_kernel.py +0 -0
  282. {ipython-8.29.0 → ipython-8.30.0}/IPython/external/tests/__init__.py +0 -0
  283. {ipython-8.29.0 → ipython-8.30.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  284. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/backgroundjobs.py +0 -0
  285. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/deepreload.py +0 -0
  286. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/demo.py +0 -0
  287. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/display.py +0 -0
  288. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/editorhooks.py +0 -0
  289. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/guisupport.py +0 -0
  290. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/lexers.py +0 -0
  291. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/pretty.py +0 -0
  292. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/__init__.py +0 -0
  293. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test.wav +0 -0
  294. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  295. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_clipboard.py +0 -0
  296. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_deepreload.py +0 -0
  297. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_display.py +0 -0
  298. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  299. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_imports.py +0 -0
  300. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_latextools.py +0 -0
  301. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_lexers.py +0 -0
  302. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_pretty.py +0 -0
  303. {ipython-8.29.0 → ipython-8.30.0}/IPython/lib/tests/test_pygments.py +0 -0
  304. {ipython-8.29.0 → ipython-8.30.0}/IPython/paths.py +0 -0
  305. {ipython-8.29.0 → ipython-8.30.0}/IPython/py.typed +0 -0
  306. {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/__init__.py +0 -0
  307. {ipython-8.29.0 → ipython-8.30.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  308. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/__init__.py +0 -0
  309. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/console.py +0 -0
  310. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/debugger.py +0 -0
  311. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/embed.py +0 -0
  312. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/ipapp.py +0 -0
  313. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/magics.py +0 -0
  314. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/prompts.py +0 -0
  315. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  316. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  317. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  318. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  319. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  320. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  321. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  322. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  323. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  324. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  325. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  326. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/ptutils.py +0 -0
  327. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/auto_suggest.py +0 -0
  328. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/shortcuts/filters.py +0 -0
  329. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/__init__.py +0 -0
  330. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  331. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_embed.py +0 -0
  332. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_help.py +0 -0
  333. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  334. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  335. {ipython-8.29.0 → ipython-8.30.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  336. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/__init__.py +0 -0
  337. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/decorators.py +0 -0
  338. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/globalipapp.py +0 -0
  339. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/ipunittest.py +0 -0
  340. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/Makefile +0 -0
  341. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/README.txt +0 -0
  342. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/__init__.py +0 -0
  343. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/dtexample.py +0 -0
  344. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  345. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  346. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/setup.py +0 -0
  347. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/simple.py +0 -0
  348. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/simplevars.py +0 -0
  349. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_combo.txt +0 -0
  350. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_example.txt +0 -0
  351. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  352. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  353. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/plugin/test_refs.py +0 -0
  354. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/skipdoctest.py +0 -0
  355. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_decorators.py +0 -0
  356. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  357. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tests/test_tools.py +0 -0
  358. {ipython-8.29.0 → ipython-8.30.0}/IPython/testing/tools.py +0 -0
  359. {ipython-8.29.0 → ipython-8.30.0}/IPython/tests/cve.py +0 -0
  360. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/PyColorize.py +0 -0
  361. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/__init__.py +0 -0
  362. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_common.py +0 -0
  363. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_emscripten.py +0 -0
  364. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_posix.py +0 -0
  365. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/_process_win32_controller.py +0 -0
  366. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/capture.py +0 -0
  367. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/colorable.py +0 -0
  368. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/coloransi.py +0 -0
  369. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/contexts.py +0 -0
  370. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/daemonize.py +0 -0
  371. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/data.py +0 -0
  372. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/decorators.py +0 -0
  373. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/docs.py +0 -0
  374. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/encoding.py +0 -0
  375. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/eventful.py +0 -0
  376. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/frame.py +0 -0
  377. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/generics.py +0 -0
  378. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/importstring.py +0 -0
  379. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/io.py +0 -0
  380. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/ipstruct.py +0 -0
  381. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/jsonutil.py +0 -0
  382. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/localinterfaces.py +0 -0
  383. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/log.py +0 -0
  384. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/module_paths.py +0 -0
  385. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/openpy.py +0 -0
  386. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/path.py +0 -0
  387. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/process.py +0 -0
  388. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/py3compat.py +0 -0
  389. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/sentinel.py +0 -0
  390. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/shimmodule.py +0 -0
  391. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/signatures.py +0 -0
  392. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/strdispatch.py +0 -0
  393. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/syspathcontext.py +0 -0
  394. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tempdir.py +0 -0
  395. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/terminal.py +0 -0
  396. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/__init__.py +0 -0
  397. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_capture.py +0 -0
  398. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_decorators.py +0 -0
  399. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_deprecated.py +0 -0
  400. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_dir2.py +0 -0
  401. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_imports.py +0 -0
  402. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_importstring.py +0 -0
  403. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_io.py +0 -0
  404. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_module_paths.py +0 -0
  405. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_openpy.py +0 -0
  406. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_path.py +0 -0
  407. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_process.py +0 -0
  408. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  409. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  410. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  411. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_tempdir.py +0 -0
  412. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_text.py +0 -0
  413. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  414. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tests/test_wildcard.py +0 -0
  415. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/text.py +0 -0
  416. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/timing.py +0 -0
  417. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tokenutil.py +0 -0
  418. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/traitlets.py +0 -0
  419. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/tz.py +0 -0
  420. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/ulinecache.py +0 -0
  421. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/version.py +0 -0
  422. {ipython-8.29.0 → ipython-8.30.0}/IPython/utils/wildcard.py +0 -0
  423. {ipython-8.29.0 → ipython-8.30.0}/LICENSE +0 -0
  424. {ipython-8.29.0 → ipython-8.30.0}/MANIFEST.in +0 -0
  425. {ipython-8.29.0 → ipython-8.30.0}/README.rst +0 -0
  426. {ipython-8.29.0 → ipython-8.30.0}/_build_meta.py +0 -0
  427. {ipython-8.29.0 → ipython-8.30.0}/docs/Makefile +0 -0
  428. {ipython-8.29.0 → ipython-8.30.0}/docs/README.rst +0 -0
  429. {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_api.py +0 -0
  430. {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_config.py +0 -0
  431. {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_magics.py +0 -0
  432. {ipython-8.29.0 → ipython-8.30.0}/docs/autogen_shortcuts.py +0 -0
  433. {ipython-8.29.0 → ipython-8.30.0}/docs/make.cmd +0 -0
  434. {ipython-8.29.0 → ipython-8.30.0}/docs/man/ipython.1 +0 -0
  435. {ipython-8.29.0 → ipython-8.30.0}/docs/requirements.txt +0 -0
  436. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/running-crop.png +0 -0
  437. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/running.png +0 -0
  438. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/treeview.png +0 -0
  439. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/user-interface.png +0 -0
  440. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/2.0/widgets.png +0 -0
  441. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  442. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  443. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  444. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  445. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  446. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  447. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  448. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  449. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  450. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  451. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  452. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/autosuggest.gif +0 -0
  453. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  454. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  455. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  456. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  457. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  458. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  459. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  460. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  461. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  462. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  463. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  464. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  465. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  466. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  467. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  468. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ms_visual_studio.png +0 -0
  469. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/notebook_specgram.png +0 -0
  470. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/ptshell_features.png +0 -0
  471. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/qtconsole.png +0 -0
  472. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  473. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_images/unicode_completion.png +0 -0
  474. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/favicon.ico +0 -0
  475. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/logo.png +0 -0
  476. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_static/theme_overrides.css +0 -0
  477. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_templates/breadcrumbs.html +0 -0
  478. {ipython-8.29.0 → ipython-8.30.0}/docs/source/_templates/notebook_redirect.html +0 -0
  479. {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/history.rst +0 -0
  480. {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/index.rst +0 -0
  481. {ipython-8.29.0 → ipython-8.30.0}/docs/source/about/license_and_copyright.rst +0 -0
  482. {ipython-8.29.0 → ipython-8.30.0}/docs/source/api/index.rst +0 -0
  483. {ipython-8.29.0 → ipython-8.30.0}/docs/source/conf.py +0 -0
  484. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/callbacks.rst +0 -0
  485. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/custommagics.rst +0 -0
  486. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/details.rst +0 -0
  487. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/eventloops.rst +0 -0
  488. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/autoreload.rst +0 -0
  489. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/index.rst +0 -0
  490. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/extensions/storemagic.rst +0 -0
  491. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/index.rst +0 -0
  492. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/intro.rst +0 -0
  493. /ipython-8.29.0/examples/IPython Kernel/nbpackage/__init__.py → /ipython-8.30.0/docs/source/config/options/config-generated.txt +0 -0
  494. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/options/index.rst +0 -0
  495. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  496. {ipython-8.29.0 → ipython-8.30.0}/docs/source/config/shortcuts/index.rst +0 -0
  497. {ipython-8.29.0 → ipython-8.30.0}/docs/source/coredev/index.rst +0 -0
  498. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/config.rst +0 -0
  499. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/execution.rst +0 -0
  500. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  501. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  502. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.png +0 -0
  503. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/figs/other_kernels.svg +0 -0
  504. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/how_ipython_works.rst +0 -0
  505. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/index.rst +0 -0
  506. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/inputhook_app.rst +0 -0
  507. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/kernels.rst +0 -0
  508. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/lexer.rst +0 -0
  509. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/messaging.rst +0 -0
  510. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/pycompat.rst +0 -0
  511. {ipython-8.29.0 → ipython-8.30.0}/docs/source/development/wrapperkernels.rst +0 -0
  512. {ipython-8.29.0 → ipython-8.30.0}/docs/source/index.rst +0 -0
  513. {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/index.rst +0 -0
  514. {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/install.rst +0 -0
  515. {ipython-8.29.0 → ipython-8.30.0}/docs/source/install/kernel_install.rst +0 -0
  516. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/autoawait.rst +0 -0
  517. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/besselj.png +0 -0
  518. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  519. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.html +0 -0
  520. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  521. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/index.rst +0 -0
  522. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/plotting.rst +0 -0
  523. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  524. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/reference.rst +0 -0
  525. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/shell.rst +0 -0
  526. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/tips.rst +0 -0
  527. {ipython-8.29.0 → ipython-8.30.0}/docs/source/interactive/tutorial.rst +0 -0
  528. {ipython-8.29.0 → ipython-8.30.0}/docs/source/links.txt +0 -0
  529. {ipython-8.29.0 → ipython-8.30.0}/docs/source/overview.rst +0 -0
  530. {ipython-8.29.0 → ipython-8.30.0}/docs/source/parallel/index.rst +0 -0
  531. {ipython-8.29.0 → ipython-8.30.0}/docs/source/sphinx.toml +0 -0
  532. {ipython-8.29.0 → ipython-8.30.0}/docs/source/sphinxext.rst +0 -0
  533. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/development.rst +0 -0
  534. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  535. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  536. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  537. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  538. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  539. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  540. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  541. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  542. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  543. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  544. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  545. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/index.rst +0 -0
  546. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/README.md +0 -0
  547. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  548. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  549. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.10.rst +0 -0
  550. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.11.rst +0 -0
  551. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.12.rst +0 -0
  552. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.13.rst +0 -0
  553. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.8.rst +0 -0
  554. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version0.9.rst +0 -0
  555. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version1.0.rst +0 -0
  556. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version2.0.rst +0 -0
  557. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version3.rst +0 -0
  558. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  559. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version4.rst +0 -0
  560. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version5.rst +0 -0
  561. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version6.rst +0 -0
  562. {ipython-8.29.0 → ipython-8.30.0}/docs/source/whatsnew/version7.rst +0 -0
  563. {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/apigen.py +0 -0
  564. {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/configtraits.py +0 -0
  565. {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/github.py +0 -0
  566. {ipython-8.29.0 → ipython-8.30.0}/docs/sphinxext/magics.py +0 -0
  567. {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/Index.ipynb +0 -0
  568. {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_class_long.py +0 -0
  569. {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_class_short.py +0 -0
  570. {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/embed_function.py +0 -0
  571. {ipython-8.29.0 → ipython-8.30.0}/examples/Embedding/start_ipython_config.py +0 -0
  572. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  573. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  574. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  575. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  576. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  577. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  578. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  579. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Index.ipynb +0 -0
  580. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  581. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  582. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  583. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  584. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  585. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  586. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  587. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  588. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  589. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  590. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/data/flare.json +0 -0
  591. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/example-demo.py +0 -0
  592. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  593. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  594. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  595. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  596. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  597. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/ipython.desktop +0 -0
  598. {ipython-8.29.0/examples/IPython Kernel/nbpackage/nbs → ipython-8.30.0/examples/IPython Kernel/nbpackage}/__init__.py +0 -0
  599. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  600. {ipython-8.29.0 → ipython-8.30.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  601. {ipython-8.29.0 → ipython-8.30.0}/examples/Index.ipynb +0 -0
  602. {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  603. {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  604. {ipython-8.29.0 → ipython-8.30.0}/examples/images/FrontendKernel.png +0 -0
  605. {ipython-8.29.0 → ipython-8.30.0}/examples/images/animation.m4v +0 -0
  606. {ipython-8.29.0 → ipython-8.30.0}/examples/images/ipython_logo.png +0 -0
  607. {ipython-8.29.0 → ipython-8.30.0}/examples/images/python_logo.svg +0 -0
  608. {ipython-8.29.0 → ipython-8.30.0}/examples/utils/cwd_prompt.py +0 -0
  609. {ipython-8.29.0 → ipython-8.30.0}/examples/utils/list_pyfiles.ipy +0 -0
  610. {ipython-8.29.0 → ipython-8.30.0}/examples/utils/list_subdirs.ipy +0 -0
  611. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/dependency_links.txt +0 -0
  612. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/entry_points.txt +0 -0
  613. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/not-zip-safe +0 -0
  614. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/requires.txt +0 -0
  615. {ipython-8.29.0 → ipython-8.30.0}/ipython.egg-info/top_level.txt +0 -0
  616. {ipython-8.29.0 → ipython-8.30.0}/long_description.rst +0 -0
  617. {ipython-8.29.0 → ipython-8.30.0}/scripts/ipython.ico +0 -0
  618. {ipython-8.29.0 → ipython-8.30.0}/scripts/ipython_nb.ico +0 -0
  619. {ipython-8.29.0 → ipython-8.30.0}/setup.cfg +0 -0
  620. {ipython-8.29.0 → ipython-8.30.0}/setup.py +0 -0
  621. {ipython-8.29.0 → ipython-8.30.0}/setupbase.py +0 -0
@@ -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.
@@ -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
 
@@ -16,7 +16,8 @@ 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
 
@@ -518,7 +519,7 @@ class SVG(DisplayObject):
518
519
  _read_flags = 'rb'
519
520
  # wrap data in a property, which extracts the <svg> tag, discarding
520
521
  # document headers
521
- _data = None
522
+ _data: Optional[str] = None
522
523
 
523
524
  @property
524
525
  def data(self):
@@ -540,8 +541,10 @@ class SVG(DisplayObject):
540
541
  # fallback on the input, trust the user
541
542
  # but this is probably an error.
542
543
  pass
543
- svg = cast_unicode(svg)
544
- self._data = svg
544
+ if isinstance(svg, bytes):
545
+ self._data = svg.decode(errors="replace")
546
+ else:
547
+ self._data = svg
545
548
 
546
549
  def _repr_svg_(self):
547
550
  return self._data_and_metadata()
@@ -1,6 +1,61 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Display formatters.
3
3
 
4
+ This module defines the base instances in order to implement custom
5
+ formatters/mimetypes
6
+ got objects:
7
+
8
+ As we want to see internal IPython working we are going to use the following
9
+ function to diaply objects instead of the normal print or display method:
10
+
11
+ >>> ip = get_ipython()
12
+ >>> ip.display_formatter.format(...)
13
+ ({'text/plain': 'Ellipsis'}, {})
14
+
15
+ This return a tuple with the mimebumdle for the current object, and the
16
+ associated metadata.
17
+
18
+
19
+ We can now define our own formatter and register it:
20
+
21
+
22
+ >>> from IPython.core.formatters import BaseFormatter, FormatterABC
23
+
24
+
25
+ >>> class LLMFormatter(BaseFormatter):
26
+ ...
27
+ ... format_type = 'x-vendor/llm'
28
+ ... print_method = '_repr_llm_'
29
+ ... _return_type = (dict, str)
30
+
31
+ >>> llm_formatter = LLMFormatter(parent=ip.display_formatter)
32
+
33
+ >>> ip.display_formatter.formatters[LLMFormatter.format_type] = llm_formatter
34
+
35
+ Now any class that define `_repr_llm_` will return a x-vendor/llm as part of
36
+ it's display data:
37
+
38
+ >>> class A:
39
+ ...
40
+ ... def _repr_llm_(self, *kwargs):
41
+ ... return 'This a A'
42
+ ...
43
+
44
+ >>> ip.display_formatter.format(A())
45
+ ({'text/plain': '<IPython.core.formatters.A at ...>', 'x-vendor/llm': 'This a A'}, {})
46
+
47
+ As usual, you can register methods for third party types (see
48
+ :ref:`third_party_formatting`)
49
+
50
+ >>> def llm_int(obj):
51
+ ... return 'This is the integer %s, in between %s and %s'%(obj, obj-1, obj+1)
52
+
53
+ >>> llm_formatter.for_type(int, llm_int)
54
+
55
+ >>> ip.display_formatter.format(42)
56
+ ({'text/plain': '42', 'x-vendor/llm': 'This is the integer 42, in between 41 and 43'}, {})
57
+
58
+
4
59
  Inheritance diagram:
5
60
 
6
61
  .. inheritance-diagram:: IPython.core.formatters
@@ -37,9 +92,10 @@ class DisplayFormatter(Configurable):
37
92
  active_types = List(Unicode(),
38
93
  help="""List of currently active mime-types to display.
39
94
  You can use this to set a white-list for formats to display.
40
-
95
+
41
96
  Most users will not need to change this value.
42
- """).tag(config=True)
97
+ """,
98
+ ).tag(config=True)
43
99
 
44
100
  @default('active_types')
45
101
  def _active_types_default(self):
@@ -144,7 +200,7 @@ class DisplayFormatter(Configurable):
144
200
  """
145
201
  format_dict = {}
146
202
  md_dict = {}
147
-
203
+
148
204
  if self.ipython_display_formatter(obj):
149
205
  # object handled itself, don't proceed
150
206
  return {}, {}
@@ -176,18 +232,18 @@ class DisplayFormatter(Configurable):
176
232
  continue
177
233
  if exclude and format_type in exclude:
178
234
  continue
179
-
235
+
180
236
  md = None
181
237
  try:
182
238
  data = formatter(obj)
183
239
  except:
184
240
  # FIXME: log the exception
185
241
  raise
186
-
242
+
187
243
  # formatters can return raw data or (data, metadata)
188
244
  if isinstance(data, tuple) and len(data) == 2:
189
245
  data, md = data
190
-
246
+
191
247
  if data is not None:
192
248
  format_dict[format_type] = data
193
249
  if md is not None:
@@ -252,7 +308,7 @@ class FormatterABC(metaclass=abc.ABCMeta):
252
308
 
253
309
  # Is the formatter enabled...
254
310
  enabled = True
255
-
311
+
256
312
  @abc.abstractmethod
257
313
  def __call__(self, obj):
258
314
  """Return a JSON'able representation of the object.
@@ -278,12 +334,15 @@ def _get_type(obj):
278
334
  return getattr(obj, '__class__', None) or type(obj)
279
335
 
280
336
 
281
- _raise_key_error = Sentinel('_raise_key_error', __name__,
282
- """
337
+ _raise_key_error = Sentinel(
338
+ "_raise_key_error",
339
+ __name__,
340
+ """
283
341
  Special value to raise a KeyError
284
342
 
285
343
  Raise KeyError in `BaseFormatter.pop` if passed as the default value to `pop`
286
- """)
344
+ """,
345
+ )
287
346
 
288
347
 
289
348
  class BaseFormatter(Configurable):
@@ -329,7 +388,7 @@ class BaseFormatter(Configurable):
329
388
  # The deferred-import type-specific printers.
330
389
  # Map (modulename, classname) pairs to the format functions.
331
390
  deferred_printers = Dict().tag(config=True)
332
-
391
+
333
392
  @catch_format_error
334
393
  def __call__(self, obj):
335
394
  """Compute the format for an object."""
@@ -348,7 +407,7 @@ class BaseFormatter(Configurable):
348
407
  return None
349
408
  else:
350
409
  return None
351
-
410
+
352
411
  def __contains__(self, typ):
353
412
  """map in to lookup_by_type"""
354
413
  try:
@@ -357,7 +416,7 @@ class BaseFormatter(Configurable):
357
416
  return False
358
417
  else:
359
418
  return True
360
-
419
+
361
420
  def _check_return(self, r, obj):
362
421
  """Check that a return value is appropriate
363
422
 
@@ -372,7 +431,7 @@ class BaseFormatter(Configurable):
372
431
  (self.format_type, type(r), self._return_type, _safe_repr(obj)),
373
432
  FormatterWarning
374
433
  )
375
-
434
+
376
435
  def lookup(self, obj):
377
436
  """Look up the formatter for a given instance.
378
437
 
@@ -395,7 +454,7 @@ class BaseFormatter(Configurable):
395
454
  return self.singleton_printers[obj_id]
396
455
  # then lookup by type
397
456
  return self.lookup_by_type(_get_type(obj))
398
-
457
+
399
458
  def lookup_by_type(self, typ):
400
459
  """Look up the registered formatter for a type.
401
460
 
@@ -426,7 +485,7 @@ class BaseFormatter(Configurable):
426
485
  for cls in pretty._get_mro(typ):
427
486
  if cls in self.type_printers or self._in_deferred_types(cls):
428
487
  return self.type_printers[cls]
429
-
488
+
430
489
  # If we have reached here, the lookup failed.
431
490
  raise KeyError("No registered printer for {0!r}".format(typ))
432
491
 
@@ -459,15 +518,15 @@ class BaseFormatter(Configurable):
459
518
  if isinstance(typ, str):
460
519
  type_module, type_name = typ.rsplit('.', 1)
461
520
  return self.for_type_by_name(type_module, type_name, func)
462
-
521
+
463
522
  try:
464
523
  oldfunc = self.lookup_by_type(typ)
465
524
  except KeyError:
466
525
  oldfunc = None
467
-
526
+
468
527
  if func is not None:
469
528
  self.type_printers[typ] = func
470
-
529
+
471
530
  return oldfunc
472
531
 
473
532
  def for_type_by_name(self, type_module, type_name, func=None):
@@ -501,16 +560,16 @@ class BaseFormatter(Configurable):
501
560
  this will be the previous value (to enable restoring later).
502
561
  """
503
562
  key = (type_module, type_name)
504
-
563
+
505
564
  try:
506
565
  oldfunc = self.lookup_by_type("%s.%s" % key)
507
566
  except KeyError:
508
567
  oldfunc = None
509
-
568
+
510
569
  if func is not None:
511
570
  self.deferred_printers[key] = func
512
571
  return oldfunc
513
-
572
+
514
573
  def pop(self, typ, default=_raise_key_error):
515
574
  """Pop a formatter for the given type.
516
575
 
@@ -529,7 +588,7 @@ class BaseFormatter(Configurable):
529
588
  ------
530
589
  KeyError if the type is not registered and default is not specified.
531
590
  """
532
-
591
+
533
592
  if isinstance(typ, str):
534
593
  typ_key = tuple(typ.rsplit('.',1))
535
594
  if typ_key not in self.deferred_printers:
@@ -599,14 +658,14 @@ class PlainTextFormatter(BaseFormatter):
599
658
  # This subclass ignores this attribute as it always need to return
600
659
  # something.
601
660
  enabled = Bool(True).tag(config=False)
602
-
661
+
603
662
  max_seq_length = Integer(pretty.MAX_SEQ_LENGTH,
604
663
  help="""Truncate large collections (lists, dicts, tuples, sets) to this size.
605
-
664
+
606
665
  Set to 0 to disable truncation.
607
- """
666
+ """,
608
667
  ).tag(config=True)
609
-
668
+
610
669
  # Look for a _repr_pretty_ methods to use for pretty printing.
611
670
  print_method = ObjectName('_repr_pretty_')
612
671
 
@@ -775,7 +834,7 @@ class PNGFormatter(BaseFormatter):
775
834
  format_type = Unicode('image/png')
776
835
 
777
836
  print_method = ObjectName('_repr_png_')
778
-
837
+
779
838
  _return_type = (bytes, str)
780
839
 
781
840
 
@@ -829,7 +888,7 @@ class JSONFormatter(BaseFormatter):
829
888
  _return_type = (list, dict)
830
889
 
831
890
  print_method = ObjectName('_repr_json_')
832
-
891
+
833
892
  def _check_return(self, r, obj):
834
893
  """Check that a return value is appropriate
835
894
 
@@ -887,19 +946,19 @@ class PDFFormatter(BaseFormatter):
887
946
 
888
947
  class IPythonDisplayFormatter(BaseFormatter):
889
948
  """An escape-hatch Formatter for objects that know how to display themselves.
890
-
949
+
891
950
  To define the callables that compute the representation of your
892
951
  objects, define a :meth:`_ipython_display_` method or use the :meth:`for_type`
893
952
  or :meth:`for_type_by_name` methods to register functions that handle
894
953
  this. Unlike mime-type displays, this method should not return anything,
895
954
  instead calling any appropriate display methods itself.
896
-
955
+
897
956
  This display formatter has highest priority.
898
957
  If it fires, no other display formatter will be called.
899
958
 
900
959
  Prior to IPython 6.1, `_ipython_display_` was the only way to display custom mime-types
901
960
  without registering a new Formatter.
902
-
961
+
903
962
  IPython 6.1 introduces `_repr_mimebundle_` for displaying custom mime-types,
904
963
  so `_ipython_display_` should only be used for objects that require unusual
905
964
  display patterns, such as multiple display calls.
@@ -943,7 +1002,7 @@ class MimeBundleFormatter(BaseFormatter):
943
1002
  """
944
1003
  print_method = ObjectName('_repr_mimebundle_')
945
1004
  _return_type = dict
946
-
1005
+
947
1006
  def _check_return(self, r, obj):
948
1007
  r = super(MimeBundleFormatter, self)._check_return(r, obj)
949
1008
  # always return (data, metadata):
@@ -44,20 +44,17 @@ else:
44
44
 
45
45
  @undoc
46
46
  class HasGetItem(Protocol):
47
- def __getitem__(self, key) -> None:
48
- ...
47
+ def __getitem__(self, key) -> None: ...
49
48
 
50
49
 
51
50
  @undoc
52
51
  class InstancesHaveGetItem(Protocol):
53
- def __call__(self, *args, **kwargs) -> HasGetItem:
54
- ...
52
+ def __call__(self, *args, **kwargs) -> HasGetItem: ...
55
53
 
56
54
 
57
55
  @undoc
58
56
  class HasGetAttr(Protocol):
59
- def __getattr__(self, key) -> None:
60
- ...
57
+ def __getattr__(self, key) -> None: ...
61
58
 
62
59
 
63
60
  @undoc
@@ -329,9 +326,9 @@ class EvaluationContext(NamedTuple):
329
326
  #: Global namespace
330
327
  globals: dict
331
328
  #: Evaluation policy identifier
332
- evaluation: Literal[
333
- "forbidden", "minimal", "limited", "unsafe", "dangerous"
334
- ] = "forbidden"
329
+ evaluation: Literal["forbidden", "minimal", "limited", "unsafe", "dangerous"] = (
330
+ "forbidden"
331
+ )
335
332
  #: Whether the evaluation of code takes place inside of a subscript.
336
333
  #: Useful for evaluating ``:-1, 'col'`` in ``df[:-1, 'col']``.
337
334
  in_subscript: bool = False
@@ -15,6 +15,7 @@ and stores the results.
15
15
 
16
16
  For more details, see the class docstrings below.
17
17
  """
18
+
18
19
  from __future__ import annotations
19
20
 
20
21
  from warnings import warn
@@ -395,7 +395,10 @@ def _tr_quote2(content):
395
395
 
396
396
  def _tr_paren(content):
397
397
  "Translate lines escaped with a slash: /"
398
- name, _, args = content.partition(' ')
398
+ name, _, args = content.partition(" ")
399
+ if name == "":
400
+ raise SyntaxError(f'"{ESC_SHELL}" must be followed by a callable name')
401
+
399
402
  return '%s(%s)' % (name, ", ".join(args.split()))
400
403
 
401
404
  tr = { ESC_SHELL : 'get_ipython().system({!r})'.format,
@@ -461,7 +461,7 @@ Currently the magic system has the following functions:""",
461
461
  ptformatter.pprint = False
462
462
  disp_formatter.active_types = ['text/plain']
463
463
 
464
- shell.magic('xmode Plain')
464
+ shell.run_line_magic("xmode", "Plain")
465
465
  else:
466
466
  # turn off
467
467
  shell.separate_in = dstore.rc_separate_in
@@ -472,7 +472,7 @@ Currently the magic system has the following functions:""",
472
472
  ptformatter.pprint = dstore.rc_pprint
473
473
  disp_formatter.active_types = dstore.rc_active_types
474
474
 
475
- shell.magic('xmode ' + dstore.xmode)
475
+ shell.run_line_magic("xmode", dstore.xmode)
476
476
 
477
477
  # mode here is the state before we switch; switch_doctest_mode takes
478
478
  # the mode we're switching to.
@@ -83,14 +83,14 @@ class LoggingMagics(Magics):
83
83
  log 'raw' input. Normally, IPython's logs contain the processed
84
84
  input, so that user lines are logged in their final form, converted
85
85
  into valid Python. For example, %Exit is logged as
86
- _ip.magic("Exit"). If the -r flag is given, all input is logged
86
+ _ip.run_line_magic("Exit"). If the -r flag is given, all input is logged
87
87
  exactly as typed, with no transformations applied.
88
88
 
89
89
  -t
90
90
  put timestamps before each input line logged (these are put in
91
91
  comments).
92
92
 
93
- -q
93
+ -q
94
94
  suppress output of logstate message when logging is invoked
95
95
  """
96
96
 
@@ -2,9 +2,11 @@
2
2
  """Being removed
3
3
  """
4
4
 
5
+
5
6
  class LazyEvaluate(object):
6
7
  """This is used for formatting strings with values that need to be updated
7
8
  at that time, such as the current time or working directory."""
9
+
8
10
  def __init__(self, func, *args, **kwargs):
9
11
  self.func = func
10
12
  self.args = args
@@ -16,6 +18,6 @@ class LazyEvaluate(object):
16
18
 
17
19
  def __str__(self):
18
20
  return str(self())
19
-
21
+
20
22
  def __format__(self, format_spec):
21
23
  return format(self(), format_spec)
@@ -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 = 29
19
+ _version_minor = 30
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -1,4 +1,4 @@
1
1
  # coding: iso-8859-5
2
2
  # (Unlikely to be the default encoding for most testers.)
3
- # БЖџрстуфхцчшщъыьэюя <- Cyrillic characters
4
- 'Ўт№Ф'
3
+ # ������������������� <- Cyrillic characters
4
+ "����"
@@ -535,8 +535,7 @@ def test_custom_repr_namedtuple_partialmethod():
535
535
  from functools import partialmethod
536
536
  from typing import NamedTuple
537
537
 
538
- class Foo(NamedTuple):
539
- ...
538
+ class Foo(NamedTuple): ...
540
539
 
541
540
  Foo.__repr__ = partialmethod(lambda obj: "Hello World")
542
541
  foo = Foo()
@@ -4,6 +4,7 @@ Line-based transformers are the simpler ones; token-based transformers are
4
4
  more complex. See test_inputtransformer2_line for tests for line-based
5
5
  transformations.
6
6
  """
7
+
7
8
  import platform
8
9
  import string
9
10
  import sys
@@ -721,7 +721,7 @@ class Negator(ast.NodeTransformer):
721
721
  """Negates all number literals in an AST."""
722
722
 
723
723
  def visit_Num(self, node):
724
- node.n = -node.n
724
+ node.value = -node.value
725
725
  return node
726
726
 
727
727
  def visit_Constant(self, node):
@@ -21,7 +21,7 @@ def test_logstart_unicode():
21
21
  logfname = os.path.join(tdir, "test_unicode.log")
22
22
  _ip.run_cell("'abc€'")
23
23
  try:
24
- _ip.magic("logstart -to %s" % logfname)
24
+ _ip.run_line_magic("logstart", "-to %s" % logfname)
25
25
  _ip.run_cell("'abc€'")
26
26
  finally:
27
27
  _ip.logger.logstop()
@@ -827,7 +827,7 @@ def test_prun_special_syntax():
827
827
  @dec.skipif(execution.profile is None)
828
828
  def test_prun_quotes():
829
829
  "Test that prun does not clobber string escapes (GH #1302)"
830
- _ip.magic(r"prun -q x = '\t'")
830
+ _ip.run_line_magic("prun", r"-q x = '\t'")
831
831
  assert _ip.user_ns["x"] == "\t"
832
832
 
833
833
 
@@ -838,7 +838,7 @@ def test_extension():
838
838
  print(' ', p)
839
839
  print('CWD', os.getcwd())
840
840
 
841
- pytest.raises(ImportError, _ip.magic, "load_ext daft_extension")
841
+ pytest.raises(ImportError, _ip.run_line_magic, "load_ext", "daft_extension")
842
842
  daft_path = os.path.join(os.path.dirname(__file__), "daft_extension")
843
843
  sys.path.insert(0, daft_path)
844
844
  try: