ipython 8.32.0__tar.gz → 8.33.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. {ipython-8.32.0 → ipython-8.33.0}/IPython/__init__.py +3 -3
  2. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/release.py +1 -1
  3. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/interactiveshell.py +36 -9
  4. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/qt.py +15 -17
  5. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/shortcuts/__init__.py +4 -3
  6. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/shortcuts/auto_suggest.py +31 -22
  7. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_sysinfo.py +1 -1
  8. {ipython-8.32.0/ipython.egg-info → ipython-8.33.0}/PKG-INFO +1 -1
  9. {ipython-8.32.0 → ipython-8.33.0}/docs/autogen_config.py +0 -9
  10. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/details.rst +98 -3
  11. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/options/index.rst +5 -7
  12. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version8.rst +7 -7
  13. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Index.ipynb +10 -10
  14. {ipython-8.32.0 → ipython-8.33.0}/examples/Index.ipynb +1 -1
  15. {ipython-8.32.0 → ipython-8.33.0}/examples/auto_suggest_llm.py +21 -5
  16. {ipython-8.32.0 → ipython-8.33.0/ipython.egg-info}/PKG-INFO +1 -1
  17. {ipython-8.32.0 → ipython-8.33.0}/.flake8 +0 -0
  18. {ipython-8.32.0 → ipython-8.33.0}/.mailmap +0 -0
  19. {ipython-8.32.0 → ipython-8.33.0}/.pre-commit-config.yaml +0 -0
  20. {ipython-8.32.0 → ipython-8.33.0}/COPYING.rst +0 -0
  21. {ipython-8.32.0 → ipython-8.33.0}/IPython/__main__.py +0 -0
  22. {ipython-8.32.0 → ipython-8.33.0}/IPython/conftest.py +0 -0
  23. {ipython-8.32.0 → ipython-8.33.0}/IPython/consoleapp.py +0 -0
  24. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/__init__.py +0 -0
  25. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/alias.py +0 -0
  26. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/application.py +0 -0
  27. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/async_helpers.py +0 -0
  28. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/autocall.py +0 -0
  29. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/builtin_trap.py +0 -0
  30. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/compilerop.py +0 -0
  31. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/completer.py +0 -0
  32. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/completerlib.py +0 -0
  33. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/crashhandler.py +0 -0
  34. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/debugger.py +0 -0
  35. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/display.py +0 -0
  36. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/display_functions.py +0 -0
  37. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/display_trap.py +0 -0
  38. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/displayhook.py +0 -0
  39. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/displaypub.py +0 -0
  40. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/error.py +0 -0
  41. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/events.py +0 -0
  42. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/excolors.py +0 -0
  43. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/extensions.py +0 -0
  44. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/formatters.py +0 -0
  45. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/getipython.py +0 -0
  46. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/guarded_eval.py +0 -0
  47. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/history.py +0 -0
  48. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/historyapp.py +0 -0
  49. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/hooks.py +0 -0
  50. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/inputsplitter.py +0 -0
  51. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/inputtransformer.py +0 -0
  52. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/inputtransformer2.py +0 -0
  53. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/interactiveshell.py +0 -0
  54. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/latex_symbols.py +0 -0
  55. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/logger.py +0 -0
  56. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/macro.py +0 -0
  57. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magic.py +0 -0
  58. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magic_arguments.py +0 -0
  59. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/__init__.py +0 -0
  60. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/ast_mod.py +0 -0
  61. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/auto.py +0 -0
  62. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/basic.py +0 -0
  63. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/code.py +0 -0
  64. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/config.py +0 -0
  65. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/display.py +0 -0
  66. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/execution.py +0 -0
  67. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/extension.py +0 -0
  68. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/history.py +0 -0
  69. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/logging.py +0 -0
  70. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/namespace.py +0 -0
  71. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/osm.py +0 -0
  72. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/packaging.py +0 -0
  73. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/pylab.py +0 -0
  74. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/magics/script.py +0 -0
  75. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/oinspect.py +0 -0
  76. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/page.py +0 -0
  77. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/payload.py +0 -0
  78. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/payloadpage.py +0 -0
  79. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/prefilter.py +0 -0
  80. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/profile/README_STARTUP +0 -0
  81. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/profileapp.py +0 -0
  82. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/profiledir.py +0 -0
  83. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/prompts.py +0 -0
  84. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/pylabtools.py +0 -0
  85. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/shellapp.py +0 -0
  86. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/splitinput.py +0 -0
  87. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/2x2.jpg +0 -0
  88. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/2x2.png +0 -0
  89. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/__init__.py +0 -0
  90. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/bad_all.py +0 -0
  91. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  92. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/nonascii.py +0 -0
  93. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/nonascii2.py +0 -0
  94. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/print_argv.py +0 -0
  95. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/refbug.py +0 -0
  96. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/simpleerr.py +0 -0
  97. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/tclass.py +0 -0
  98. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_alias.py +0 -0
  99. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_application.py +0 -0
  100. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_async_helpers.py +0 -0
  101. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_autocall.py +0 -0
  102. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_compilerop.py +0 -0
  103. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_completer.py +0 -0
  104. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_completerlib.py +0 -0
  105. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_debugger.py +0 -0
  106. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_display.py +0 -0
  107. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_displayhook.py +0 -0
  108. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_events.py +0 -0
  109. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  110. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_extension.py +0 -0
  111. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_formatters.py +0 -0
  112. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  113. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_handlers.py +0 -0
  114. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_history.py +0 -0
  115. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_hooks.py +0 -0
  116. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_imports.py +0 -0
  117. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  118. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  119. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  120. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  121. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_interactiveshell.py +0 -0
  122. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_iplib.py +0 -0
  123. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_logger.py +0 -0
  124. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_magic.py +0 -0
  125. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  126. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  127. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_oinspect.py +0 -0
  128. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_page.py +0 -0
  129. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_paths.py +0 -0
  130. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_prefilter.py +0 -0
  131. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_profile.py +0 -0
  132. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_prompts.py +0 -0
  133. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_pylabtools.py +0 -0
  134. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_run.py +0 -0
  135. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_shellapp.py +0 -0
  136. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_splitinput.py +0 -0
  137. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/tests/test_ultratb.py +0 -0
  138. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/ultratb.py +0 -0
  139. {ipython-8.32.0 → ipython-8.33.0}/IPython/core/usage.py +0 -0
  140. {ipython-8.32.0 → ipython-8.33.0}/IPython/display.py +0 -0
  141. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/__init__.py +0 -0
  142. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/autoreload.py +0 -0
  143. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/storemagic.py +0 -0
  144. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/tests/__init__.py +0 -0
  145. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  146. {ipython-8.32.0 → ipython-8.33.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  147. {ipython-8.32.0 → ipython-8.33.0}/IPython/external/__init__.py +0 -0
  148. {ipython-8.32.0 → ipython-8.33.0}/IPython/external/qt_for_kernel.py +0 -0
  149. {ipython-8.32.0 → ipython-8.33.0}/IPython/external/qt_loaders.py +0 -0
  150. {ipython-8.32.0 → ipython-8.33.0}/IPython/external/tests/__init__.py +0 -0
  151. {ipython-8.32.0 → ipython-8.33.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  152. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/__init__.py +0 -0
  153. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/backgroundjobs.py +0 -0
  154. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/clipboard.py +0 -0
  155. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/deepreload.py +0 -0
  156. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/demo.py +0 -0
  157. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/display.py +0 -0
  158. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/editorhooks.py +0 -0
  159. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/guisupport.py +0 -0
  160. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/latextools.py +0 -0
  161. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/lexers.py +0 -0
  162. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/pretty.py +0 -0
  163. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/__init__.py +0 -0
  164. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test.wav +0 -0
  165. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  166. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_clipboard.py +0 -0
  167. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_deepreload.py +0 -0
  168. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_display.py +0 -0
  169. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  170. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_imports.py +0 -0
  171. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_latextools.py +0 -0
  172. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_lexers.py +0 -0
  173. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_pretty.py +0 -0
  174. {ipython-8.32.0 → ipython-8.33.0}/IPython/lib/tests/test_pygments.py +0 -0
  175. {ipython-8.32.0 → ipython-8.33.0}/IPython/paths.py +0 -0
  176. {ipython-8.32.0 → ipython-8.33.0}/IPython/py.typed +0 -0
  177. {ipython-8.32.0 → ipython-8.33.0}/IPython/sphinxext/__init__.py +0 -0
  178. {ipython-8.32.0 → ipython-8.33.0}/IPython/sphinxext/custom_doctests.py +0 -0
  179. {ipython-8.32.0 → ipython-8.33.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  180. {ipython-8.32.0 → ipython-8.33.0}/IPython/sphinxext/ipython_directive.py +0 -0
  181. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/__init__.py +0 -0
  182. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/console.py +0 -0
  183. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/debugger.py +0 -0
  184. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/embed.py +0 -0
  185. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/ipapp.py +0 -0
  186. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/magics.py +0 -0
  187. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/prompts.py +0 -0
  188. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  189. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  190. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  191. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  192. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  193. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  194. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  195. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  196. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  197. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  198. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/ptutils.py +0 -0
  199. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  200. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/shortcuts/filters.py +0 -0
  201. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/__init__.py +0 -0
  202. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  203. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_embed.py +0 -0
  204. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_help.py +0 -0
  205. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  206. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  207. {ipython-8.32.0 → ipython-8.33.0}/IPython/terminal/tests/test_shortcuts.py +0 -0
  208. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/__init__.py +0 -0
  209. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/decorators.py +0 -0
  210. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/globalipapp.py +0 -0
  211. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/ipunittest.py +0 -0
  212. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/Makefile +0 -0
  213. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/README.txt +0 -0
  214. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/__init__.py +0 -0
  215. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/dtexample.py +0 -0
  216. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  217. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  218. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/setup.py +0 -0
  219. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/simple.py +0 -0
  220. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/simplevars.py +0 -0
  221. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/test_combo.txt +0 -0
  222. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/test_example.txt +0 -0
  223. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  224. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  225. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/plugin/test_refs.py +0 -0
  226. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/skipdoctest.py +0 -0
  227. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/tests/__init__.py +0 -0
  228. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/tests/test_decorators.py +0 -0
  229. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  230. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/tests/test_tools.py +0 -0
  231. {ipython-8.32.0 → ipython-8.33.0}/IPython/testing/tools.py +0 -0
  232. {ipython-8.32.0 → ipython-8.33.0}/IPython/tests/cve.py +0 -0
  233. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/PyColorize.py +0 -0
  234. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/__init__.py +0 -0
  235. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_cli.py +0 -0
  236. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_common.py +0 -0
  237. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_emscripten.py +0 -0
  238. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_posix.py +0 -0
  239. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_win32.py +0 -0
  240. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/_process_win32_controller.py +0 -0
  241. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/capture.py +0 -0
  242. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/colorable.py +0 -0
  243. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/coloransi.py +0 -0
  244. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/contexts.py +0 -0
  245. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/daemonize.py +0 -0
  246. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/data.py +0 -0
  247. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/decorators.py +0 -0
  248. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/dir2.py +0 -0
  249. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/docs.py +0 -0
  250. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/encoding.py +0 -0
  251. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/eventful.py +0 -0
  252. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/frame.py +0 -0
  253. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/generics.py +0 -0
  254. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/importstring.py +0 -0
  255. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/io.py +0 -0
  256. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/ipstruct.py +0 -0
  257. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/jsonutil.py +0 -0
  258. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/localinterfaces.py +0 -0
  259. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/log.py +0 -0
  260. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/module_paths.py +0 -0
  261. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/openpy.py +0 -0
  262. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/path.py +0 -0
  263. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/process.py +0 -0
  264. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/py3compat.py +0 -0
  265. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/sentinel.py +0 -0
  266. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/shimmodule.py +0 -0
  267. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/signatures.py +0 -0
  268. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/strdispatch.py +0 -0
  269. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/sysinfo.py +0 -0
  270. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/syspathcontext.py +0 -0
  271. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tempdir.py +0 -0
  272. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/terminal.py +0 -0
  273. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/__init__.py +0 -0
  274. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_capture.py +0 -0
  275. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_decorators.py +0 -0
  276. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_deprecated.py +0 -0
  277. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_dir2.py +0 -0
  278. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_imports.py +0 -0
  279. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_importstring.py +0 -0
  280. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_io.py +0 -0
  281. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_module_paths.py +0 -0
  282. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_openpy.py +0 -0
  283. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_path.py +0 -0
  284. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_process.py +0 -0
  285. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  286. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  287. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  288. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_tempdir.py +0 -0
  289. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_text.py +0 -0
  290. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  291. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tests/test_wildcard.py +0 -0
  292. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/text.py +0 -0
  293. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/timing.py +0 -0
  294. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tokenutil.py +0 -0
  295. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/traitlets.py +0 -0
  296. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/tz.py +0 -0
  297. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/ulinecache.py +0 -0
  298. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/version.py +0 -0
  299. {ipython-8.32.0 → ipython-8.33.0}/IPython/utils/wildcard.py +0 -0
  300. {ipython-8.32.0 → ipython-8.33.0}/LICENSE +0 -0
  301. {ipython-8.32.0 → ipython-8.33.0}/MANIFEST.in +0 -0
  302. {ipython-8.32.0 → ipython-8.33.0}/README.rst +0 -0
  303. {ipython-8.32.0 → ipython-8.33.0}/_build_meta.py +0 -0
  304. {ipython-8.32.0 → ipython-8.33.0}/docs/Makefile +0 -0
  305. {ipython-8.32.0 → ipython-8.33.0}/docs/README.rst +0 -0
  306. {ipython-8.32.0 → ipython-8.33.0}/docs/autogen_api.py +0 -0
  307. {ipython-8.32.0 → ipython-8.33.0}/docs/autogen_magics.py +0 -0
  308. {ipython-8.32.0 → ipython-8.33.0}/docs/autogen_shortcuts.py +0 -0
  309. {ipython-8.32.0 → ipython-8.33.0}/docs/make.cmd +0 -0
  310. {ipython-8.32.0 → ipython-8.33.0}/docs/man/ipython.1 +0 -0
  311. {ipython-8.32.0 → ipython-8.33.0}/docs/requirements.txt +0 -0
  312. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/2.0/running-crop.png +0 -0
  313. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/2.0/running.png +0 -0
  314. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/2.0/treeview.png +0 -0
  315. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/2.0/user-interface.png +0 -0
  316. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/2.0/widgets.png +0 -0
  317. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  318. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  319. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  320. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  321. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  322. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  323. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  324. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  325. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  326. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  327. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  328. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/autosuggest.gif +0 -0
  329. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  330. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  331. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  332. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  333. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  334. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  335. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  336. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  337. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  338. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  339. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  340. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  341. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  342. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  343. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  344. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ms_visual_studio.png +0 -0
  345. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/notebook_specgram.png +0 -0
  346. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/ptshell_features.png +0 -0
  347. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/qtconsole.png +0 -0
  348. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  349. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_images/unicode_completion.png +0 -0
  350. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_static/favicon.ico +0 -0
  351. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_static/logo.png +0 -0
  352. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_static/theme_overrides.css +0 -0
  353. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_templates/breadcrumbs.html +0 -0
  354. {ipython-8.32.0 → ipython-8.33.0}/docs/source/_templates/notebook_redirect.html +0 -0
  355. {ipython-8.32.0 → ipython-8.33.0}/docs/source/about/history.rst +0 -0
  356. {ipython-8.32.0 → ipython-8.33.0}/docs/source/about/index.rst +0 -0
  357. {ipython-8.32.0 → ipython-8.33.0}/docs/source/about/license_and_copyright.rst +0 -0
  358. {ipython-8.32.0 → ipython-8.33.0}/docs/source/api/index.rst +0 -0
  359. {ipython-8.32.0 → ipython-8.33.0}/docs/source/conf.py +0 -0
  360. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/callbacks.rst +0 -0
  361. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/custommagics.rst +0 -0
  362. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/eventloops.rst +0 -0
  363. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/extensions/autoreload.rst +0 -0
  364. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/extensions/index.rst +0 -0
  365. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/extensions/storemagic.rst +0 -0
  366. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/index.rst +0 -0
  367. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/inputtransforms.rst +0 -0
  368. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/integrating.rst +0 -0
  369. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/intro.rst +0 -0
  370. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  371. {ipython-8.32.0 → ipython-8.33.0}/docs/source/config/shortcuts/index.rst +0 -0
  372. {ipython-8.32.0 → ipython-8.33.0}/docs/source/coredev/index.rst +0 -0
  373. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/config.rst +0 -0
  374. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/execution.rst +0 -0
  375. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  376. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  377. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/figs/other_kernels.png +0 -0
  378. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/figs/other_kernels.svg +0 -0
  379. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/how_ipython_works.rst +0 -0
  380. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/index.rst +0 -0
  381. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/inputhook_app.rst +0 -0
  382. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/kernels.rst +0 -0
  383. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/lexer.rst +0 -0
  384. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/messaging.rst +0 -0
  385. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/pycompat.rst +0 -0
  386. {ipython-8.32.0 → ipython-8.33.0}/docs/source/development/wrapperkernels.rst +0 -0
  387. {ipython-8.32.0 → ipython-8.33.0}/docs/source/index.rst +0 -0
  388. {ipython-8.32.0 → ipython-8.33.0}/docs/source/install/index.rst +0 -0
  389. {ipython-8.32.0 → ipython-8.33.0}/docs/source/install/install.rst +0 -0
  390. {ipython-8.32.0 → ipython-8.33.0}/docs/source/install/kernel_install.rst +0 -0
  391. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/autoawait.rst +0 -0
  392. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/figs/besselj.png +0 -0
  393. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  394. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/figs/jn.html +0 -0
  395. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  396. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/index.rst +0 -0
  397. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/magics.rst +0 -0
  398. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/plotting.rst +0 -0
  399. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  400. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/reference.rst +0 -0
  401. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/shell.rst +0 -0
  402. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/tips.rst +0 -0
  403. {ipython-8.32.0 → ipython-8.33.0}/docs/source/interactive/tutorial.rst +0 -0
  404. {ipython-8.32.0 → ipython-8.33.0}/docs/source/links.txt +0 -0
  405. {ipython-8.32.0 → ipython-8.33.0}/docs/source/overview.rst +0 -0
  406. {ipython-8.32.0 → ipython-8.33.0}/docs/source/parallel/index.rst +0 -0
  407. {ipython-8.32.0 → ipython-8.33.0}/docs/source/sphinx.toml +0 -0
  408. {ipython-8.32.0 → ipython-8.33.0}/docs/source/sphinxext.rst +0 -0
  409. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/development.rst +0 -0
  410. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  411. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  412. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  413. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  414. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  415. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  416. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  417. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  418. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  419. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  420. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  421. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/index.rst +0 -0
  422. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/pr/README.md +0 -0
  423. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  424. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  425. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.10.rst +0 -0
  426. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.11.rst +0 -0
  427. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.12.rst +0 -0
  428. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.13.rst +0 -0
  429. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.8.rst +0 -0
  430. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version0.9.rst +0 -0
  431. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version1.0.rst +0 -0
  432. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version2.0.rst +0 -0
  433. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version3.rst +0 -0
  434. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  435. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version4.rst +0 -0
  436. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version5.rst +0 -0
  437. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version6.rst +0 -0
  438. {ipython-8.32.0 → ipython-8.33.0}/docs/source/whatsnew/version7.rst +0 -0
  439. {ipython-8.32.0 → ipython-8.33.0}/docs/sphinxext/apigen.py +0 -0
  440. {ipython-8.32.0 → ipython-8.33.0}/docs/sphinxext/configtraits.py +0 -0
  441. {ipython-8.32.0 → ipython-8.33.0}/docs/sphinxext/github.py +0 -0
  442. {ipython-8.32.0 → ipython-8.33.0}/docs/sphinxext/magics.py +0 -0
  443. {ipython-8.32.0 → ipython-8.33.0}/examples/Embedding/Index.ipynb +0 -0
  444. {ipython-8.32.0 → ipython-8.33.0}/examples/Embedding/embed_class_long.py +0 -0
  445. {ipython-8.32.0 → ipython-8.33.0}/examples/Embedding/embed_class_short.py +0 -0
  446. {ipython-8.32.0 → ipython-8.33.0}/examples/Embedding/embed_function.py +0 -0
  447. {ipython-8.32.0 → ipython-8.33.0}/examples/Embedding/start_ipython_config.py +0 -0
  448. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  449. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  450. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  451. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  452. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  453. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  454. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  455. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  456. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  457. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  458. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  459. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  460. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  461. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  462. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  463. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  464. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  465. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/data/flare.json +0 -0
  466. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/example-demo.py +0 -0
  467. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  468. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  469. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  470. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  471. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  472. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/ipython.desktop +0 -0
  473. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  474. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  475. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  476. {ipython-8.32.0 → ipython-8.33.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  477. {ipython-8.32.0 → ipython-8.33.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  478. {ipython-8.32.0 → ipython-8.33.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  479. {ipython-8.32.0 → ipython-8.33.0}/examples/images/FrontendKernel.png +0 -0
  480. {ipython-8.32.0 → ipython-8.33.0}/examples/images/animation.m4v +0 -0
  481. {ipython-8.32.0 → ipython-8.33.0}/examples/images/ipython_logo.png +0 -0
  482. {ipython-8.32.0 → ipython-8.33.0}/examples/images/python_logo.svg +0 -0
  483. {ipython-8.32.0 → ipython-8.33.0}/examples/utils/cwd_prompt.py +0 -0
  484. {ipython-8.32.0 → ipython-8.33.0}/examples/utils/list_pyfiles.ipy +0 -0
  485. {ipython-8.32.0 → ipython-8.33.0}/examples/utils/list_subdirs.ipy +0 -0
  486. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/SOURCES.txt +0 -0
  487. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/dependency_links.txt +0 -0
  488. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/entry_points.txt +0 -0
  489. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/not-zip-safe +0 -0
  490. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/requires.txt +0 -0
  491. {ipython-8.32.0 → ipython-8.33.0}/ipython.egg-info/top_level.txt +0 -0
  492. {ipython-8.32.0 → ipython-8.33.0}/long_description.rst +0 -0
  493. {ipython-8.32.0 → ipython-8.33.0}/pyproject.toml +0 -0
  494. {ipython-8.32.0 → ipython-8.33.0}/scripts/ipython.ico +0 -0
  495. {ipython-8.32.0 → ipython-8.33.0}/scripts/ipython_nb.ico +0 -0
  496. {ipython-8.32.0 → ipython-8.33.0}/setup.cfg +0 -0
  497. {ipython-8.32.0 → ipython-8.33.0}/setup.py +0 -0
  498. {ipython-8.32.0 → ipython-8.33.0}/setupbase.py +0 -0
@@ -87,7 +87,7 @@ def embed_kernel(module=None, local_ns=None, **kwargs):
87
87
  **kwargs : various, optional
88
88
  Further keyword args are relayed to the IPKernelApp constructor,
89
89
  such as `config`, a traitlets :class:`Config` object (see :ref:`configure_start_ipython`),
90
- allowing configuration of the kernel (see :ref:`kernel_options`). Will only have an effect
90
+ allowing configuration of the kernel. Will only have an effect
91
91
  on the first embed_kernel call for a given process.
92
92
  """
93
93
 
@@ -95,7 +95,7 @@ def embed_kernel(module=None, local_ns=None, **kwargs):
95
95
  if module is None:
96
96
  module = caller_module
97
97
  if local_ns is None:
98
- local_ns = caller_locals
98
+ local_ns = dict(**caller_locals)
99
99
 
100
100
  # Only import .zmq when we really need it
101
101
  from ipykernel.embed import embed_kernel as real_embed_kernel
@@ -150,7 +150,7 @@ def start_kernel(argv=None, **kwargs):
150
150
  **kwargs : various, optional
151
151
  Any other kwargs will be passed to the Application constructor,
152
152
  such as `config`, a traitlets :class:`Config` object (see :ref:`configure_start_ipython`),
153
- allowing configuration of the kernel (see :ref:`kernel_options`).
153
+ allowing configuration of the kernel.
154
154
  """
155
155
  import warnings
156
156
 
@@ -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 = 32
19
+ _version_minor = 33
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -426,6 +426,14 @@ class TerminalInteractiveShell(InteractiveShell):
426
426
  allow_none=True,
427
427
  ).tag(config=True)
428
428
 
429
+ llm_constructor_kwargs = Dict(
430
+ {},
431
+ help="""
432
+ Extra arguments to pass to `llm_provider_class` constructor.
433
+
434
+ This is used to – for example – set the `model_id`""",
435
+ ).tag(config=True)
436
+
429
437
  llm_provider_class = DottedObjectName(
430
438
  None,
431
439
  allow_none=True,
@@ -471,7 +479,7 @@ class TerminalInteractiveShell(InteractiveShell):
471
479
  # LLM stuff are all Provisional in 8.32
472
480
  if self.llm_provider_class:
473
481
  llm_provider_constructor = import_item(self.llm_provider_class)
474
- llm_provider = llm_provider_constructor()
482
+ llm_provider = llm_provider_constructor(**self.llm_constructor_kwargs)
475
483
  else:
476
484
  llm_provider = None
477
485
  self.auto_suggest = NavigableAutoSuggestFromHistory()
@@ -508,23 +516,23 @@ class TerminalInteractiveShell(InteractiveShell):
508
516
  "create": Bool(False),
509
517
  },
510
518
  ),
511
- help="""Add, disable or modifying shortcuts.
519
+ help="""
520
+ Add, disable or modifying shortcuts.
512
521
 
513
522
  Each entry on the list should be a dictionary with ``command`` key
514
523
  identifying the target function executed by the shortcut and at least
515
524
  one of the following:
516
525
 
517
- - ``match_keys``: list of keys used to match an existing shortcut,
518
- - ``match_filter``: shortcut filter used to match an existing shortcut,
519
- - ``new_keys``: list of keys to set,
520
- - ``new_filter``: a new shortcut filter to set
526
+ - ``match_keys``: list of keys used to match an existing shortcut,
527
+ - ``match_filter``: shortcut filter used to match an existing shortcut,
528
+ - ``new_keys``: list of keys to set,
529
+ - ``new_filter``: a new shortcut filter to set
521
530
 
522
531
  The filters have to be composed of pre-defined verbs and joined by one
523
532
  of the following conjunctions: ``&`` (and), ``|`` (or), ``~`` (not).
524
533
  The pre-defined verbs are:
525
534
 
526
- {}
527
-
535
+ {filters}
528
536
 
529
537
  To disable a shortcut set ``new_keys`` to an empty list.
530
538
  To add a shortcut add key ``create`` with value ``True``.
@@ -539,8 +547,27 @@ class TerminalInteractiveShell(InteractiveShell):
539
547
  shortcuts) can be modified or disabled. The full list of shortcuts,
540
548
  command identifiers and filters is available under
541
549
  :ref:`terminal-shortcuts-list`.
550
+
551
+ Here is an example:
552
+
553
+ .. code::
554
+
555
+ c.TerminalInteractiveShell.shortcuts = [
556
+ {{
557
+ "new_keys": ["c-q"],
558
+ "command": "prompt_toolkit:named_commands.capitalize_word",
559
+ "create": True,
560
+ }},
561
+ {{
562
+ "new_keys": ["c-j"],
563
+ "command": "prompt_toolkit:named_commands.beginning_of_line",
564
+ "create": True,
565
+ }},
566
+ ]
567
+
568
+
542
569
  """.format(
543
- "\n ".join([f"- `{k}`" for k in KEYBINDING_FILTERS])
570
+ filters="\n ".join([f" - ``{k}``" for k in KEYBINDING_FILTERS])
544
571
  ),
545
572
  ).tag(config=True)
546
573
 
@@ -3,9 +3,11 @@ import os
3
3
  from IPython.external.qt_for_kernel import QtCore, QtGui, enum_helper
4
4
  from IPython import get_ipython
5
5
 
6
- # If we create a QApplication, keep a reference to it so that it doesn't get
7
- # garbage collected.
6
+ # If we create a QApplication, QEventLoop, or a QTimer, keep a reference to them
7
+ # so that they don't get garbage collected or leak memory when created multiple times.
8
8
  _appref = None
9
+ _eventloop = None
10
+ _timer = None
9
11
  _already_warned = False
10
12
 
11
13
 
@@ -21,7 +23,7 @@ def _reclaim_excepthook():
21
23
 
22
24
 
23
25
  def inputhook(context):
24
- global _appref
26
+ global _appref, _eventloop, _timer
25
27
  app = QtCore.QCoreApplication.instance()
26
28
  if not app:
27
29
  if sys.platform == 'linux':
@@ -48,6 +50,7 @@ def inputhook(context):
48
50
  except AttributeError: # Only for Qt>=5.14.
49
51
  pass
50
52
  _appref = app = QtGui.QApplication([" "])
53
+ _eventloop = QtCore.QEventLoop(app)
51
54
 
52
55
  # "reclaim" IPython sys.excepthook after event loop starts
53
56
  # without this, it defaults back to BaseIPythonApplication.excepthook
@@ -55,18 +58,17 @@ def inputhook(context):
55
58
  # formatting and look like "bug in IPython".
56
59
  QtCore.QTimer.singleShot(0, _reclaim_excepthook)
57
60
 
58
- event_loop = QtCore.QEventLoop(app)
59
-
60
61
  if sys.platform == 'win32':
61
62
  # The QSocketNotifier method doesn't appear to work on Windows.
62
63
  # Use polling instead.
63
- timer = QtCore.QTimer()
64
- timer.timeout.connect(event_loop.quit)
64
+ if _timer is None:
65
+ _timer = QtCore.QTimer()
66
+ _timer.timeout.connect(_eventloop.quit)
65
67
  while not context.input_is_ready():
66
- # NOTE: run the event loop, and after 50 ms, call `quit` to exit it.
67
- timer.start(50) # 50 ms
68
- _exec(event_loop)
69
- timer.stop()
68
+ # NOTE: run the event loop, and after 10 ms, call `quit` to exit it.
69
+ _timer.start(10) # 10 ms
70
+ _exec(_eventloop)
71
+ _timer.stop()
70
72
  else:
71
73
  # On POSIX platforms, we can use a file descriptor to quit the event
72
74
  # loop when there is input ready to read.
@@ -77,14 +79,10 @@ def inputhook(context):
77
79
  # connect the callback we care about before we turn it on
78
80
  # lambda is necessary as PyQT inspect the function signature to know
79
81
  # what arguments to pass to. See https://github.com/ipython/ipython/pull/12355
80
- notifier.activated.connect(lambda: event_loop.exit())
82
+ notifier.activated.connect(lambda: _eventloop.exit())
81
83
  notifier.setEnabled(True)
82
84
  # only start the event loop we are not already flipped
83
85
  if not context.input_is_ready():
84
- _exec(event_loop)
86
+ _exec(_eventloop)
85
87
  finally:
86
88
  notifier.setEnabled(False)
87
-
88
- # This makes sure that the event loop is garbage collected.
89
- # See issue 14240.
90
- event_loop.setParent(None)
@@ -24,9 +24,9 @@ from prompt_toolkit.key_binding.vi_state import InputMode, ViState
24
24
  from prompt_toolkit.filters import Condition
25
25
 
26
26
  from IPython.core.getipython import get_ipython
27
- from IPython.terminal.shortcuts import auto_match as match
28
- from IPython.terminal.shortcuts import auto_suggest
29
- from IPython.terminal.shortcuts.filters import filter_from_string
27
+ from . import auto_match as match
28
+ from . import auto_suggest
29
+ from .filters import filter_from_string
30
30
  from IPython.utils.decorators import undoc
31
31
 
32
32
  from prompt_toolkit.enums import DEFAULT_BUFFER
@@ -630,6 +630,7 @@ KEY_BINDINGS = [
630
630
  ]
631
631
 
632
632
  UNASSIGNED_ALLOWED_COMMANDS = [
633
+ auto_suggest.llm_autosuggestion,
633
634
  nc.beginning_of_buffer,
634
635
  nc.end_of_buffer,
635
636
  nc.end_of_line,
@@ -24,12 +24,6 @@ from IPython.utils.tokenutil import generate_tokens
24
24
 
25
25
  from .filters import pass_through
26
26
 
27
- try:
28
- import jupyter_ai_magics
29
- import jupyter_ai.completions.models as jai_models
30
- except ModuleNotFoundError:
31
- jai_models = None
32
-
33
27
 
34
28
  def _get_query(document: Document):
35
29
  return document.lines[document.cursor_position_row]
@@ -112,20 +106,27 @@ class AppendAutoSuggestionInAnyLine(Processor):
112
106
  suggestions_longer_than_buffer: bool = (
113
107
  len(suggestions) + ti.document.cursor_position_row > ti.document.line_count
114
108
  )
109
+ if prompt_toolkit.VERSION < (3, 0, 49):
110
+ if len(suggestions) > 1 and prompt_toolkit.VERSION < (3, 0, 49):
111
+ if ti.lineno == ti.document.cursor_position_row:
112
+ return Transformation(
113
+ fragments=ti.fragments
114
+ + [
115
+ (
116
+ "red",
117
+ "(Cannot show multiline suggestion; requires prompt_toolkit > 3.0.49)",
118
+ )
119
+ ]
120
+ )
121
+ else:
122
+ return Transformation(fragments=ti.fragments)
123
+ elif len(suggestions) == 1:
124
+ if ti.lineno == ti.document.cursor_position_row:
125
+ return Transformation(
126
+ fragments=ti.fragments + [(self.style, suggestions[0])]
127
+ )
128
+ return Transformation(fragments=ti.fragments)
115
129
 
116
- if len(suggestions) >= 1 and prompt_toolkit.VERSION < (3, 0, 49):
117
- if ti.lineno == ti.document.cursor_position_row:
118
- return Transformation(
119
- fragments=ti.fragments
120
- + [
121
- (
122
- "red",
123
- "(Cannot show multiline suggestion; requires prompt_toolkit > 3.0.49)",
124
- )
125
- ]
126
- )
127
- else:
128
- return Transformation(fragments=ti.fragments)
129
130
  if delta == 0:
130
131
  suggestion = suggestions[0]
131
132
  return Transformation(fragments=ti.fragments + [(self.style, suggestion)])
@@ -325,6 +326,11 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
325
326
  If there is a currently running llm task, it will cancel it.
326
327
  """
327
328
  # we likely want to store the current cursor position, and cancel if the cursor has moved.
329
+ try:
330
+ import jupyter_ai_magics
331
+ import jupyter_ai.completions.models as jai_models
332
+ except ModuleNotFoundError:
333
+ jai_models = None
328
334
  if not self._llm_provider:
329
335
  warnings.warn("No LLM provider found, cannot trigger LLM completions")
330
336
  return
@@ -374,6 +380,11 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
374
380
  stream_inline_completions, I'm not sure it is the case for all
375
381
  providers.
376
382
  """
383
+ try:
384
+ import jupyter_ai_magics
385
+ import jupyter_ai.completions.models as jai_models
386
+ except ModuleNotFoundError:
387
+ jai_models = None
377
388
 
378
389
  request = jai_models.InlineCompletionRequest(
379
390
  number=0,
@@ -404,9 +415,6 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
404
415
  return
405
416
 
406
417
 
407
- _MIN_LINES = 5
408
-
409
-
410
418
  async def llm_autosuggestion(event: KeyPressEvent):
411
419
  """
412
420
  Ask the AutoSuggester from history to delegate to ask an LLM for completion
@@ -417,6 +425,7 @@ async def llm_autosuggestion(event: KeyPressEvent):
417
425
  Provisional as of 8.32, may change without warnigns
418
426
 
419
427
  """
428
+ _MIN_LINES = 5
420
429
  provider = get_ipython().auto_suggest
421
430
  if not isinstance(provider, NavigableAutoSuggestFromHistory):
422
431
  return
@@ -1,2 +1,2 @@
1
1
  # GENERATED BY setup.py
2
- commit = "56a70e42d"
2
+ commit = "5ed988a91"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ipython
3
- Version: 8.32.0
3
+ Version: 8.33.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
@@ -3,7 +3,6 @@
3
3
  import inspect
4
4
  from pathlib import Path
5
5
  from IPython.terminal.ipapp import TerminalIPythonApp
6
- from ipykernel.kernelapp import IPKernelApp
7
6
  from traitlets import Undefined
8
7
  from collections import defaultdict
9
8
 
@@ -103,13 +102,9 @@ def write_doc(name, title, app, preamble=None):
103
102
  trait_aliases = reverse_aliases(app)
104
103
  filename = options / (name + ".rst")
105
104
  with open(filename, "w", encoding="utf-8") as f:
106
- f.write(".. _" + name + "_options:" + "\n\n")
107
- f.write(title + "\n")
108
- f.write(("=" * len(title)) + "\n")
109
105
  f.write("\n")
110
106
  if preamble is not None:
111
107
  f.write(preamble + '\n\n')
112
- #f.write(app.document_config_options())
113
108
 
114
109
  for c in app._classes_inc_parents():
115
110
  f.write(class_config_rst_doc(c, trait_aliases))
@@ -121,7 +116,3 @@ if __name__ == '__main__':
121
116
  Path(generated).write_text("", encoding="utf-8")
122
117
 
123
118
  write_doc('terminal', 'Terminal IPython options', TerminalIPythonApp())
124
- write_doc('kernel', 'IPython kernel options', IPKernelApp(),
125
- preamble=("These options can be used in :file:`ipython_kernel_config.py`. "
126
- "The kernel also respects any options in `ipython_config.py`"),
127
- )
@@ -1,6 +1,101 @@
1
- =======================
2
- Specific config details
3
- =======================
1
+ ==============================
2
+ Specific configuration details
3
+ ==============================
4
+
5
+ .. _llm_suggestions:
6
+
7
+ LLM Suggestions
8
+ ===============
9
+
10
+ Starting with 9.0, IPython will be able to use LLM providers to suggest code in
11
+ the terminal. This requires a recent version of prompt_toolkit in order to allow
12
+ multiline suggestions. There are currently a number of limitations, and feedback
13
+ on the API is welcome.
14
+
15
+ Unlike many of IPython features, this is not enabled by default and requires
16
+ multiple configuration options to be set to properly work:
17
+
18
+ - Set a keybinding to trigger LLM suggestions. Due to terminal limitations
19
+ across platforms and emulators, it is difficult to provide a default
20
+ keybinding. Note that not all keybindings are availables, in particular all
21
+ the `Ctrl-Enter`, `Alt-backslash` and `Ctrl-Shift-Enter` are not available
22
+ without integration with your terminal emulator.
23
+
24
+ - Chose a LLM `provider`, usually from Jupyter-AI. This will be the interface
25
+ between IPython itself, and the LLM – that may be local or in on a server.
26
+
27
+ - Configure said provider with models, API keys, etc – this will depend on the
28
+ provider, and you will have to refer to Jupyter-AI documentation, and/or your
29
+ LLM documenatation.
30
+
31
+
32
+ While setting up IPython to use a real LLM, you can refer to
33
+ ``examples/auto_suggest_llm.py`` that both provide an example of how to set up
34
+ IPython to use a Fake LLM provider, this can help ensure that the full setup is
35
+ working before switching to a real LLM provider.
36
+
37
+
38
+ Setup a keybinding
39
+ ------------------
40
+
41
+ You may want to refer on how to setup a keybinding in IPython, but in short you
42
+ want to bind the ``IPython:auto_suggest.llm_autosuggestion`` command to a
43
+ keybinding, and have it active only when the default buffer isi focused, and
44
+ when using the NavigableSuggestions suggestter (this is the default suggestter,
45
+ the one that is history and LLM aware). Thus the ``navigable_suggestions &
46
+ default_buffer_focused`` filter should be used.
47
+
48
+ Usually ``Ctrl-Q`` on macos is an available shortcut, note that is does use
49
+ ``Ctrl``, and not ``Command``.
50
+
51
+ The following example will bind ``Ctrl-Q`` to the ``llm_autosuggestion``
52
+ command, with the suggested filter::
53
+
54
+ c.TerminalInteractiveShell.shortcuts = [
55
+ {
56
+ "new_keys": ["c-q"],
57
+ "command": "IPython:auto_suggest.llm_autosuggestion",
58
+ "new_filter": "navigable_suggestions & default_buffer_focused",
59
+ "create": True,
60
+ },
61
+ ]
62
+
63
+
64
+ Choose a LLM provider
65
+ ---------------------
66
+
67
+ Set the ``TerminalInteractiveShell.llm_provider_class`` trait to the fully
68
+ qualified name of the Provider you like, when testing from inside the IPython
69
+ source tree, you can use
70
+ ``"examples.auto_suggest_llm.ExampleCompletionProvider"`` This will always
71
+ stream an extract of the Little Prince by Antoine de Saint-Exupéry, and will not
72
+ require any API key or real LLM.
73
+
74
+
75
+ In your configuration file adapt the following line to your needs:
76
+
77
+ .. code-block:: python
78
+
79
+ c.TerminalInteractiveShell.llm_provider_class = "examples.auto_suggest_llm.ExampleCompletionProvider"
80
+
81
+ Configure the provider
82
+ ----------------------
83
+
84
+ It the provider needs to be passed parameters at initialization, you can do so
85
+ by setting the ``llm_provider_kwargs`` traitlet.
86
+
87
+ .. code-block:: python
88
+
89
+ c.TerminalInteractiveShell.llm_provider_kwargs = {"model": "skynet"}
90
+
91
+ This will depdend on the provider you chose, and you will have to refer to
92
+ the provider documentation.
93
+
94
+ Extra configuration may be needed by setting environment variables, this will
95
+ again depend on the provider you chose, and you will have to refer to the
96
+ provider documentation.
97
+
98
+
4
99
 
5
100
  .. _custom_prompts:
6
101
 
@@ -1,12 +1,10 @@
1
- ===============
2
- IPython options
3
- ===============
1
+ .. _terminal_options:
2
+
3
+ Terminal options
4
+ ================
4
5
 
5
6
  Any of the options listed here can be set in config files, at the
6
7
  command line, from inside IPython, or using a traitlets :class:`Config` object.
7
8
  See :ref:`setting_config` for details.
8
9
 
9
- .. toctree::
10
-
11
- terminal
12
- kernel
10
+ .. include:: terminal.rst
@@ -12,18 +12,18 @@ This is now a different branch than the main branch, and will only accumulate
12
12
  bugfixes and small improvements and requested backports, while 9.0 forges ahead.
13
13
 
14
14
 
15
- We'll not 4 bugfixes and an and unstable preview feature.
15
+ We'll note 4 bugfixes and an and unstable preview feature.
16
16
 
17
17
  - :ghpull:`14640` Fixes an error were a warning about virtualenvs was incorrectly triggered.
18
18
 
19
- - :ghpull:`14684` Fixes an issue on Python 3.12+ with post mortem debugging.
19
+ - :ghpull:`14684` Fixes an issue on Python 3.12+ with post mortem debugging.
20
20
  - :ghpull:`14693` Fixes a bug where magics were ignoring SIGINT
21
- - :ghpull:`14695` Fixes and issue where magics would not display all subprocess output.
21
+ - :ghpull:`14695` Fixes an issue where magics would not display all subprocess output.
22
22
 
23
23
 
24
24
  As a preview feature, look into the ``examples`` folder on how to configure
25
25
  autosuggestion using a large language model. This is not yet ready for
26
- production use, have only partial documentation and can change without warnings,
26
+ production use, has only partial documentation and can change without warning,
27
27
  but should allow you to hook in a Jupyter-ai LLM provider to suggest code in the
28
28
  CLI (currently only via a keyboard shortcut). See :ghpull:`14623` for more details
29
29
  until further documentation is available in 9.0.
@@ -45,7 +45,7 @@ Czechoslovakia where she lived until her death at the age of 74 in April 1966.
45
45
  Thanks
46
46
  ------
47
47
 
48
- Thanks to everyone who helped for the 8.32 release and working toward 9.0.
48
+ Thanks to everyone who helped with the 8.32 release and working toward 9.0.
49
49
 
50
50
  Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
51
51
  work on IPython and related libraries, in particular the work around LLM
@@ -74,7 +74,7 @@ Road to 9.0
74
74
 
75
75
  The current main branch is now on it's way to be 9.0; do not expect many new
76
76
  features but a large codebase refactor, and cleanup with many deprecated code
77
- removed, and more agressive codestyle enforcement.
77
+ removed, and more aggressive codestyle enforcement.
78
78
 
79
79
  For something completely different
80
80
  ----------------------------------
@@ -1069,7 +1069,7 @@ properties:
1069
1069
  Note that while in the above example we use a static dictionary, libraries may
1070
1070
  decide to use a custom object that define ``__getitem__``, we caution against
1071
1071
  using objects that would trigger computation to show documentation, but it is
1072
- sometime preferable for highly dynamic code that for example export ans API as
1072
+ sometime preferable for highly dynamic code that for example export an API as
1073
1073
  object.
1074
1074
 
1075
1075
 
@@ -39,12 +39,12 @@
39
39
  "cell_type": "markdown",
40
40
  "metadata": {},
41
41
  "source": [
42
- "* [Cell Magics](Cell Magics.ipynb)\n",
43
- "* [Script Magics](Script Magics.ipynb)\n",
44
- "* [Rich Output](Rich Output.ipynb)\n",
45
- "* [Custom Display Logic](Custom Display Logic.ipynb)\n",
46
- "* [Plotting in the Notebook](Plotting in the Notebook.ipynb)\n",
47
- "* [Capturing Output](Capturing Output.ipynb)"
42
+ "* <a href='Cell Magics.ipynb' target='_blank'>Cell Magics</a>\n",
43
+ "* <a href='Script Magics.ipynb' target='_blank'>Script Magics</a>\n",
44
+ "* <a href='Rich Output.ipynb' target='_blank'>Rich Output</a>\n",
45
+ "* <a href='Custom Display Logic.ipynb' target='_blank'>Custom Display Logic</a>\n",
46
+ "* <a href='Plotting in the Notebook.ipynb' target='_blank'>Plotting in the Notebook</a>\n",
47
+ "* <a href='Capturing Output.ipynb' target='_blank'>Capturing Output</a>"
48
48
  ]
49
49
  },
50
50
  {
@@ -58,11 +58,11 @@
58
58
  "cell_type": "markdown",
59
59
  "metadata": {},
60
60
  "source": [
61
- "* [Background Jobs](Background Jobs.ipynb)\n",
62
- "* [Trapezoid Rule](Trapezoid Rule.ipynb)\n",
61
+ "* <a href='Background Jobs.ipynb' target='_blank'>Background Jobs</a>\n",
62
+ "* <a href='Trapezoidal Rule.ipynb' target='_blank'>Trapezoidal Rule</a>\n",
63
63
  "* [SymPy](SymPy.ipynb)\n",
64
- "* [Raw Input in the Notebook](Raw Input in the Notebook.ipynb)\n",
65
- "* [Importing Notebooks](Importing Notebooks.ipynb)"
64
+ "* <a href='Raw Input in the Notebook.ipynb' target='_blank'>Raw Input in the Notebook</a>\n",
65
+ "* <a href='Importing Notebooks.ipynb' target='_blank'>Importing Notebooks</a>"
66
66
  ]
67
67
  },
68
68
  {
@@ -32,7 +32,7 @@
32
32
  "cell_type": "markdown",
33
33
  "metadata": {},
34
34
  "source": [
35
- "* [IPython Kernel](IPython Kernel/Index.ipynb): IPython's core syntax and command line features available in all frontends\n",
35
+ "* <a href='IPython Kernel/Index.ipynb' target='_blank'>IPython Kernel</a>: IPython's core syntax and command line features available in all frontends\n",
36
36
  "* [Embedding](Embedding/Index.ipynb): Embedding and reusing IPython's components into other applications\n"
37
37
  ]
38
38
  }
@@ -1,5 +1,7 @@
1
1
  """
2
- This is an example of Fake LLM Completer for IPython
2
+ This is an example of Fake LLM Completer for IPython, as
3
+ well as example on how to configure IPython for LLMs.
4
+
3
5
  8.32 – this is provisional and may change.
4
6
 
5
7
  To test this you can run the following command from the root of IPython
@@ -7,16 +9,30 @@ directory:
7
9
 
8
10
  $ ipython --TerminalInteractiveShell.llm_provider_class=examples.auto_suggest_llm.ExampleCompletionProvider
9
11
 
10
- Or you can set the value in your config file
12
+ Or you can set the value in your config file, which also allows you to set a
13
+ keyboard shortcut::
14
+
15
+ c.TerminalInteractiveShell.llm_provider_class = "examples.auto_suggest_llm.ExampleCompletionProvider"
16
+ c.TerminalInteractiveShell.shortcuts = [
17
+ {
18
+ "new_keys": ["c-q"],
19
+ "command": "IPython:auto_suggest.llm_autosuggestion",
20
+ "new_filter": "navigable_suggestions & default_buffer_focused",
21
+ "create": True,
22
+ },
23
+ ]
24
+
11
25
 
12
- c.TerminalInteractiveShell.llm_provider_class="fully.qualified.name.ToYourCompleter"
26
+ You can use the following configuration option to::
13
27
 
14
- And at runtime bing for example `ctrl-q` to triger autosugges:
28
+ c.TerminalInteractiveShell.llm_constructor_kwargs = {"model_id": "mymodel"}
29
+
30
+
31
+ For convenience and testing you can bind a shortcut at runtime::
15
32
 
16
33
  In [1]: from examples.auto_suggest_llm import setup_shortcut
17
34
  ...: setup_shortcut('c-q')
18
35
 
19
-
20
36
  """
21
37
 
22
38
  import asyncio
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ipython
3
- Version: 8.32.0
3
+ Version: 8.33.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes