ipython 9.6.0__tar.gz → 9.8.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 (446) hide show
  1. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/completer.py +74 -22
  2. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/debugger.py +6 -1
  3. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/display_functions.py +1 -1
  4. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/displayhook.py +2 -2
  5. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/displaypub.py +1 -1
  6. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/doctb.py +2 -1
  7. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/events.py +26 -12
  8. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/formatters.py +1 -1
  9. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/guarded_eval.py +519 -31
  10. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/history.py +26 -15
  11. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/interactiveshell.py +24 -22
  12. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magic.py +143 -117
  13. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magic_arguments.py +1 -1
  14. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/execution.py +3 -8
  15. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/history.py +30 -7
  16. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/oinspect.py +0 -1
  17. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/pylabtools.py +3 -4
  18. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/release.py +1 -1
  19. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/shellapp.py +5 -1
  20. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/tbtools.py +2 -1
  21. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/ultratb.py +12 -4
  22. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/deduperreload/deduperreload.py +2 -1
  23. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/deduperreload/deduperreload_patching.py +0 -1
  24. {ipython-9.6.0 → ipython-9.8.0}/IPython/external/pickleshare.py +8 -66
  25. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/display.py +2 -1
  26. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/pretty.py +1 -0
  27. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/interactiveshell.py +1 -1
  28. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/prompts.py +1 -1
  29. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/__init__.py +2 -1
  30. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/shortcuts/__init__.py +2 -1
  31. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/shortcuts/auto_suggest.py +2 -1
  32. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/shortcuts/filters.py +2 -1
  33. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/decorators.py +0 -1
  34. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/pytest_ipdoctest.py +2 -5
  35. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/PyColorize.py +78 -23
  36. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_common.py +2 -1
  37. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_sysinfo.py +1 -1
  38. ipython-9.8.0/IPython/utils/data.py +50 -0
  39. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/decorators.py +1 -1
  40. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/encoding.py +7 -4
  41. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/generics.py +6 -2
  42. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/importstring.py +3 -1
  43. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/module_paths.py +8 -2
  44. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/py3compat.py +0 -10
  45. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/sentinel.py +2 -2
  46. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/syspathcontext.py +18 -3
  47. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/text.py +5 -8
  48. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/tokenutil.py +2 -1
  49. {ipython-9.6.0 → ipython-9.8.0}/MANIFEST.in +0 -2
  50. {ipython-9.6.0/ipython.egg-info → ipython-9.8.0}/PKG-INFO +23 -23
  51. {ipython-9.6.0 → ipython-9.8.0}/README.rst +3 -15
  52. {ipython-9.6.0 → ipython-9.8.0}/docs/source/conf.py +0 -13
  53. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/custommagics.rst +2 -6
  54. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/details.rst +1 -1
  55. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/eventloops.rst +6 -2
  56. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/extensions/index.rst +1 -1
  57. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/integrating.rst +1 -1
  58. {ipython-9.6.0 → ipython-9.8.0}/docs/source/index.rst +1 -1
  59. {ipython-9.6.0 → ipython-9.8.0}/docs/source/install/install.rst +3 -31
  60. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/autoawait.rst +11 -12
  61. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/plotting.rst +6 -8
  62. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/reference.rst +4 -4
  63. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/shell.rst +2 -2
  64. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/tutorial.rst +9 -9
  65. ipython-9.8.0/docs/source/links.txt +97 -0
  66. {ipython-9.6.0 → ipython-9.8.0}/docs/source/overview.rst +1 -5
  67. {ipython-9.6.0 → ipython-9.8.0}/docs/source/sphinx.toml +3 -1
  68. {ipython-9.6.0 → ipython-9.8.0}/docs/source/sphinxext.rst +3 -0
  69. ipython-9.8.0/docs/source/whatsnew/development.rst +52 -0
  70. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/index.rst +5 -11
  71. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version1.0.rst +1 -1
  72. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version2.0.rst +0 -2
  73. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version3.rst +2 -2
  74. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version5.rst +1 -1
  75. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version6.rst +4 -4
  76. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version9.rst +144 -0
  77. {ipython-9.6.0 → ipython-9.8.0}/examples/auto_suggest_llm.py +2 -1
  78. {ipython-9.6.0 → ipython-9.8.0/ipython.egg-info}/PKG-INFO +23 -23
  79. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/SOURCES.txt +0 -1
  80. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/requires.txt +20 -19
  81. {ipython-9.6.0 → ipython-9.8.0}/pyproject.toml +42 -42
  82. {ipython-9.6.0 → ipython-9.8.0}/tests/fake_llm.py +0 -1
  83. {ipython-9.6.0 → ipython-9.8.0}/tests/refbug.py +0 -1
  84. {ipython-9.6.0 → ipython-9.8.0}/tests/test_completer.py +675 -11
  85. {ipython-9.6.0 → ipython-9.8.0}/tests/test_display.py +0 -1
  86. {ipython-9.6.0 → ipython-9.8.0}/tests/test_display_2.py +0 -1
  87. {ipython-9.6.0 → ipython-9.8.0}/tests/test_events.py +4 -2
  88. {ipython-9.6.0 → ipython-9.8.0}/tests/test_formatters.py +2 -3
  89. {ipython-9.6.0 → ipython-9.8.0}/tests/test_guarded_eval.py +57 -0
  90. {ipython-9.6.0 → ipython-9.8.0}/tests/test_history.py +57 -0
  91. {ipython-9.6.0 → ipython-9.8.0}/tests/test_interactiveshell.py +12 -15
  92. {ipython-9.6.0 → ipython-9.8.0}/tests/test_io.py +0 -2
  93. {ipython-9.6.0 → ipython-9.8.0}/tests/test_magic.py +10 -4
  94. {ipython-9.6.0 → ipython-9.8.0}/tests/test_path.py +0 -2
  95. {ipython-9.6.0 → ipython-9.8.0}/tests/test_pretty.py +0 -1
  96. {ipython-9.6.0 → ipython-9.8.0}/tests/test_run.py +5 -3
  97. {ipython-9.6.0 → ipython-9.8.0}/tests/test_ultratb.py +7 -1
  98. ipython-9.6.0/IPython/utils/data.py +0 -30
  99. ipython-9.6.0/docs/source/development/pycompat.rst +0 -32
  100. ipython-9.6.0/docs/source/links.txt +0 -97
  101. ipython-9.6.0/docs/source/whatsnew/development.rst +0 -34
  102. {ipython-9.6.0 → ipython-9.8.0}/.flake8 +0 -0
  103. {ipython-9.6.0 → ipython-9.8.0}/.mailmap +0 -0
  104. {ipython-9.6.0 → ipython-9.8.0}/.pre-commit-config.yaml +0 -0
  105. {ipython-9.6.0 → ipython-9.8.0}/COPYING.rst +0 -0
  106. {ipython-9.6.0 → ipython-9.8.0}/IPython/__init__.py +0 -0
  107. {ipython-9.6.0 → ipython-9.8.0}/IPython/__main__.py +0 -0
  108. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/__init__.py +0 -0
  109. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/alias.py +0 -0
  110. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/application.py +0 -0
  111. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/async_helpers.py +0 -0
  112. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/autocall.py +0 -0
  113. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/builtin_trap.py +0 -0
  114. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/compilerop.py +0 -0
  115. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/completerlib.py +0 -0
  116. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/crashhandler.py +0 -0
  117. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/debugger_backport.py +0 -0
  118. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/display.py +0 -0
  119. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/display_trap.py +0 -0
  120. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/error.py +0 -0
  121. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/extensions.py +0 -0
  122. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/getipython.py +0 -0
  123. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/historyapp.py +0 -0
  124. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/hooks.py +0 -0
  125. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/inputtransformer2.py +0 -0
  126. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/latex_symbols.py +0 -0
  127. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/logger.py +0 -0
  128. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/macro.py +0 -0
  129. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/__init__.py +0 -0
  130. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/ast_mod.py +0 -0
  131. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/auto.py +0 -0
  132. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/basic.py +0 -0
  133. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/code.py +0 -0
  134. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/config.py +0 -0
  135. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/display.py +0 -0
  136. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/extension.py +0 -0
  137. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/logging.py +0 -0
  138. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/namespace.py +0 -0
  139. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/osm.py +0 -0
  140. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/packaging.py +0 -0
  141. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/pylab.py +0 -0
  142. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/magics/script.py +0 -0
  143. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/page.py +0 -0
  144. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/payload.py +0 -0
  145. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/payloadpage.py +0 -0
  146. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/prefilter.py +0 -0
  147. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/profile/README_STARTUP +0 -0
  148. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/profileapp.py +0 -0
  149. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/profiledir.py +0 -0
  150. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/splitinput.py +0 -0
  151. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/tips.py +0 -0
  152. {ipython-9.6.0 → ipython-9.8.0}/IPython/core/usage.py +0 -0
  153. {ipython-9.6.0 → ipython-9.8.0}/IPython/display.py +0 -0
  154. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/__init__.py +0 -0
  155. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/autoreload.py +0 -0
  156. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/deduperreload/__init__.py +0 -0
  157. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/storemagic.py +0 -0
  158. {ipython-9.6.0 → ipython-9.8.0}/IPython/extensions/tests/test_deduperreload.py +0 -0
  159. {ipython-9.6.0 → ipython-9.8.0}/IPython/external/__init__.py +0 -0
  160. {ipython-9.6.0 → ipython-9.8.0}/IPython/external/qt_for_kernel.py +0 -0
  161. {ipython-9.6.0 → ipython-9.8.0}/IPython/external/qt_loaders.py +0 -0
  162. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/__init__.py +0 -0
  163. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/backgroundjobs.py +0 -0
  164. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/clipboard.py +0 -0
  165. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/deepreload.py +0 -0
  166. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/demo.py +0 -0
  167. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/editorhooks.py +0 -0
  168. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/guisupport.py +0 -0
  169. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/latextools.py +0 -0
  170. {ipython-9.6.0 → ipython-9.8.0}/IPython/lib/lexers.py +0 -0
  171. {ipython-9.6.0 → ipython-9.8.0}/IPython/paths.py +0 -0
  172. {ipython-9.6.0 → ipython-9.8.0}/IPython/py.typed +0 -0
  173. {ipython-9.6.0 → ipython-9.8.0}/IPython/sphinxext/__init__.py +0 -0
  174. {ipython-9.6.0 → ipython-9.8.0}/IPython/sphinxext/custom_doctests.py +0 -0
  175. {ipython-9.6.0 → ipython-9.8.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  176. {ipython-9.6.0 → ipython-9.8.0}/IPython/sphinxext/ipython_directive.py +0 -0
  177. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/__init__.py +0 -0
  178. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/debugger.py +0 -0
  179. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/embed.py +0 -0
  180. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/ipapp.py +0 -0
  181. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/magics.py +0 -0
  182. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  183. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  184. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  185. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  186. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  187. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  188. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  189. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  190. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  191. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  192. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/ptutils.py +0 -0
  193. {ipython-9.6.0 → ipython-9.8.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  194. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/__init__.py +0 -0
  195. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/globalipapp.py +0 -0
  196. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/ipunittest.py +0 -0
  197. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/Makefile +0 -0
  198. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/__init__.py +0 -0
  199. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/dtexample.py +0 -0
  200. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  201. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/setup.py +0 -0
  202. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/simple.py +0 -0
  203. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/simplevars.py +0 -0
  204. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/test_combo.txt +0 -0
  205. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/test_example.txt +0 -0
  206. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  207. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  208. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/plugin/test_refs.py +0 -0
  209. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/skipdoctest.py +0 -0
  210. {ipython-9.6.0 → ipython-9.8.0}/IPython/testing/tools.py +0 -0
  211. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/__init__.py +0 -0
  212. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_cli.py +0 -0
  213. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_emscripten.py +0 -0
  214. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_posix.py +0 -0
  215. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_win32.py +0 -0
  216. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/_process_win32_controller.py +0 -0
  217. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/capture.py +0 -0
  218. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/coloransi.py +0 -0
  219. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/contexts.py +0 -0
  220. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/dir2.py +0 -0
  221. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/docs.py +0 -0
  222. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/eventful.py +0 -0
  223. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/frame.py +0 -0
  224. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/io.py +0 -0
  225. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/ipstruct.py +0 -0
  226. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/jsonutil.py +0 -0
  227. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/log.py +0 -0
  228. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/openpy.py +0 -0
  229. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/path.py +0 -0
  230. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/process.py +0 -0
  231. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/strdispatch.py +0 -0
  232. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/sysinfo.py +0 -0
  233. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/tempdir.py +0 -0
  234. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/terminal.py +0 -0
  235. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/timing.py +0 -0
  236. {ipython-9.6.0 → ipython-9.8.0}/IPython/utils/wildcard.py +0 -0
  237. {ipython-9.6.0 → ipython-9.8.0}/LICENSE +0 -0
  238. {ipython-9.6.0 → ipython-9.8.0}/_build_meta.py +0 -0
  239. {ipython-9.6.0 → ipython-9.8.0}/docs/Makefile +0 -0
  240. {ipython-9.6.0 → ipython-9.8.0}/docs/README.rst +0 -0
  241. {ipython-9.6.0 → ipython-9.8.0}/docs/autogen_api.py +0 -0
  242. {ipython-9.6.0 → ipython-9.8.0}/docs/autogen_config.py +0 -0
  243. {ipython-9.6.0 → ipython-9.8.0}/docs/autogen_magics.py +0 -0
  244. {ipython-9.6.0 → ipython-9.8.0}/docs/autogen_shortcuts.py +0 -0
  245. {ipython-9.6.0 → ipython-9.8.0}/docs/make.cmd +0 -0
  246. {ipython-9.6.0 → ipython-9.8.0}/docs/man/ipython.1 +0 -0
  247. {ipython-9.6.0 → ipython-9.8.0}/docs/requirements.txt +0 -0
  248. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/2.0/running-crop.png +0 -0
  249. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/2.0/running.png +0 -0
  250. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/2.0/treeview.png +0 -0
  251. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/2.0/user-interface.png +0 -0
  252. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/2.0/widgets.png +0 -0
  253. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  254. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  255. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  256. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  257. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  258. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  259. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  260. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  261. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  262. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  263. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  264. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/autosuggest.gif +0 -0
  265. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  266. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  267. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  268. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  269. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  270. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  271. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  272. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  273. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  274. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  275. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  276. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  277. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  278. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  279. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  280. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ms_visual_studio.png +0 -0
  281. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/notebook_specgram.png +0 -0
  282. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/ptshell_features.png +0 -0
  283. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/qtconsole.png +0 -0
  284. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  285. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_images/unicode_completion.png +0 -0
  286. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_static/favicon.ico +0 -0
  287. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_static/logo.png +0 -0
  288. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_static/theme_overrides.css +0 -0
  289. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_templates/breadcrumbs.html +0 -0
  290. {ipython-9.6.0 → ipython-9.8.0}/docs/source/_templates/notebook_redirect.html +0 -0
  291. {ipython-9.6.0 → ipython-9.8.0}/docs/source/about/history.rst +0 -0
  292. {ipython-9.6.0 → ipython-9.8.0}/docs/source/about/index.rst +0 -0
  293. {ipython-9.6.0 → ipython-9.8.0}/docs/source/about/license_and_copyright.rst +0 -0
  294. {ipython-9.6.0 → ipython-9.8.0}/docs/source/api/index.rst +0 -0
  295. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/callbacks.rst +0 -0
  296. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/extensions/autoreload.rst +0 -0
  297. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/extensions/storemagic.rst +0 -0
  298. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/index.rst +0 -0
  299. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/inputtransforms.rst +0 -0
  300. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/intro.rst +0 -0
  301. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/options/index.rst +0 -0
  302. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  303. {ipython-9.6.0 → ipython-9.8.0}/docs/source/config/shortcuts/index.rst +0 -0
  304. {ipython-9.6.0 → ipython-9.8.0}/docs/source/coredev/index.rst +0 -0
  305. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/config.rst +0 -0
  306. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/execution.rst +0 -0
  307. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  308. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  309. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/figs/other_kernels.png +0 -0
  310. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/figs/other_kernels.svg +0 -0
  311. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/how_ipython_works.rst +0 -0
  312. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/index.rst +0 -0
  313. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/inputhook_app.rst +0 -0
  314. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/kernels.rst +0 -0
  315. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/messaging.rst +0 -0
  316. {ipython-9.6.0 → ipython-9.8.0}/docs/source/development/wrapperkernels.rst +0 -0
  317. {ipython-9.6.0 → ipython-9.8.0}/docs/source/install/index.rst +0 -0
  318. {ipython-9.6.0 → ipython-9.8.0}/docs/source/install/kernel_install.rst +0 -0
  319. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/index.rst +0 -0
  320. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/magics.rst +0 -0
  321. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  322. {ipython-9.6.0 → ipython-9.8.0}/docs/source/interactive/tips.rst +0 -0
  323. {ipython-9.6.0 → ipython-9.8.0}/docs/source/parallel/index.rst +0 -0
  324. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  325. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  326. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  327. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  328. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  329. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  330. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  331. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  332. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  333. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  334. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  335. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/pr/README.md +0 -0
  336. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  337. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  338. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.10.rst +0 -0
  339. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.11.rst +0 -0
  340. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.12.rst +0 -0
  341. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.13.rst +0 -0
  342. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.8.rst +0 -0
  343. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version0.9.rst +0 -0
  344. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  345. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version4.rst +0 -0
  346. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version7.rst +0 -0
  347. {ipython-9.6.0 → ipython-9.8.0}/docs/source/whatsnew/version8.rst +0 -0
  348. {ipython-9.6.0 → ipython-9.8.0}/docs/sphinxext/apigen.py +0 -0
  349. {ipython-9.6.0 → ipython-9.8.0}/docs/sphinxext/configtraits.py +0 -0
  350. {ipython-9.6.0 → ipython-9.8.0}/docs/sphinxext/github.py +0 -0
  351. {ipython-9.6.0 → ipython-9.8.0}/docs/sphinxext/magics.py +0 -0
  352. {ipython-9.6.0 → ipython-9.8.0}/examples/Embedding/embed_class_long.py +0 -0
  353. {ipython-9.6.0 → ipython-9.8.0}/examples/Embedding/embed_class_short.py +0 -0
  354. {ipython-9.6.0 → ipython-9.8.0}/examples/Embedding/embed_function.py +0 -0
  355. {ipython-9.6.0 → ipython-9.8.0}/examples/Embedding/start_ipython_config.py +0 -0
  356. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/example-demo.py +0 -0
  357. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  358. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  359. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  360. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  361. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  362. {ipython-9.6.0 → ipython-9.8.0}/examples/IPython Kernel/ipython.desktop +0 -0
  363. {ipython-9.6.0 → ipython-9.8.0}/examples/utils/cwd_prompt.py +0 -0
  364. {ipython-9.6.0 → ipython-9.8.0}/examples/utils/list_pyfiles.ipy +0 -0
  365. {ipython-9.6.0 → ipython-9.8.0}/examples/utils/list_subdirs.ipy +0 -0
  366. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/dependency_links.txt +0 -0
  367. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/entry_points.txt +0 -0
  368. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/not-zip-safe +0 -0
  369. {ipython-9.6.0 → ipython-9.8.0}/ipython.egg-info/top_level.txt +0 -0
  370. {ipython-9.6.0 → ipython-9.8.0}/long_description.rst +0 -0
  371. {ipython-9.6.0 → ipython-9.8.0}/scripts/ipython.ico +0 -0
  372. {ipython-9.6.0 → ipython-9.8.0}/scripts/ipython_nb.ico +0 -0
  373. {ipython-9.6.0 → ipython-9.8.0}/setup.cfg +0 -0
  374. {ipython-9.6.0 → ipython-9.8.0}/setup.py +0 -0
  375. {ipython-9.6.0 → ipython-9.8.0}/setupbase.py +0 -0
  376. {ipython-9.6.0 → ipython-9.8.0}/tests/2x2.jpg +0 -0
  377. {ipython-9.6.0 → ipython-9.8.0}/tests/2x2.png +0 -0
  378. {ipython-9.6.0 → ipython-9.8.0}/tests/__init__.py +0 -0
  379. {ipython-9.6.0 → ipython-9.8.0}/tests/bad_all.py +0 -0
  380. {ipython-9.6.0 → ipython-9.8.0}/tests/conftest.py +0 -0
  381. {ipython-9.6.0 → ipython-9.8.0}/tests/cve.py +0 -0
  382. {ipython-9.6.0 → ipython-9.8.0}/tests/fake_ext_dir/daft_extension.py +0 -0
  383. {ipython-9.6.0 → ipython-9.8.0}/tests/nonascii.py +0 -0
  384. {ipython-9.6.0 → ipython-9.8.0}/tests/nonascii2.py +0 -0
  385. {ipython-9.6.0 → ipython-9.8.0}/tests/print_argv.py +0 -0
  386. {ipython-9.6.0 → ipython-9.8.0}/tests/simpleerr.py +0 -0
  387. {ipython-9.6.0 → ipython-9.8.0}/tests/tclass.py +0 -0
  388. {ipython-9.6.0 → ipython-9.8.0}/tests/test.wav +0 -0
  389. {ipython-9.6.0 → ipython-9.8.0}/tests/test_alias.py +0 -0
  390. {ipython-9.6.0 → ipython-9.8.0}/tests/test_application.py +0 -0
  391. {ipython-9.6.0 → ipython-9.8.0}/tests/test_async_helpers.py +0 -0
  392. {ipython-9.6.0 → ipython-9.8.0}/tests/test_autocall.py +0 -0
  393. {ipython-9.6.0 → ipython-9.8.0}/tests/test_backgroundjobs.py +0 -0
  394. {ipython-9.6.0 → ipython-9.8.0}/tests/test_capture.py +0 -0
  395. {ipython-9.6.0 → ipython-9.8.0}/tests/test_clipboard.py +0 -0
  396. {ipython-9.6.0 → ipython-9.8.0}/tests/test_compilerop.py +0 -0
  397. {ipython-9.6.0 → ipython-9.8.0}/tests/test_completerlib.py +0 -0
  398. {ipython-9.6.0 → ipython-9.8.0}/tests/test_debug_magic.py +0 -0
  399. {ipython-9.6.0 → ipython-9.8.0}/tests/test_debugger.py +0 -0
  400. {ipython-9.6.0 → ipython-9.8.0}/tests/test_decorators.py +0 -0
  401. {ipython-9.6.0 → ipython-9.8.0}/tests/test_decorators_2.py +0 -0
  402. {ipython-9.6.0 → ipython-9.8.0}/tests/test_deepreload.py +0 -0
  403. {ipython-9.6.0 → ipython-9.8.0}/tests/test_dir2.py +0 -0
  404. {ipython-9.6.0 → ipython-9.8.0}/tests/test_displayhook.py +0 -0
  405. {ipython-9.6.0 → ipython-9.8.0}/tests/test_editorhooks.py +0 -0
  406. {ipython-9.6.0 → ipython-9.8.0}/tests/test_embed.py +0 -0
  407. {ipython-9.6.0 → ipython-9.8.0}/tests/test_exceptiongroup_tb.py +0 -0
  408. {ipython-9.6.0 → ipython-9.8.0}/tests/test_extension.py +0 -0
  409. {ipython-9.6.0 → ipython-9.8.0}/tests/test_handlers.py +0 -0
  410. {ipython-9.6.0 → ipython-9.8.0}/tests/test_help.py +0 -0
  411. {ipython-9.6.0 → ipython-9.8.0}/tests/test_hooks.py +0 -0
  412. {ipython-9.6.0 → ipython-9.8.0}/tests/test_imports.py +0 -0
  413. {ipython-9.6.0 → ipython-9.8.0}/tests/test_importstring.py +0 -0
  414. {ipython-9.6.0 → ipython-9.8.0}/tests/test_inputtransformer2.py +0 -0
  415. {ipython-9.6.0 → ipython-9.8.0}/tests/test_inputtransformer2_line.py +0 -0
  416. {ipython-9.6.0 → ipython-9.8.0}/tests/test_interactivshell.py +0 -0
  417. {ipython-9.6.0 → ipython-9.8.0}/tests/test_iplib.py +0 -0
  418. {ipython-9.6.0 → ipython-9.8.0}/tests/test_ipunittest.py +0 -0
  419. {ipython-9.6.0 → ipython-9.8.0}/tests/test_latextools.py +0 -0
  420. {ipython-9.6.0 → ipython-9.8.0}/tests/test_logger.py +0 -0
  421. {ipython-9.6.0 → ipython-9.8.0}/tests/test_magic_arguments.py +0 -0
  422. {ipython-9.6.0 → ipython-9.8.0}/tests/test_magic_terminal.py +0 -0
  423. {ipython-9.6.0 → ipython-9.8.0}/tests/test_module_paths.py +0 -0
  424. {ipython-9.6.0 → ipython-9.8.0}/tests/test_oinspect.py +0 -0
  425. {ipython-9.6.0 → ipython-9.8.0}/tests/test_openpy.py +0 -0
  426. {ipython-9.6.0 → ipython-9.8.0}/tests/test_page.py +0 -0
  427. {ipython-9.6.0 → ipython-9.8.0}/tests/test_paths.py +0 -0
  428. {ipython-9.6.0 → ipython-9.8.0}/tests/test_prefilter.py +0 -0
  429. {ipython-9.6.0 → ipython-9.8.0}/tests/test_process.py +0 -0
  430. {ipython-9.6.0 → ipython-9.8.0}/tests/test_profile.py +0 -0
  431. {ipython-9.6.0 → ipython-9.8.0}/tests/test_pt_inputhooks.py +0 -0
  432. {ipython-9.6.0 → ipython-9.8.0}/tests/test_pycolorize.py +0 -0
  433. {ipython-9.6.0 → ipython-9.8.0}/tests/test_pylabtools.py +0 -0
  434. {ipython-9.6.0 → ipython-9.8.0}/tests/test_qt_loaders.py +0 -0
  435. {ipython-9.6.0 → ipython-9.8.0}/tests/test_shellapp.py +0 -0
  436. {ipython-9.6.0 → ipython-9.8.0}/tests/test_shortcuts.py +0 -0
  437. {ipython-9.6.0 → ipython-9.8.0}/tests/test_splitinput.py +0 -0
  438. {ipython-9.6.0 → ipython-9.8.0}/tests/test_storemagic.py +0 -0
  439. {ipython-9.6.0 → ipython-9.8.0}/tests/test_sysinfo.py +0 -0
  440. {ipython-9.6.0 → ipython-9.8.0}/tests/test_tempdir.py +0 -0
  441. {ipython-9.6.0 → ipython-9.8.0}/tests/test_text.py +0 -0
  442. {ipython-9.6.0 → ipython-9.8.0}/tests/test_tips.py +0 -0
  443. {ipython-9.6.0 → ipython-9.8.0}/tests/test_tokenutil.py +0 -0
  444. {ipython-9.6.0 → ipython-9.8.0}/tests/test_tools.py +0 -0
  445. {ipython-9.6.0 → ipython-9.8.0}/tests/test_wildcard.py +0 -0
  446. {ipython-9.6.0 → ipython-9.8.0}/tests/test_zzz_autoreload.py +0 -0
@@ -85,9 +85,9 @@ You will find that the following are experimental:
85
85
 
86
86
  We welcome any feedback on these new API, and we also encourage you to try this
87
87
  module in debug mode (start IPython with ``--Completer.debug=True``) in order
88
- to have extra logging information if :any:`jedi` is crashing, or if current
88
+ to have extra logging information if :mod:`jedi` is crashing, or if current
89
89
  IPython completer pending deprecations are returning results not yet handled
90
- by :any:`jedi`
90
+ by :mod:`jedi`
91
91
 
92
92
  Using Jedi for tab completion allow snippets like the following to work without
93
93
  having to execute any code:
@@ -99,7 +99,7 @@ Tab completion will be able to infer that ``myvar[1]`` is a real number without
99
99
  executing almost any code unlike the deprecated :any:`IPCompleter.greedy`
100
100
  option.
101
101
 
102
- Be sure to update :any:`jedi` to the latest stable version or to try the
102
+ Be sure to update :mod:`jedi` to the latest stable version or to try the
103
103
  current development version to get better completions.
104
104
 
105
105
  Matchers
@@ -149,7 +149,7 @@ More precisely, the API allows to omit ``matcher_api_version`` for v1 Matchers,
149
149
  and requires a literal ``2`` for v2 Matchers.
150
150
 
151
151
  Once the API stabilises future versions may relax the requirement for specifying
152
- ``matcher_api_version`` by switching to :any:`functools.singledispatch`, therefore
152
+ ``matcher_api_version`` by switching to :func:`functools.singledispatch`, therefore
153
153
  please do not rely on the presence of ``matcher_api_version`` for any purposes.
154
154
 
155
155
  Suppression of competing matchers
@@ -201,17 +201,14 @@ from dataclasses import dataclass
201
201
  from functools import cached_property, partial
202
202
  from types import SimpleNamespace
203
203
  from typing import (
204
- Iterable,
205
- Iterator,
206
204
  Union,
207
205
  Any,
208
- Sequence,
209
206
  Optional,
210
207
  TYPE_CHECKING,
211
- Sized,
212
208
  TypeVar,
213
209
  Literal,
214
210
  )
211
+ from collections.abc import Iterable, Iterator, Sequence, Sized
215
212
 
216
213
  from IPython.core.guarded_eval import (
217
214
  guarded_eval,
@@ -247,7 +244,8 @@ import __main__
247
244
  from typing import cast
248
245
 
249
246
  if sys.version_info < (3, 12):
250
- from typing_extensions import TypedDict, NotRequired, Protocol, TypeAlias, TypeGuard
247
+ from typing_extensions import TypedDict, Protocol
248
+ from typing import NotRequired, TypeAlias, TypeGuard
251
249
  else:
252
250
  from typing import TypedDict, NotRequired, Protocol, TypeAlias, TypeGuard
253
251
 
@@ -489,7 +487,7 @@ class Completion:
489
487
  It will also raise unless use in proper context manager.
490
488
 
491
489
  This act as a middle ground :any:`Completion` object between the
492
- :any:`jedi.api.classes.Completion` object and the Prompt Toolkit completion
490
+ :class:`jedi.api.classes.Completion` object and the Prompt Toolkit completion
493
491
  object. While Jedi need a lot of information about evaluator and how the
494
492
  code should be ran/inspected, PromptToolkit (and other frontend) mostly
495
493
  need user facing information.
@@ -860,7 +858,7 @@ def rectify_completions(text: str, completions: _IC, *, _debug: bool = False) ->
860
858
 
861
859
  Notes
862
860
  -----
863
- :any:`jedi.api.classes.Completion` s returned by Jedi may not have the same start and end, though
861
+ :class:`jedi.api.classes.Completion` s returned by Jedi may not have the same start and end, though
864
862
  the Jupyter Protocol requires them to behave like so. This will readjust
865
863
  the completion to have the same ``start`` and ``end`` by padding both
866
864
  extremities with surrounding text.
@@ -990,9 +988,9 @@ class Completer(Configurable):
990
988
  no item/attribute evaluation, no access to locals/globals,
991
989
  no evaluation of any operations or comparisons.
992
990
  - ``limited``: access to all namespaces, evaluation of hard-coded methods
993
- (for example: :any:`dict.keys`, :any:`object.__getattr__`,
994
- :any:`object.__getitem__`) on allow-listed objects (for example:
995
- :any:`dict`, :any:`list`, :any:`tuple`, ``pandas.Series``),
991
+ (for example: :py:meth:`dict.keys`, :py:meth:`object.__getattr__`,
992
+ :py:meth:`object.__getitem__`) on allow-listed objects (for example:
993
+ :py:class:`dict`, :py:class:`list`, :py:class:`tuple`, ``pandas.Series``),
996
994
  - ``unsafe``: evaluation of all methods and function calls but not of
997
995
  syntax with side-effects like `del x`,
998
996
  - ``dangerous``: completely arbitrary evaluation; does not support auto-import.
@@ -1352,6 +1350,8 @@ class Completer(Configurable):
1352
1350
  assert res is not None
1353
1351
  if len(res.body) != 1:
1354
1352
  continue
1353
+ if not isinstance(res.body[0], ast.Expr):
1354
+ continue
1355
1355
  expr = res.body[0].value
1356
1356
  if isinstance(expr, ast.Tuple) and not code[-1] == ")":
1357
1357
  # we skip implicit tuple, like when trimming `fun(a,b`<completion>
@@ -1538,9 +1538,9 @@ def match_dict_keys(
1538
1538
  # All checks passed!
1539
1539
  return True
1540
1540
 
1541
- filtered_key_is_final: dict[Union[str, bytes, int, float], _DictKeyState] = (
1542
- defaultdict(lambda: _DictKeyState.BASELINE)
1543
- )
1541
+ filtered_key_is_final: dict[
1542
+ Union[str, bytes, int, float], _DictKeyState
1543
+ ] = defaultdict(lambda: _DictKeyState.BASELINE)
1544
1544
 
1545
1545
  for k in keys:
1546
1546
  # If at least one of the matches is not final, mark as undetermined.
@@ -2211,6 +2211,17 @@ class IPCompleter(Completer):
2211
2211
  # starts with `/home/`, `C:\`, etc)
2212
2212
 
2213
2213
  text = context.token
2214
+ code_until_cursor = self._extract_code(context.text_until_cursor)
2215
+ completion_type = self._determine_completion_context(code_until_cursor)
2216
+ in_cli_context = self._is_completing_in_cli_context(code_until_cursor)
2217
+ if (
2218
+ completion_type == self._CompletionContextType.ATTRIBUTE
2219
+ and not in_cli_context
2220
+ ):
2221
+ return {
2222
+ "completions": [],
2223
+ "suppress": False,
2224
+ }
2214
2225
 
2215
2226
  # chars that require escaping with backslash - i.e. chars
2216
2227
  # that readline treats incorrectly as delimiters, but we
@@ -2480,7 +2491,8 @@ class IPCompleter(Completer):
2480
2491
  )
2481
2492
  return {
2482
2493
  "completions": matches,
2483
- # static analysis should not suppress other matchers
2494
+ # static analysis should not suppress other matcher
2495
+ # NOTE: file_matcher is automatically suppressed on attribute completions
2484
2496
  "suppress": False,
2485
2497
  }
2486
2498
 
@@ -2597,12 +2609,47 @@ class IPCompleter(Completer):
2597
2609
  return self._CompletionContextType.GLOBAL
2598
2610
 
2599
2611
  # Handle all other attribute matches np.ran, d[0].k, (a,b).count
2600
- chain_match = re.search(r".*(.+\.(?:[a-zA-Z]\w*)?)$", line)
2612
+ chain_match = re.search(r".*(.+(?<!\s)\.(?:[a-zA-Z]\w*)?)$", line)
2601
2613
  if chain_match:
2602
2614
  return self._CompletionContextType.ATTRIBUTE
2603
2615
 
2604
2616
  return self._CompletionContextType.GLOBAL
2605
2617
 
2618
+ def _is_completing_in_cli_context(self, text: str) -> bool:
2619
+ """
2620
+ Determine if we are completing in a CLI alias, line magic, or bang expression context.
2621
+ """
2622
+ stripped = text.lstrip()
2623
+ if stripped.startswith("!") or stripped.startswith("%"):
2624
+ return True
2625
+ # Check for CLI aliases
2626
+ try:
2627
+ tokens = stripped.split(None, 1)
2628
+ if not tokens:
2629
+ return False
2630
+ first_token = tokens[0]
2631
+
2632
+ # Must have arguments after the command for this to apply
2633
+ if len(tokens) < 2:
2634
+ return False
2635
+
2636
+ # Check if first token is a known alias
2637
+ if not any(
2638
+ alias[0] == first_token for alias in self.shell.alias_manager.aliases
2639
+ ):
2640
+ return False
2641
+
2642
+ try:
2643
+ if first_token in self.shell.user_ns:
2644
+ # There's a variable defined, so the alias is overshadowed
2645
+ return False
2646
+ except (AttributeError, KeyError):
2647
+ pass
2648
+
2649
+ return True
2650
+ except Exception:
2651
+ return False
2652
+
2606
2653
  def _is_in_string_or_comment(self, text):
2607
2654
  """
2608
2655
  Determine if the cursor is inside a string or comment.
@@ -2724,7 +2771,11 @@ class IPCompleter(Completer):
2724
2771
  """Match attributes or global python names"""
2725
2772
  text = context.text_until_cursor
2726
2773
  text = self._extract_code(text)
2727
- completion_type = self._determine_completion_context(text)
2774
+ in_cli_context = self._is_completing_in_cli_context(text)
2775
+ if in_cli_context:
2776
+ completion_type = self._CompletionContextType.GLOBAL
2777
+ else:
2778
+ completion_type = self._determine_completion_context(text)
2728
2779
  if completion_type == self._CompletionContextType.ATTRIBUTE:
2729
2780
  try:
2730
2781
  matches, fragment = self._attr_matches(
@@ -2741,9 +2792,10 @@ class IPCompleter(Completer):
2741
2792
  is None
2742
2793
  )
2743
2794
  matches = filter(no__name, matches)
2744
- return _convert_matcher_v1_result_to_v2(
2795
+ matches = _convert_matcher_v1_result_to_v2(
2745
2796
  matches, type="attribute", fragment=fragment
2746
2797
  )
2798
+ return matches
2747
2799
  except NameError:
2748
2800
  # catches <undefined attributes>.<tab>
2749
2801
  return SimpleMatcherResult(completions=[], suppress=False)
@@ -3253,7 +3305,7 @@ class IPCompleter(Completer):
3253
3305
 
3254
3306
  .. note::
3255
3307
 
3256
- If ``IPCompleter.debug`` is :any:`True` will yield a ``--jedi/ipython--``
3308
+ If ``IPCompleter.debug`` is :py:data:`True` will yield a ``--jedi/ipython--``
3257
3309
  fake Completion token to distinguish completion returned by Jedi
3258
3310
  and usual IPython completion.
3259
3311
 
@@ -275,6 +275,10 @@ class Pdb(OldPdb):
275
275
 
276
276
  # `kwargs` ensures full compatibility with stdlib's `pdb.Pdb`.
277
277
  OldPdb.__init__(self, completekey, stdin, stdout, **kwargs)
278
+ # Python 3.15+ should define this, so no need to initialize
279
+ # this avoids some getattr(self, 'curframe')
280
+ if sys.version_info < (3, 15):
281
+ self.curframe = None
278
282
 
279
283
  # IPython changes...
280
284
  self.shell = get_ipython()
@@ -609,7 +613,7 @@ class Pdb(OldPdb):
609
613
  So if frame is self.current_frame we instead return self.curframe_locals
610
614
 
611
615
  """
612
- if frame is getattr(self, "curframe", None):
616
+ if frame is self.curframe:
613
617
  return self.curframe_locals
614
618
  else:
615
619
  return frame.f_locals
@@ -728,6 +732,7 @@ class Pdb(OldPdb):
728
732
 
729
733
  new_line, err = self.parser.format2(line, "str")
730
734
  if not err:
735
+ assert new_line is not None
731
736
  line = new_line
732
737
 
733
738
  bp = None
@@ -137,7 +137,7 @@ def display(
137
137
  -------
138
138
  handle: DisplayHandle
139
139
  Returns a handle on updatable displays for use with :func:`update_display`,
140
- if `display_id` is given. Returns :any:`None` if no `display_id` is given
140
+ if `display_id` is given. Returns :py:data:`None` if no `display_id` is given
141
141
  (default).
142
142
 
143
143
  Examples
@@ -63,7 +63,7 @@ class DisplayHook(Configurable):
63
63
 
64
64
  @property
65
65
  def prompt_count(self):
66
- return self.shell.execution_count
66
+ return self.shell.execution_count - 1
67
67
 
68
68
  #-------------------------------------------------------------------------
69
69
  # Methods used in __call__. Override these methods to modify the behavior
@@ -127,7 +127,7 @@ class DisplayHook(Configurable):
127
127
  """
128
128
  # Use write, not print which adds an extra space.
129
129
  sys.stdout.write(self.shell.separate_out)
130
- outprompt = 'Out[{}]: '.format(self.shell.execution_count)
130
+ outprompt = 'Out[{}]: '.format(self.shell.execution_count - 1)
131
131
  if self.do_full_cache:
132
132
  sys.stdout.write(outprompt)
133
133
 
@@ -149,7 +149,7 @@ class DisplayPublisher(Configurable):
149
149
 
150
150
  outputs = self.shell.history_manager.outputs
151
151
 
152
- target_execution_count = self.shell.execution_count
152
+ target_execution_count = self.shell.execution_count - 1
153
153
  if self._in_post_execute:
154
154
  # We're in post_execute, so this is likely a matplotlib flush
155
155
  # Use execution_count - 1 to associate with the cell that created the plot
@@ -3,7 +3,8 @@ import linecache
3
3
  import sys
4
4
  from collections.abc import Sequence
5
5
  from types import TracebackType
6
- from typing import Any, Callable, Optional
6
+ from typing import Any, Optional
7
+ from collections.abc import Callable
7
8
 
8
9
  import stack_data
9
10
  from pygments.formatters.terminal256 import Terminal256Formatter
@@ -13,6 +13,13 @@ events and the arguments which will be passed to them.
13
13
  This API is experimental in IPython 2.0, and may be revised in future versions.
14
14
  """
15
15
 
16
+ from __future__ import annotations
17
+
18
+ from typing import TYPE_CHECKING, Any, Callable, Iterable
19
+
20
+ if TYPE_CHECKING:
21
+ from IPython.core.interactiveshell import InteractiveShell
22
+
16
23
 
17
24
  class EventManager:
18
25
  """Manage a collection of events and a sequence of callbacks for each.
@@ -25,7 +32,12 @@ class EventManager:
25
32
  This API is experimental in IPython 2.0, and may be revised in future versions.
26
33
  """
27
34
 
28
- def __init__(self, shell, available_events, print_on_error=True):
35
+ def __init__(
36
+ self,
37
+ shell: InteractiveShell,
38
+ available_events: Iterable[str],
39
+ print_on_error: bool = True,
40
+ ) -> None:
29
41
  """Initialise the :class:`CallbackManager`.
30
42
 
31
43
  Parameters
@@ -38,10 +50,12 @@ class EventManager:
38
50
  A boolean flag to set whether the EventManager will print a warning which a event errors.
39
51
  """
40
52
  self.shell = shell
41
- self.callbacks = {n:[] for n in available_events}
53
+ self.callbacks: dict[str, list[Callable[..., Any]]] = {
54
+ n: [] for n in available_events
55
+ }
42
56
  self.print_on_error = print_on_error
43
57
 
44
- def register(self, event, function):
58
+ def register(self, event: str, function: Callable[..., Any]) -> None:
45
59
  """Register a new event callback.
46
60
 
47
61
  Parameters
@@ -64,14 +78,14 @@ class EventManager:
64
78
  if function not in self.callbacks[event]:
65
79
  self.callbacks[event].append(function)
66
80
 
67
- def unregister(self, event, function):
81
+ def unregister(self, event: str, function: Callable[..., Any]) -> None:
68
82
  """Remove a callback from the given event."""
69
83
  if function in self.callbacks[event]:
70
84
  return self.callbacks[event].remove(function)
71
85
 
72
86
  raise ValueError('Function {!r} is not registered as a {} callback'.format(function, event))
73
87
 
74
- def trigger(self, event, *args, **kwargs):
88
+ def trigger(self, event: str, *args: Any, **kwargs: Any) -> None:
75
89
  """Call callbacks for ``event``.
76
90
 
77
91
  Any additional arguments are passed to all callbacks registered for this
@@ -90,9 +104,9 @@ class EventManager:
90
104
  self.shell.showtraceback()
91
105
 
92
106
  # event_name -> prototype mapping
93
- available_events = {}
107
+ available_events: dict[str, Callable[..., Any]] = {}
94
108
 
95
- def _define_event(callback_function):
109
+ def _define_event(callback_function: Callable[..., Any]) -> Callable[..., Any]:
96
110
  available_events[callback_function.__name__] = callback_function
97
111
  return callback_function
98
112
 
@@ -104,7 +118,7 @@ def _define_event(callback_function):
104
118
  # ------------------------------------------------------------------------------
105
119
 
106
120
  @_define_event
107
- def pre_execute():
121
+ def pre_execute() -> None:
108
122
  """Fires before code is executed in response to user/frontend action.
109
123
 
110
124
  This includes comm and widget messages and silent execution, as well as user
@@ -113,7 +127,7 @@ def pre_execute():
113
127
  pass
114
128
 
115
129
  @_define_event
116
- def pre_run_cell(info):
130
+ def pre_run_cell(info: Any) -> None:
117
131
  """Fires before user-entered code runs.
118
132
 
119
133
  Parameters
@@ -124,7 +138,7 @@ def pre_run_cell(info):
124
138
  pass
125
139
 
126
140
  @_define_event
127
- def post_execute():
141
+ def post_execute() -> None:
128
142
  """Fires after code is executed in response to user/frontend action.
129
143
 
130
144
  This includes comm and widget messages and silent execution, as well as user
@@ -133,7 +147,7 @@ def post_execute():
133
147
  pass
134
148
 
135
149
  @_define_event
136
- def post_run_cell(result):
150
+ def post_run_cell(result: Any) -> None:
137
151
  """Fires after user-entered code runs.
138
152
 
139
153
  Parameters
@@ -144,7 +158,7 @@ def post_run_cell(result):
144
158
  pass
145
159
 
146
160
  @_define_event
147
- def shell_initialized(ip):
161
+ def shell_initialized(ip: InteractiveShell) -> None:
148
162
  """Fires after initialisation of :class:`~IPython.core.interactiveshell.InteractiveShell`.
149
163
 
150
164
  This is before extensions and startup scripts are loaded, so it can only be
@@ -366,7 +366,7 @@ class BaseFormatter(Configurable):
366
366
  dictionaries is through the :meth:`for_type` and :meth:`for_type_by_name`
367
367
  methods.
368
368
 
369
- If no function/callable is found to compute the format data, ``None`` is
369
+ If no function/callable is found to compute the format data, :py:data:`None` is
370
370
  returned and this format type is not used.
371
371
  """
372
372