ipython 8.36.0__tar.gz → 8.37.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 (622) hide show
  1. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/completer.py +46 -1
  2. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/release.py +1 -1
  3. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_completer.py +37 -0
  4. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/interactiveshell.py +7 -4
  5. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/shortcuts/auto_suggest.py +22 -9
  6. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/fake_llm.py +15 -1
  7. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_shortcuts.py +12 -0
  8. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_sysinfo.py +1 -1
  9. {ipython-8.36.0/ipython.egg-info → ipython-8.37.0}/PKG-INFO +1 -1
  10. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/magics-generated.txt +4 -8
  11. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version8.rst +10 -0
  12. {ipython-8.36.0 → ipython-8.37.0}/examples/auto_suggest_llm.py +2 -2
  13. {ipython-8.36.0 → ipython-8.37.0/ipython.egg-info}/PKG-INFO +1 -1
  14. {ipython-8.36.0 → ipython-8.37.0}/.flake8 +0 -0
  15. {ipython-8.36.0 → ipython-8.37.0}/.mailmap +0 -0
  16. {ipython-8.36.0 → ipython-8.37.0}/.pre-commit-config.yaml +0 -0
  17. {ipython-8.36.0 → ipython-8.37.0}/COPYING.rst +0 -0
  18. {ipython-8.36.0 → ipython-8.37.0}/IPython/__init__.py +0 -0
  19. {ipython-8.36.0 → ipython-8.37.0}/IPython/__main__.py +0 -0
  20. {ipython-8.36.0 → ipython-8.37.0}/IPython/conftest.py +0 -0
  21. {ipython-8.36.0 → ipython-8.37.0}/IPython/consoleapp.py +0 -0
  22. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/__init__.py +0 -0
  23. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/alias.py +0 -0
  24. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/application.py +0 -0
  25. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/async_helpers.py +0 -0
  26. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/autocall.py +0 -0
  27. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/builtin_trap.py +0 -0
  28. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/compilerop.py +0 -0
  29. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/completerlib.py +0 -0
  30. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/crashhandler.py +0 -0
  31. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/debugger.py +0 -0
  32. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/display.py +0 -0
  33. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/display_functions.py +0 -0
  34. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/display_trap.py +0 -0
  35. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/displayhook.py +0 -0
  36. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/displaypub.py +0 -0
  37. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/error.py +0 -0
  38. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/events.py +0 -0
  39. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/excolors.py +0 -0
  40. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/extensions.py +0 -0
  41. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/formatters.py +0 -0
  42. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/getipython.py +0 -0
  43. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/guarded_eval.py +0 -0
  44. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/history.py +0 -0
  45. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/historyapp.py +0 -0
  46. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/hooks.py +0 -0
  47. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/inputsplitter.py +0 -0
  48. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/inputtransformer.py +0 -0
  49. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/inputtransformer2.py +0 -0
  50. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/interactiveshell.py +0 -0
  51. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/latex_symbols.py +0 -0
  52. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/logger.py +0 -0
  53. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/macro.py +0 -0
  54. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magic.py +0 -0
  55. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magic_arguments.py +0 -0
  56. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/__init__.py +0 -0
  57. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/ast_mod.py +0 -0
  58. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/auto.py +0 -0
  59. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/basic.py +0 -0
  60. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/code.py +0 -0
  61. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/config.py +0 -0
  62. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/display.py +0 -0
  63. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/execution.py +0 -0
  64. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/extension.py +0 -0
  65. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/history.py +0 -0
  66. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/logging.py +0 -0
  67. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/namespace.py +0 -0
  68. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/osm.py +0 -0
  69. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/packaging.py +0 -0
  70. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/pylab.py +0 -0
  71. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/magics/script.py +0 -0
  72. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/oinspect.py +0 -0
  73. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/page.py +0 -0
  74. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/payload.py +0 -0
  75. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/payloadpage.py +0 -0
  76. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/prefilter.py +0 -0
  77. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/profile/README_STARTUP +0 -0
  78. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/profileapp.py +0 -0
  79. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/profiledir.py +0 -0
  80. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/prompts.py +0 -0
  81. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/pylabtools.py +0 -0
  82. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/shellapp.py +0 -0
  83. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/splitinput.py +0 -0
  84. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/2x2.jpg +0 -0
  85. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/2x2.png +0 -0
  86. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/__init__.py +0 -0
  87. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/bad_all.py +0 -0
  88. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/daft_extension/daft_extension.py +0 -0
  89. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/nonascii.py +0 -0
  90. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/nonascii2.py +0 -0
  91. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/print_argv.py +0 -0
  92. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/refbug.py +0 -0
  93. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/simpleerr.py +0 -0
  94. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/tclass.py +0 -0
  95. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_alias.py +0 -0
  96. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_application.py +0 -0
  97. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_async_helpers.py +0 -0
  98. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_autocall.py +0 -0
  99. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_compilerop.py +0 -0
  100. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_completerlib.py +0 -0
  101. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_debugger.py +0 -0
  102. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_display.py +0 -0
  103. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_displayhook.py +0 -0
  104. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_events.py +0 -0
  105. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_exceptiongroup_tb.py +0 -0
  106. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_extension.py +0 -0
  107. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_formatters.py +0 -0
  108. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_guarded_eval.py +0 -0
  109. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_handlers.py +0 -0
  110. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_history.py +0 -0
  111. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_hooks.py +0 -0
  112. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_imports.py +0 -0
  113. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_inputsplitter.py +0 -0
  114. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_inputtransformer.py +0 -0
  115. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_inputtransformer2.py +0 -0
  116. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_inputtransformer2_line.py +0 -0
  117. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_interactiveshell.py +0 -0
  118. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_iplib.py +0 -0
  119. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_logger.py +0 -0
  120. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_magic.py +0 -0
  121. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_magic_arguments.py +0 -0
  122. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_magic_terminal.py +0 -0
  123. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_oinspect.py +0 -0
  124. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_page.py +0 -0
  125. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_paths.py +0 -0
  126. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_prefilter.py +0 -0
  127. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_profile.py +0 -0
  128. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_prompts.py +0 -0
  129. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_pylabtools.py +0 -0
  130. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_run.py +0 -0
  131. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_shellapp.py +0 -0
  132. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_splitinput.py +0 -0
  133. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/tests/test_ultratb.py +0 -0
  134. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/ultratb.py +0 -0
  135. {ipython-8.36.0 → ipython-8.37.0}/IPython/core/usage.py +0 -0
  136. {ipython-8.36.0 → ipython-8.37.0}/IPython/display.py +0 -0
  137. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/__init__.py +0 -0
  138. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/autoreload.py +0 -0
  139. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/storemagic.py +0 -0
  140. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/tests/__init__.py +0 -0
  141. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/tests/test_autoreload.py +0 -0
  142. {ipython-8.36.0 → ipython-8.37.0}/IPython/extensions/tests/test_storemagic.py +0 -0
  143. {ipython-8.36.0 → ipython-8.37.0}/IPython/external/__init__.py +0 -0
  144. {ipython-8.36.0 → ipython-8.37.0}/IPython/external/qt_for_kernel.py +0 -0
  145. {ipython-8.36.0 → ipython-8.37.0}/IPython/external/qt_loaders.py +0 -0
  146. {ipython-8.36.0 → ipython-8.37.0}/IPython/external/tests/__init__.py +0 -0
  147. {ipython-8.36.0 → ipython-8.37.0}/IPython/external/tests/test_qt_loaders.py +0 -0
  148. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/__init__.py +0 -0
  149. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/backgroundjobs.py +0 -0
  150. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/clipboard.py +0 -0
  151. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/deepreload.py +0 -0
  152. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/demo.py +0 -0
  153. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/display.py +0 -0
  154. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/editorhooks.py +0 -0
  155. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/guisupport.py +0 -0
  156. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/latextools.py +0 -0
  157. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/lexers.py +0 -0
  158. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/pretty.py +0 -0
  159. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/__init__.py +0 -0
  160. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test.wav +0 -0
  161. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_backgroundjobs.py +0 -0
  162. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_clipboard.py +0 -0
  163. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_deepreload.py +0 -0
  164. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_display.py +0 -0
  165. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_editorhooks.py +0 -0
  166. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_imports.py +0 -0
  167. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_latextools.py +0 -0
  168. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_lexers.py +0 -0
  169. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_pretty.py +0 -0
  170. {ipython-8.36.0 → ipython-8.37.0}/IPython/lib/tests/test_pygments.py +0 -0
  171. {ipython-8.36.0 → ipython-8.37.0}/IPython/paths.py +0 -0
  172. {ipython-8.36.0 → ipython-8.37.0}/IPython/py.typed +0 -0
  173. {ipython-8.36.0 → ipython-8.37.0}/IPython/sphinxext/__init__.py +0 -0
  174. {ipython-8.36.0 → ipython-8.37.0}/IPython/sphinxext/custom_doctests.py +0 -0
  175. {ipython-8.36.0 → ipython-8.37.0}/IPython/sphinxext/ipython_console_highlighting.py +0 -0
  176. {ipython-8.36.0 → ipython-8.37.0}/IPython/sphinxext/ipython_directive.py +0 -0
  177. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/__init__.py +0 -0
  178. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/console.py +0 -0
  179. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/debugger.py +0 -0
  180. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/embed.py +0 -0
  181. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/ipapp.py +0 -0
  182. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/magics.py +0 -0
  183. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/prompts.py +0 -0
  184. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/__init__.py +0 -0
  185. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/asyncio.py +0 -0
  186. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/glut.py +0 -0
  187. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/gtk.py +0 -0
  188. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/gtk3.py +0 -0
  189. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/gtk4.py +0 -0
  190. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/osx.py +0 -0
  191. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/pyglet.py +0 -0
  192. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/qt.py +0 -0
  193. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/tk.py +0 -0
  194. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/pt_inputhooks/wx.py +0 -0
  195. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/ptutils.py +0 -0
  196. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/shortcuts/__init__.py +0 -0
  197. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/shortcuts/auto_match.py +0 -0
  198. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/shortcuts/filters.py +0 -0
  199. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/__init__.py +0 -0
  200. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_debug_magic.py +0 -0
  201. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_embed.py +0 -0
  202. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_help.py +0 -0
  203. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_interactivshell.py +0 -0
  204. {ipython-8.36.0 → ipython-8.37.0}/IPython/terminal/tests/test_pt_inputhooks.py +0 -0
  205. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/__init__.py +0 -0
  206. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/decorators.py +0 -0
  207. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/globalipapp.py +0 -0
  208. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/ipunittest.py +0 -0
  209. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/Makefile +0 -0
  210. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/README.txt +0 -0
  211. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/__init__.py +0 -0
  212. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/dtexample.py +0 -0
  213. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/ipdoctest.py +0 -0
  214. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/pytest_ipdoctest.py +0 -0
  215. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/setup.py +0 -0
  216. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/simple.py +0 -0
  217. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/simplevars.py +0 -0
  218. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/test_combo.txt +0 -0
  219. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/test_example.txt +0 -0
  220. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/test_exampleip.txt +0 -0
  221. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/test_ipdoctest.py +0 -0
  222. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/plugin/test_refs.py +0 -0
  223. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/skipdoctest.py +0 -0
  224. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/tests/__init__.py +0 -0
  225. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/tests/test_decorators.py +0 -0
  226. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/tests/test_ipunittest.py +0 -0
  227. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/tests/test_tools.py +0 -0
  228. {ipython-8.36.0 → ipython-8.37.0}/IPython/testing/tools.py +0 -0
  229. {ipython-8.36.0 → ipython-8.37.0}/IPython/tests/cve.py +0 -0
  230. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/PyColorize.py +0 -0
  231. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/__init__.py +0 -0
  232. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_cli.py +0 -0
  233. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_common.py +0 -0
  234. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_emscripten.py +0 -0
  235. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_posix.py +0 -0
  236. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_win32.py +0 -0
  237. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/_process_win32_controller.py +0 -0
  238. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/capture.py +0 -0
  239. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/colorable.py +0 -0
  240. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/coloransi.py +0 -0
  241. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/contexts.py +0 -0
  242. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/daemonize.py +0 -0
  243. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/data.py +0 -0
  244. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/decorators.py +0 -0
  245. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/dir2.py +0 -0
  246. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/docs.py +0 -0
  247. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/encoding.py +0 -0
  248. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/eventful.py +0 -0
  249. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/frame.py +0 -0
  250. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/generics.py +0 -0
  251. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/importstring.py +0 -0
  252. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/io.py +0 -0
  253. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/ipstruct.py +0 -0
  254. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/jsonutil.py +0 -0
  255. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/localinterfaces.py +0 -0
  256. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/log.py +0 -0
  257. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/module_paths.py +0 -0
  258. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/openpy.py +0 -0
  259. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/path.py +0 -0
  260. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/process.py +0 -0
  261. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/py3compat.py +0 -0
  262. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/sentinel.py +0 -0
  263. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/shimmodule.py +0 -0
  264. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/signatures.py +0 -0
  265. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/strdispatch.py +0 -0
  266. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/sysinfo.py +0 -0
  267. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/syspathcontext.py +0 -0
  268. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tempdir.py +0 -0
  269. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/terminal.py +0 -0
  270. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/__init__.py +0 -0
  271. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_capture.py +0 -0
  272. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_decorators.py +0 -0
  273. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_deprecated.py +0 -0
  274. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_dir2.py +0 -0
  275. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_imports.py +0 -0
  276. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_importstring.py +0 -0
  277. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_io.py +0 -0
  278. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_module_paths.py +0 -0
  279. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_openpy.py +0 -0
  280. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_path.py +0 -0
  281. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_process.py +0 -0
  282. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_pycolorize.py +0 -0
  283. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_shimmodule.py +0 -0
  284. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_sysinfo.py +0 -0
  285. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_tempdir.py +0 -0
  286. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_text.py +0 -0
  287. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_tokenutil.py +0 -0
  288. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tests/test_wildcard.py +0 -0
  289. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/text.py +0 -0
  290. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/timing.py +0 -0
  291. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tokenutil.py +0 -0
  292. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/traitlets.py +0 -0
  293. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/tz.py +0 -0
  294. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/ulinecache.py +0 -0
  295. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/version.py +0 -0
  296. {ipython-8.36.0 → ipython-8.37.0}/IPython/utils/wildcard.py +0 -0
  297. {ipython-8.36.0 → ipython-8.37.0}/LICENSE +0 -0
  298. {ipython-8.36.0 → ipython-8.37.0}/MANIFEST.in +0 -0
  299. {ipython-8.36.0 → ipython-8.37.0}/README.rst +0 -0
  300. {ipython-8.36.0 → ipython-8.37.0}/_build_meta.py +0 -0
  301. {ipython-8.36.0 → ipython-8.37.0}/docs/Makefile +0 -0
  302. {ipython-8.36.0 → ipython-8.37.0}/docs/README.rst +0 -0
  303. {ipython-8.36.0 → ipython-8.37.0}/docs/autogen_api.py +0 -0
  304. {ipython-8.36.0 → ipython-8.37.0}/docs/autogen_config.py +0 -0
  305. {ipython-8.36.0 → ipython-8.37.0}/docs/autogen_magics.py +0 -0
  306. {ipython-8.36.0 → ipython-8.37.0}/docs/autogen_shortcuts.py +0 -0
  307. {ipython-8.36.0 → ipython-8.37.0}/docs/hist_simple.png +0 -0
  308. {ipython-8.36.0 → ipython-8.37.0}/docs/hist_with_text.png +0 -0
  309. {ipython-8.36.0 → ipython-8.37.0}/docs/make.cmd +0 -0
  310. {ipython-8.36.0 → ipython-8.37.0}/docs/man/ipython.1 +0 -0
  311. {ipython-8.36.0 → ipython-8.37.0}/docs/plot_simple.png +0 -0
  312. {ipython-8.36.0 → ipython-8.37.0}/docs/plot_simple_python.png +0 -0
  313. {ipython-8.36.0 → ipython-8.37.0}/docs/requirements.txt +0 -0
  314. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/2.0/running-crop.png +0 -0
  315. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/2.0/running.png +0 -0
  316. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/2.0/treeview.png +0 -0
  317. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/2.0/user-interface.png +0 -0
  318. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/2.0/widgets.png +0 -0
  319. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_1_prompt_no_text.png +0 -0
  320. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_2_print_hello_suggest.png +0 -0
  321. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_3_print_hello_suggest.png +0 -0
  322. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_4_print_hello.png +0 -0
  323. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_d_completions.png +0 -0
  324. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_d_phantom.png +0 -0
  325. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_def_completions.png +0 -0
  326. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_def_phantom.png +0 -0
  327. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_match_parens.png +0 -0
  328. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/auto_suggest_second_prompt.png +0 -0
  329. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/8.0/pathlib_pathlib_everywhere.jpg +0 -0
  330. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/autosuggest.gif +0 -0
  331. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_dashboard.png +0 -0
  332. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_dashboard_cluster.png +0 -0
  333. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_cythonmagic.png +0 -0
  334. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_long_out.png +0 -0
  335. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_octavemagic.png +0 -0
  336. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_rmagic.png +0 -0
  337. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_script_cells.png +0 -0
  338. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_spectrogram.png +0 -0
  339. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_notebook_tooltip.png +0 -0
  340. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_par_tb.png +0 -0
  341. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_qtconsole_baboon.png +0 -0
  342. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipy_013_qtconsole_completer.png +0 -0
  343. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ipython-6-screenshot.png +0 -0
  344. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/jedi_type_inference_60.png +0 -0
  345. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/kernel_selector_screenshot.png +0 -0
  346. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ms_visual_studio.png +0 -0
  347. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/notebook_specgram.png +0 -0
  348. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/ptshell_features.png +0 -0
  349. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/qtconsole.png +0 -0
  350. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/qtconsole_tabbed.png +0 -0
  351. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_images/unicode_completion.png +0 -0
  352. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_static/favicon.ico +0 -0
  353. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_static/logo.png +0 -0
  354. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_static/theme_overrides.css +0 -0
  355. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_templates/breadcrumbs.html +0 -0
  356. {ipython-8.36.0 → ipython-8.37.0}/docs/source/_templates/notebook_redirect.html +0 -0
  357. {ipython-8.36.0 → ipython-8.37.0}/docs/source/about/history.rst +0 -0
  358. {ipython-8.36.0 → ipython-8.37.0}/docs/source/about/index.rst +0 -0
  359. {ipython-8.36.0 → ipython-8.37.0}/docs/source/about/license_and_copyright.rst +0 -0
  360. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.conftest.rst +0 -0
  361. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.alias.rst +0 -0
  362. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.application.rst +0 -0
  363. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.async_helpers.rst +0 -0
  364. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.autocall.rst +0 -0
  365. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.builtin_trap.rst +0 -0
  366. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.compilerop.rst +0 -0
  367. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.completer.rst +0 -0
  368. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.completerlib.rst +0 -0
  369. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.crashhandler.rst +0 -0
  370. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.debugger.rst +0 -0
  371. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.error.rst +0 -0
  372. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.events.rst +0 -0
  373. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.excolors.rst +0 -0
  374. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.extensions.rst +0 -0
  375. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.formatters.rst +0 -0
  376. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.getipython.rst +0 -0
  377. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.guarded_eval.rst +0 -0
  378. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.history.rst +0 -0
  379. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.historyapp.rst +0 -0
  380. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.hooks.rst +0 -0
  381. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.inputsplitter.rst +0 -0
  382. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.inputtransformer.rst +0 -0
  383. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.inputtransformer2.rst +0 -0
  384. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.interactiveshell.rst +0 -0
  385. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.logger.rst +0 -0
  386. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.macro.rst +0 -0
  387. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magic.rst +0 -0
  388. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magic_arguments.rst +0 -0
  389. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.ast_mod.rst +0 -0
  390. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.auto.rst +0 -0
  391. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.basic.rst +0 -0
  392. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.code.rst +0 -0
  393. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.display.rst +0 -0
  394. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.execution.rst +0 -0
  395. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.extension.rst +0 -0
  396. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.history.rst +0 -0
  397. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.logging.rst +0 -0
  398. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.namespace.rst +0 -0
  399. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.osm.rst +0 -0
  400. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.packaging.rst +0 -0
  401. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.pylab.rst +0 -0
  402. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.rst +0 -0
  403. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.magics.script.rst +0 -0
  404. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.oinspect.rst +0 -0
  405. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.page.rst +0 -0
  406. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.payload.rst +0 -0
  407. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.payloadpage.rst +0 -0
  408. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.prefilter.rst +0 -0
  409. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.profileapp.rst +0 -0
  410. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.profiledir.rst +0 -0
  411. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.prompts.rst +0 -0
  412. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.pylabtools.rst +0 -0
  413. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.shellapp.rst +0 -0
  414. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.splitinput.rst +0 -0
  415. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.core.ultratb.rst +0 -0
  416. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.display.rst +0 -0
  417. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.backgroundjobs.rst +0 -0
  418. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.clipboard.rst +0 -0
  419. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.deepreload.rst +0 -0
  420. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.demo.rst +0 -0
  421. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.editorhooks.rst +0 -0
  422. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.guisupport.rst +0 -0
  423. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.latextools.rst +0 -0
  424. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.lexers.rst +0 -0
  425. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.lib.pretty.rst +0 -0
  426. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.paths.rst +0 -0
  427. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.rst +0 -0
  428. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.debugger.rst +0 -0
  429. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.embed.rst +0 -0
  430. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.interactiveshell.rst +0 -0
  431. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.ipapp.rst +0 -0
  432. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.magics.rst +0 -0
  433. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.prompts.rst +0 -0
  434. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.shortcuts.auto_match.rst +0 -0
  435. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.shortcuts.auto_suggest.rst +0 -0
  436. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.shortcuts.filters.rst +0 -0
  437. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.terminal.shortcuts.rst +0 -0
  438. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.testing.decorators.rst +0 -0
  439. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.testing.globalipapp.rst +0 -0
  440. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.testing.ipunittest.rst +0 -0
  441. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.testing.skipdoctest.rst +0 -0
  442. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.testing.tools.rst +0 -0
  443. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.PyColorize.rst +0 -0
  444. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.capture.rst +0 -0
  445. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.colorable.rst +0 -0
  446. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.coloransi.rst +0 -0
  447. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.contexts.rst +0 -0
  448. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.data.rst +0 -0
  449. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.decorators.rst +0 -0
  450. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.dir2.rst +0 -0
  451. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.encoding.rst +0 -0
  452. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.frame.rst +0 -0
  453. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.generics.rst +0 -0
  454. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.importstring.rst +0 -0
  455. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.io.rst +0 -0
  456. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.ipstruct.rst +0 -0
  457. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.module_paths.rst +0 -0
  458. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.openpy.rst +0 -0
  459. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.path.rst +0 -0
  460. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.process.rst +0 -0
  461. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.sentinel.rst +0 -0
  462. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.shimmodule.rst +0 -0
  463. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.strdispatch.rst +0 -0
  464. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.sysinfo.rst +0 -0
  465. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.syspathcontext.rst +0 -0
  466. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.tempdir.rst +0 -0
  467. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.terminal.rst +0 -0
  468. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.text.rst +0 -0
  469. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.timing.rst +0 -0
  470. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.tokenutil.rst +0 -0
  471. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.tz.rst +0 -0
  472. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.ulinecache.rst +0 -0
  473. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/IPython.utils.wildcard.rst +0 -0
  474. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/generated/gen.txt +0 -0
  475. {ipython-8.36.0 → ipython-8.37.0}/docs/source/api/index.rst +0 -0
  476. {ipython-8.36.0 → ipython-8.37.0}/docs/source/conf.py +0 -0
  477. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/callbacks.rst +0 -0
  478. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/custommagics.rst +0 -0
  479. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/details.rst +0 -0
  480. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/eventloops.rst +0 -0
  481. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/extensions/autoreload.rst +0 -0
  482. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/extensions/index.rst +0 -0
  483. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/extensions/storemagic.rst +0 -0
  484. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/index.rst +0 -0
  485. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/inputtransforms.rst +0 -0
  486. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/integrating.rst +0 -0
  487. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/intro.rst +0 -0
  488. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/options/config-generated.txt +0 -0
  489. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/options/index.rst +0 -0
  490. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/options/terminal.rst +0 -0
  491. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/shell_mimerenderer.rst +0 -0
  492. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/shortcuts/index.rst +0 -0
  493. {ipython-8.36.0 → ipython-8.37.0}/docs/source/config/shortcuts/table.tsv +0 -0
  494. {ipython-8.36.0 → ipython-8.37.0}/docs/source/coredev/index.rst +0 -0
  495. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/config.rst +0 -0
  496. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/execution.rst +0 -0
  497. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/figs/ipy_kernel_and_terminal.png +0 -0
  498. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/figs/ipy_kernel_and_terminal.svg +0 -0
  499. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/figs/other_kernels.png +0 -0
  500. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/figs/other_kernels.svg +0 -0
  501. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/how_ipython_works.rst +0 -0
  502. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/index.rst +0 -0
  503. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/inputhook_app.rst +0 -0
  504. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/kernels.rst +0 -0
  505. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/lexer.rst +0 -0
  506. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/messaging.rst +0 -0
  507. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/pycompat.rst +0 -0
  508. {ipython-8.36.0 → ipython-8.37.0}/docs/source/development/wrapperkernels.rst +0 -0
  509. {ipython-8.36.0 → ipython-8.37.0}/docs/source/index.rst +0 -0
  510. {ipython-8.36.0 → ipython-8.37.0}/docs/source/install/index.rst +0 -0
  511. {ipython-8.36.0 → ipython-8.37.0}/docs/source/install/install.rst +0 -0
  512. {ipython-8.36.0 → ipython-8.37.0}/docs/source/install/kernel_install.rst +0 -0
  513. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/autoawait.rst +0 -0
  514. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/figs/besselj.png +0 -0
  515. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/figs/colors_dark.png +0 -0
  516. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/figs/jn.html +0 -0
  517. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/figs/jn.xhtml +0 -0
  518. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/index.rst +0 -0
  519. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/magics.rst +0 -0
  520. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/plotting.rst +0 -0
  521. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/python-ipython-diff.rst +0 -0
  522. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/reference.rst +0 -0
  523. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/shell.rst +0 -0
  524. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/tips.rst +0 -0
  525. {ipython-8.36.0 → ipython-8.37.0}/docs/source/interactive/tutorial.rst +0 -0
  526. {ipython-8.36.0 → ipython-8.37.0}/docs/source/links.txt +0 -0
  527. {ipython-8.36.0 → ipython-8.37.0}/docs/source/overview.rst +0 -0
  528. {ipython-8.36.0 → ipython-8.37.0}/docs/source/parallel/index.rst +0 -0
  529. {ipython-8.36.0 → ipython-8.37.0}/docs/source/sphinx.toml +0 -0
  530. {ipython-8.36.0 → ipython-8.37.0}/docs/source/sphinxext.rst +0 -0
  531. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/development.rst +0 -0
  532. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-0.11.rst +0 -0
  533. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-0.12.rst +0 -0
  534. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-0.13.rst +0 -0
  535. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-1.0.rst +0 -0
  536. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-2.0.rst +0 -0
  537. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-3.rst +0 -0
  538. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-4.rst +0 -0
  539. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-5.rst +0 -0
  540. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-6.rst +0 -0
  541. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-7.rst +0 -0
  542. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/github-stats-8.rst +0 -0
  543. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/index.rst +0 -0
  544. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/pr/README.md +0 -0
  545. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/pr/antigravity-feature.rst +0 -0
  546. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/pr/incompat-switching-to-perl.rst +0 -0
  547. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.10.rst +0 -0
  548. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.11.rst +0 -0
  549. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.12.rst +0 -0
  550. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.13.rst +0 -0
  551. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.8.rst +0 -0
  552. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version0.9.rst +0 -0
  553. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version1.0.rst +0 -0
  554. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version2.0.rst +0 -0
  555. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version3.rst +0 -0
  556. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version3_widget_migration.rst +0 -0
  557. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version4.rst +0 -0
  558. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version5.rst +0 -0
  559. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version6.rst +0 -0
  560. {ipython-8.36.0 → ipython-8.37.0}/docs/source/whatsnew/version7.rst +0 -0
  561. {ipython-8.36.0 → ipython-8.37.0}/docs/sphinxext/apigen.py +0 -0
  562. {ipython-8.36.0 → ipython-8.37.0}/docs/sphinxext/configtraits.py +0 -0
  563. {ipython-8.36.0 → ipython-8.37.0}/docs/sphinxext/github.py +0 -0
  564. {ipython-8.36.0 → ipython-8.37.0}/docs/sphinxext/magics.py +0 -0
  565. {ipython-8.36.0 → ipython-8.37.0}/examples/Embedding/Index.ipynb +0 -0
  566. {ipython-8.36.0 → ipython-8.37.0}/examples/Embedding/embed_class_long.py +0 -0
  567. {ipython-8.36.0 → ipython-8.37.0}/examples/Embedding/embed_class_short.py +0 -0
  568. {ipython-8.36.0 → ipython-8.37.0}/examples/Embedding/embed_function.py +0 -0
  569. {ipython-8.36.0 → ipython-8.37.0}/examples/Embedding/start_ipython_config.py +0 -0
  570. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Animations Using clear_output.ipynb +0 -0
  571. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Background Jobs.ipynb +0 -0
  572. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Beyond Plain Python.ipynb +0 -0
  573. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Capturing Output.ipynb +0 -0
  574. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Cell Magics.ipynb +0 -0
  575. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Custom Display Logic.ipynb +0 -0
  576. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Importing Notebooks.ipynb +0 -0
  577. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Index.ipynb +0 -0
  578. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Plotting in the Notebook.ipynb +0 -0
  579. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Raw Input in the Notebook.ipynb +0 -0
  580. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Rich Output.ipynb +0 -0
  581. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Script Magics.ipynb +0 -0
  582. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/SymPy.ipynb +0 -0
  583. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Terminal Usage.ipynb +0 -0
  584. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Third Party Rich Output.ipynb +0 -0
  585. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Trapezoid Rule.ipynb +0 -0
  586. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Updating Displays.ipynb +0 -0
  587. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/Working With External Code.ipynb +0 -0
  588. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/data/flare.json +0 -0
  589. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/example-demo.py +0 -0
  590. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/gui/gui-glut.py +0 -0
  591. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/gui/gui-gtk4.py +0 -0
  592. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/gui/gui-qt.py +0 -0
  593. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/ipython-completion.bash +0 -0
  594. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/ipython-get-history.py +0 -0
  595. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/ipython.desktop +0 -0
  596. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/nbpackage/__init__.py +0 -0
  597. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/nbpackage/mynotebook.ipynb +0 -0
  598. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/nbpackage/nbs/__init__.py +0 -0
  599. {ipython-8.36.0 → ipython-8.37.0}/examples/IPython Kernel/nbpackage/nbs/other.ipynb +0 -0
  600. {ipython-8.36.0 → ipython-8.37.0}/examples/Index.ipynb +0 -0
  601. {ipython-8.36.0 → ipython-8.37.0}/examples/images/FrontendKernel.graffle/data.plist +0 -0
  602. {ipython-8.36.0 → ipython-8.37.0}/examples/images/FrontendKernel.graffle/image1.png +0 -0
  603. {ipython-8.36.0 → ipython-8.37.0}/examples/images/FrontendKernel.png +0 -0
  604. {ipython-8.36.0 → ipython-8.37.0}/examples/images/animation.m4v +0 -0
  605. {ipython-8.36.0 → ipython-8.37.0}/examples/images/ipython_logo.png +0 -0
  606. {ipython-8.36.0 → ipython-8.37.0}/examples/images/python_logo.svg +0 -0
  607. {ipython-8.36.0 → ipython-8.37.0}/examples/utils/cwd_prompt.py +0 -0
  608. {ipython-8.36.0 → ipython-8.37.0}/examples/utils/list_pyfiles.ipy +0 -0
  609. {ipython-8.36.0 → ipython-8.37.0}/examples/utils/list_subdirs.ipy +0 -0
  610. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/SOURCES.txt +0 -0
  611. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/dependency_links.txt +0 -0
  612. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/entry_points.txt +0 -0
  613. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/not-zip-safe +0 -0
  614. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/requires.txt +0 -0
  615. {ipython-8.36.0 → ipython-8.37.0}/ipython.egg-info/top_level.txt +0 -0
  616. {ipython-8.36.0 → ipython-8.37.0}/long_description.rst +0 -0
  617. {ipython-8.36.0 → ipython-8.37.0}/pyproject.toml +0 -0
  618. {ipython-8.36.0 → ipython-8.37.0}/scripts/ipython.ico +0 -0
  619. {ipython-8.36.0 → ipython-8.37.0}/scripts/ipython_nb.ico +0 -0
  620. {ipython-8.36.0 → ipython-8.37.0}/setup.cfg +0 -0
  621. {ipython-8.36.0 → ipython-8.37.0}/setup.py +0 -0
  622. {ipython-8.36.0 → ipython-8.37.0}/setupbase.py +0 -0
@@ -1145,6 +1145,48 @@ class Completer(Configurable):
1145
1145
  # we simple attribute matching with normal identifiers.
1146
1146
  _ATTR_MATCH_RE = re.compile(r"(.+)\.(\w*)$")
1147
1147
 
1148
+ def _strip_code_before_operator(self, code: str) -> str:
1149
+ o_parens = {"(", "[", "{"}
1150
+ c_parens = {")", "]", "}"}
1151
+
1152
+ # Dry-run tokenize to catch errors
1153
+ try:
1154
+ _ = list(tokenize.generate_tokens(iter(code.splitlines()).__next__))
1155
+ except tokenize.TokenError:
1156
+ # Try trimming the expression and retrying
1157
+ trimmed_code = self._trim_expr(code)
1158
+ try:
1159
+ _ = list(
1160
+ tokenize.generate_tokens(iter(trimmed_code.splitlines()).__next__)
1161
+ )
1162
+ code = trimmed_code
1163
+ except tokenize.TokenError:
1164
+ return code
1165
+
1166
+ tokens = _parse_tokens(code)
1167
+ encountered_operator = False
1168
+ after_operator = []
1169
+ nesting_level = 0
1170
+
1171
+ for t in tokens:
1172
+ if t.type == tokenize.OP:
1173
+ if t.string in o_parens:
1174
+ nesting_level += 1
1175
+ elif t.string in c_parens:
1176
+ nesting_level -= 1
1177
+ elif t.string != "." and nesting_level == 0:
1178
+ encountered_operator = True
1179
+ after_operator = []
1180
+ continue
1181
+
1182
+ if encountered_operator:
1183
+ after_operator.append(t.string)
1184
+
1185
+ if encountered_operator:
1186
+ return "".join(after_operator)
1187
+ else:
1188
+ return code
1189
+
1148
1190
  def _attr_matches(
1149
1191
  self, text: str, include_prefix: bool = True
1150
1192
  ) -> Tuple[Sequence[str], str]:
@@ -1152,9 +1194,12 @@ class Completer(Configurable):
1152
1194
  if not m2:
1153
1195
  return [], ""
1154
1196
  expr, attr = m2.group(1, 2)
1197
+ try:
1198
+ expr = self._strip_code_before_operator(expr)
1199
+ except tokenize.TokenError:
1200
+ pass
1155
1201
 
1156
1202
  obj = self._evaluate_expr(expr)
1157
-
1158
1203
  if obj is not_found:
1159
1204
  return [], ""
1160
1205
 
@@ -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 = 36
19
+ _version_minor = 37
20
20
  _version_patch = 0
21
21
  _version_extra = ".dev"
22
22
  # _version_extra = "rc1"
@@ -595,7 +595,9 @@ class TestCompleter(unittest.TestCase):
595
595
  """
596
596
  ip = get_ipython()
597
597
  ip.ex("a=list(range(5))")
598
+ ip.ex("b,c = 1, 1.2")
598
599
  ip.ex("d = {'a b': str}")
600
+ ip.ex("x=y='a'")
599
601
  _, c = ip.complete(".", line="a[0].")
600
602
  self.assertFalse(".real" in c, "Shouldn't have completed on a[0]: %s" % c)
601
603
 
@@ -653,6 +655,41 @@ class TestCompleter(unittest.TestCase):
653
655
  "Should have completed on `a.app`: %s",
654
656
  Completion(2, 4, "append"),
655
657
  )
658
+ _(
659
+ "x.upper() == y.",
660
+ 15,
661
+ ".upper",
662
+ "Should have completed on `x.upper() == y.`: %s",
663
+ Completion(15, 15, "upper"),
664
+ )
665
+ _(
666
+ "(x.upper() == y.",
667
+ 16,
668
+ ".upper",
669
+ "Should have completed on `(x.upper() == y.`: %s",
670
+ Completion(16, 16, "upper"),
671
+ )
672
+ _(
673
+ "(x.upper() == y).",
674
+ 17,
675
+ ".bit_length",
676
+ "Should have completed on `(x.upper() == y).`: %s",
677
+ Completion(17, 17, "bit_length"),
678
+ )
679
+ _(
680
+ "{'==', 'abc'}.",
681
+ 14,
682
+ ".add",
683
+ "Should have completed on `{'==', 'abc'}.`: %s",
684
+ Completion(14, 14, "add"),
685
+ )
686
+ _(
687
+ "b + c.",
688
+ 6,
689
+ ".hex",
690
+ "Should have completed on `b + c.`: %s",
691
+ Completion(6, 6, "hex"),
692
+ )
656
693
 
657
694
  def test_omit__names(self):
658
695
  # also happens to test IPCompleter as a configurable
@@ -502,13 +502,16 @@ class TerminalInteractiveShell(InteractiveShell):
502
502
  elif provider == "NavigableAutoSuggestFromHistory":
503
503
  # LLM stuff are all Provisional in 8.32
504
504
  if self._llm_provider_class:
505
- llm_provider_constructor = import_item(self._llm_provider_class)
506
- llm_provider = llm_provider_constructor(**self.llm_constructor_kwargs)
505
+
506
+ def init_llm_provider():
507
+ llm_provider_constructor = import_item(self._llm_provider_class)
508
+ return llm_provider_constructor(**self.llm_constructor_kwargs)
509
+
507
510
  else:
508
- llm_provider = None
511
+ init_llm_provider = None
509
512
  self.auto_suggest = NavigableAutoSuggestFromHistory()
510
513
  # Provisinal in 8.32
511
- self.auto_suggest._llm_provider = llm_provider
514
+ self.auto_suggest._init_llm_provider = init_llm_provider
512
515
 
513
516
  name = self.llm_prefix_from_history
514
517
 
@@ -171,16 +171,19 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
171
171
  # another request.
172
172
  _llm_task: asyncio.Task | None = None
173
173
 
174
- # This is the instance of the LLM provider from jupyter-ai to which we forward the request
175
- # to generate inline completions.
176
- _llm_provider: Any | None
174
+ # This is the constructor of the LLM provider from jupyter-ai
175
+ # to which we forward the request to generate inline completions.
176
+ _init_llm_provider: Callable | None
177
+
178
+ _llm_provider_instance: Any | None
177
179
  _llm_prefixer: Callable = lambda self, x: "wrong"
178
180
 
179
181
  def __init__(self):
180
182
  super().__init__()
181
183
  self.skip_lines = 0
182
184
  self._connected_apps = []
183
- self._llm_provider = None
185
+ self._llm_provider_instance = None
186
+ self._init_llm_provider = None
184
187
  self._request_number = 0
185
188
 
186
189
  def reset_history_position(self, _: Buffer):
@@ -317,6 +320,16 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
317
320
  "LLM task not cancelled, does your provider support cancellation?"
318
321
  )
319
322
 
323
+ @property
324
+ def _llm_provider(self):
325
+ """Lazy-initialized instance of the LLM provider.
326
+
327
+ Do not use in the constructor, as `_init_llm_provider` can trigger slow side-effects.
328
+ """
329
+ if self._llm_provider_instance is None and self._init_llm_provider:
330
+ self._llm_provider_instance = self._init_llm_provider()
331
+ return self._llm_provider_instance
332
+
320
333
  async def _trigger_llm(self, buffer) -> None:
321
334
  """
322
335
  This will ask the current llm provider a suggestion for the current buffer.
@@ -325,14 +338,14 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
325
338
  """
326
339
  # we likely want to store the current cursor position, and cancel if the cursor has moved.
327
340
  try:
328
- import jupyter_ai.completions.models as jai_models
341
+ import jupyter_ai_magics
329
342
  except ModuleNotFoundError:
330
- jai_models = None
343
+ jupyter_ai_magics = None
331
344
  if not self._llm_provider:
332
345
  warnings.warn("No LLM provider found, cannot trigger LLM completions")
333
346
  return
334
- if jai_models is None:
335
- warnings.warn("LLM Completion requires `jupyter_ai` to be installed")
347
+ if jupyter_ai_magics is None:
348
+ warnings.warn("LLM Completion requires `jupyter_ai_magics` to be installed")
336
349
 
337
350
  self._cancel_running_llm_task()
338
351
 
@@ -359,7 +372,7 @@ class NavigableAutoSuggestFromHistory(AutoSuggestFromHistory):
359
372
  provider to stream it's response back to us iteratively setting it as
360
373
  the suggestion on the current buffer.
361
374
 
362
- Unlike with JupyterAi, as we do not have multiple cell, the cell id
375
+ Unlike with JupyterAi, as we do not have multiple cells, the cell id
363
376
  is always set to `None`.
364
377
 
365
378
  We set the prefix to the current cell content, but could also insert the
@@ -1,7 +1,8 @@
1
1
  import asyncio
2
+ from time import sleep
2
3
 
3
4
  try:
4
- from jupyter_ai_magics import BaseProvider
5
+ from jupyter_ai_magics.providers import BaseProvider
5
6
  from langchain_community.llms import FakeListLLM
6
7
  except ImportError:
7
8
 
@@ -87,3 +88,16 @@ class FibonacciCompletionProvider(BaseProvider, FakeListLLM): # type: ignore[mi
87
88
  reply_to=request_number,
88
89
  done=True,
89
90
  )
91
+
92
+
93
+ class SlowStartingCompletionProvider(BaseProvider, FakeListLLM): # type: ignore[misc, valid-type]
94
+ id = "slow_provider"
95
+ name = "Slow Provider"
96
+ model_id_key = "model"
97
+ models = ["model_a"]
98
+
99
+ def __init__(self, **kwargs):
100
+ kwargs["responses"] = ["This fake response will be used for completion"]
101
+ kwargs["model_id"] = "model_a"
102
+ sleep(10)
103
+ super().__init__(**kwargs)
@@ -1,4 +1,5 @@
1
1
  import pytest
2
+ import time
2
3
  from IPython.terminal.interactiveshell import PtkHistoryAdapter
3
4
  from IPython.terminal.shortcuts.auto_suggest import (
4
5
  accept,
@@ -68,6 +69,17 @@ async def test_llm_autosuggestion():
68
69
  assert event.current_buffer.suggestion.text == FIBONACCI[len(text) :]
69
70
 
70
71
 
72
+ def test_slow_llm_provider_should_not_block_init():
73
+ ip = get_ipython()
74
+ provider = NavigableAutoSuggestFromHistory()
75
+ ip.auto_suggest = provider
76
+ start = time.perf_counter()
77
+ ip.llm_provider_class = "tests.fake_llm.SlowStartingCompletionProvider"
78
+ end = time.perf_counter()
79
+ elapsed = end - start
80
+ assert elapsed < 0.1
81
+
82
+
71
83
  @pytest.mark.parametrize(
72
84
  "text, suggestion, expected",
73
85
  [
@@ -1,2 +1,2 @@
1
1
  # GENERATED BY setup.py
2
- commit = "3525cd4bc"
2
+ commit = "86a50d33a"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipython
3
- Version: 8.36.0
3
+ Version: 8.37.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
@@ -698,12 +698,9 @@ Line magics
698
698
  -n print line numbers for each input. This feature is only available if numbered prompts are in use.
699
699
  -o also print outputs for each input.
700
700
  -p print classic '>>>' python prompts before each input. This is useful for making documentation, and in conjunction with -o, for producing doctest-ready output.
701
- -t print the 'translated' history, as IPython understands it. IPython filters your input and converts it all into valid Python source before executing it (things like magics or aliases are turned into function calls, for example).
702
- With this option, you'll see the native history instead of the user-entered version: '%cd /' will be seen as 'get_ipython().run_line_magic("cd", "/")' instead of '%cd /'.
703
- -f FILENAME FILENAME: instead of printing the output to the screen, redirect it to the given file. The file is always overwritten, though *when it can*, IPython asks for confirmation first. In particular, running the command 'history -f
704
- FILENAME' from the IPython Notebook interface will replace FILENAME even if it already exists *without* confirmation.
705
- -g <[PATTERN ...]> treat the arg as a glob pattern to search for in (full) history. This includes the saved history (almost all commands ever written). The pattern may contain '?' to match one unknown character and '*' to match any number of unknown
706
- characters. Use '%hist -g' to show full saved history (may be very long).
701
+ -t print the 'translated' history, as IPython understands it. IPython filters your input and converts it all into valid Python source before executing it (things like magics or aliases are turned into function calls, for example). With this option, you'll see the native history instead of the user-entered version: '%cd /' will be seen as 'get_ipython().run_line_magic("cd", "/")' instead of '%cd /'.
702
+ -f FILENAME FILENAME: instead of printing the output to the screen, redirect it to the given file. The file is always overwritten, though *when it can*, IPython asks for confirmation first. In particular, running the command 'history -f FILENAME' from the IPython Notebook interface will replace FILENAME even if it already exists *without* confirmation.
703
+ -g <[PATTERN ...]> treat the arg as a glob pattern to search for in (full) history. This includes the saved history (almost all commands ever written). The pattern may contain '?' to match one unknown character and '*' to match any number of unknown characters. Use '%hist -g' to show full saved history (may be very long).
707
704
  -l <[LIMIT]> get the last n lines from all sessions. Specify n as a single arg, or the default is the last 10 lines.
708
705
  -u when searching history using `-g`, show only unique history.
709
706
 
@@ -2323,8 +2320,7 @@ Cell magics
2323
2320
  run the cell, capturing stdout, stderr, and IPython's rich display() calls.
2324
2321
 
2325
2322
  positional arguments:
2326
- output The name of the variable in which to store output. This is a utils.io.CapturedIO object with stdout/err attributes for the text of the captured output. CapturedOutput also has a show() method for displaying the output, and __call__ as
2327
- well, so you can use that to quickly display the output. If unspecified, captured output is discarded.
2323
+ output The name of the variable in which to store output. This is a utils.io.CapturedIO object with stdout/err attributes for the text of the captured output. CapturedOutput also has a show() method for displaying the output, and __call__ as well, so you can use that to quickly display the output. If unspecified, captured output is discarded.
2328
2324
 
2329
2325
  options:
2330
2326
  --no-stderr Don't capture stderr.
@@ -2,6 +2,16 @@
2
2
  8.x Series
3
3
  ============
4
4
 
5
+ .. _version 8.37:
6
+
7
+ IPython 8.37
8
+ ============
9
+
10
+ This release includes fixes for the tab completer and LLM completer backported from IPython 9.4:
11
+
12
+ - :ghpull:`14910` Eliminate startup delay when LLM completion provider is configured
13
+ - :ghpull:`14898` Fix attribute completion for expressions with comparison operators
14
+
5
15
  .. _version 8.36:
6
16
 
7
17
  IPython 8.36
@@ -68,13 +68,13 @@ import asyncio
68
68
  import textwrap
69
69
  from typing import Any, AsyncIterable, AsyncIterator
70
70
 
71
- from jupyter_ai.completions.models import (
71
+ from jupyter_ai_magics.models.completion import (
72
72
  InlineCompletionList,
73
73
  InlineCompletionReply,
74
74
  InlineCompletionRequest,
75
75
  InlineCompletionStreamChunk,
76
76
  )
77
- from jupyter_ai_magics import BaseProvider
77
+ from jupyter_ai_magics.providers import BaseProvider
78
78
  from langchain_community.llms import FakeListLLM
79
79
 
80
80
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ipython
3
- Version: 8.36.0
3
+ Version: 8.37.0
4
4
  Summary: IPython: Productive Interactive Computing
5
5
  Author: The IPython Development Team
6
6
  Author-email: ipython-dev@python.org
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes