{
  "__type": "IngestedDoc",
  "__tag": 4010,
  "_content": {},
  "_ordered_sections": [],
  "item_file": null,
  "item_line": null,
  "item_type": null,
  "aliases": [],
  "example_section_data": {
    "__type": "Section",
    "__tag": 4015,
    "children": [],
    "title": [],
    "level": 0,
    "target": null
  },
  "see_also": [],
  "signature": null,
  "references": null,
  "qa": "whatsnew:version7",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "7.x Series"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This version contains a single fix:  fix uncaught BdbQuit exceptions on ipdb exit "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#13668"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/13668",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.34"
        }
      ],
      "level": 1,
      "target": "version 7.34"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Allow IPython hooks to receive current cell ids when frontend support it. See    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13600"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13600",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "?"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " does not trigger the insertion of a new cell anymore as most frontend    allow proper multiline edition. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13625"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13625",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.33"
        }
      ],
      "level": 1,
      "target": "version 7.33"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.32"
        }
      ],
      "level": 1,
      "target": "version 7.32"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The ability to configure magics to be lazily loaded has been added to IPython. See the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ipython --help-all"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " section on "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MagicsManager.lazy_magic"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". One can now use      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "c.MagicsManager.lazy_magics = {\n          \"my_magic\": \"slow.to.import\",\n          \"my_other_magic\": \"also.slow\",\n}",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "And on first use of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%my_magic"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", or corresponding cell magic, or other line magic, the corresponding "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "load_ext"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will be called just before trying to invoke the magic."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Autoload magic lazily"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Update sphinxify  for Docrepr 0.2.0  "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13503"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13503",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Set co_name for cells run line by line (to fix debugging with Python 3.10)    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13535"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13535",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/99",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.31 brings a couple of backports and fixes from the 8.0 branches, it is likely one of the last releases of the 7.x series, as 8.0 will probably be released between this release and what would have been 7.32."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Please test 8.0 beta/rc releases in addition to this release."
            }
          ]
        },
        {
          "__type": "DefList",
          "__tag": 4033,
          "children": [
            {
              "__type": "DefListItem",
              "__tag": 4037,
              "dt": {
                "__type": "Paragraph",
                "__tag": 4045,
                "children": [
                  {
                    "__type": "Text",
                    "__tag": 4046,
                    "value": "This Releases:"
                  }
                ]
              },
              "dd": [
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Backport some fixes for Python 3.10 ("
                            },
                            {
                              "__type": "Link",
                              "__tag": 4049,
                              "children": [
                                {
                                  "__type": "Text",
                                  "__tag": 4046,
                                  "value": "#13412"
                                }
                              ],
                              "url": "https://github.com/IPython/IPython/pull/13412",
                              "title": ""
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ")"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "use full-alpha transparency on dvipng rendered LaTeX ("
                            },
                            {
                              "__type": "Link",
                              "__tag": 4049,
                              "children": [
                                {
                                  "__type": "Text",
                                  "__tag": 4046,
                                  "value": "#13372"
                                }
                              ],
                              "url": "https://github.com/IPython/IPython/pull/13372",
                              "title": ""
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ")"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/95",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.31"
        }
      ],
      "level": 1,
      "target": "version 7.31"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.30 fixes a couple of bugs introduce in previous releases (in particular with respect to path handling), and introduce a few features and improvements:"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notably we will highlight "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#13267"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/13267",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " \"Document that "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%run"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can execute notebooks and ipy scripts.\", which is the first commit of Fernando Pérez since mid 2016 (IPython 5.1). If you are new to IPython, Fernando created IPython in 2001. The other most recent contribution of Fernando to IPython itself was May 2018, by reviewing and merging PRs. I want to note that Fernando is still active but mostly as a mentor and leader of the whole Jupyter organisation, but we're still happy to see him contribute code !"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#13290"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/13290",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " \"Use sphinxify (if available) in object_inspect_mime path\" should allow richer Repr of docstrings when using jupyterlab inspector."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#13311"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/13311",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " make the debugger use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ThreadPoolExecutor"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for debugger cmdloop. This should fix some issues/infinite loop, but let us know if you come across any regressions. In particular this fixes issues with "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "kmaork/madbg"
                }
              ],
              "url": "https://github.com/kmaork/madbg",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", a remote debugger for IPython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Note that this is likely the ante-penultimate release of IPython 7.x as a stable branch, as I hope to release IPython 8.0 as well as IPython 7.31 next month/early 2022."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 8.0 will drop support for Python 3.7, removed nose as a dependency, and 7.x will only get critical bug fixes with 8.x becoming the new stable. This will not be possible without "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NumFOCUS Small Development Grants"
                }
              ],
              "url": "https://numfocus.org/programs/small-development-grants",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " Which allowed us to hire "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Nikita Kniazev"
                }
              ],
              "url": "https://github.com/Kojoley",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " who provide Python and C++ help and contracting work."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/94?closed=1",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.30"
        }
      ],
      "level": 1,
      "target": "version 7.30"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.29 brings a couple of new functionalities to IPython and a number of bugfixes. It is one of the largest recent release, relatively speaking, with close to 15 Pull Requests."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "fix an issue where base64 was returned instead of bytes when showing figures "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13162"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13162",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "fix compatibility with PyQt6, PySide 6 "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13172"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13172",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ". This may be of    interest if you are running on Apple Silicon as only qt6.2+ is natively    compatible."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "fix matplotlib qtagg eventloop "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13179"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13179",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Multiple docs fixes, typos, ... etc."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Debugger will now exit by default on SigInt "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13218"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13218",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", this will be    useful in notebook/lab if you forgot to exit the debugger. \"Interrupt Kernel\"    will now exist the debugger."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It give Pdb the ability to skip code in decorators. If functions contain a special value names "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__debuggerskip__ = True|False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", the function will not be stepped into, and Pdb will step into lower frames only if the value is set to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The exact behavior is still likely to have corner cases and will be refined in subsequent releases. Feedback welcome. See the debugger module documentation for more info. Thanks to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for funding this feature."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The main branch of IPython is receiving a number of changes as we received a "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NumFOCUS SDG"
                }
              ],
              "url": "https://numfocus.org/programs/small-development-grants",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " ($4800), to help us finish replacing "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "nose"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " by "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pytest"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and make IPython future proof with an 8.0 release."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/93",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.29"
        }
      ],
      "level": 1,
      "target": "version 7.29"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.28 is again a minor release that mostly bring bugfixes, and couple of improvement. Many thanks to MrMino, who again did all the work this month, and made a number of documentation improvements."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Here is a non-exhaustive list of changes,"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Fixes:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "async with doesn't allow newlines "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13090"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13090",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Dynamically changing to vi mode via %config magic) "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13091"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13091",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Virtualenv handling fixes:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "init_virtualenv now uses Pathlib "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12548"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12548",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix Improper path comparison of virtualenv directories "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13140"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13140",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix virtual environment user warning for lower case paths "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13094"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13094",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Adapt to all sorts of drive names for cygwin "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13153"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13153",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "New Features:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "enable autoplay in embed YouTube player "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13133"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13133",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Documentation:"
                }
              ]
            },
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix formatting for the core.interactiveshell documentation "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13118"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13118",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix broken ipyparallel's refs "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13138"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13138",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Improve formatting of %time documentation "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13125"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13125",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Reword the YouTubeVideo autoplay WN "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13147"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13147",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.28"
        }
      ],
      "level": 1,
      "target": "version 7.28"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Highlighted features"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can add any extra attributes to the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "<iframe>"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " tag using the new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "extras"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "IFrame"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " class. For example      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [1]: from IPython.display import IFrame\n\nIn [2]: IFrame(src=\"src\", width=300, height=300, extras=['loading=\"eager\"'])",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The above cells will result in the following HTML code being displayed in a notebook      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "<iframe\n    width=\"300\"\n    height=\"300\"\n    src=\"src\"\n    frameborder=\"0\"\n    allowfullscreen\n    loading=\"eager\"\n></iframe>",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Related to the above, the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "YouTubeVideo"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " class now takes an "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "allow_autoplay"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " flag, which sets up the iframe of the embedded YouTube video such that it allows autoplay."
            }
          ]
        },
        {
          "__type": "Admonition",
          "__tag": 4056,
          "kind": "note",
          "base_type": "note",
          "children": [
            {
              "__type": "AdmonitionTitle",
              "__tag": 4055,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "note "
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Whether this works depends on the autoplay policy of the browser rendering the HTML allowing it. It also could get blocked by some browser extensions."
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Try it out!"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [1]: from IPython.display import YouTubeVideo\n\nIn [2]: YouTubeVideo(\"dQw4w9WgXcQ\", allow_autoplay=True)",
          "execution_status": null
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "YouTubeVideo"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " autoplay and the ability to add extra attributes to "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "IFrame"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/92",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.27 is a minor release that fixes a couple of issues and compatibility."
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Add support for GTK4 "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#131011"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/131011",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Add support for Qt6 "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#13085"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/13085",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix an issue with pip magic on windows "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#13093"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/13093",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.27"
        }
      ],
      "level": 1,
      "target": "version 7.27"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/91",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.26 is a minor release that fixes a couple of issues, updates in API and Copyright/Licenses issues around various part of the codebase."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We'll highlight "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "this issue"
                }
              ],
              "url": "https://github.com/ipython/ipython/issues/13039",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " pointing out we were including and refereeing to code from Stack Overflow which was CC-BY-SA, hence incompatible with the BSD license of IPython. This lead us to a rewriting of the corresponding logic which in our case was done in a more efficient way (in our case we were searching string prefixes instead of full strings)."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You will notice also a number of documentation improvements and cleanup."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Of particular interest are the following Pull-requests:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "The IPython directive now uses Sphinx logging for warnings. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13030"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13030",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Add expiry days option to pastebin magic and change http protocol to https.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13056"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13056",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Make Ipython.utils.timing work with jupyterlite "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#13050"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/13050",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.26"
        }
      ],
      "level": 1,
      "target": "version 7.26"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Pastebin magic now has "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-e"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option to determine  the number of days for paste expiration. For example the paste that created with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%pastebin -e 20 1"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic will be available for next 20 days."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Pastebin magic expiry days option"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release and in particular MrMino who is doing most of the work those days. You can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/90",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.25 is a minor release that contains a single bugfix, which is highly recommended for all users of ipdb, ipython debugger %debug magic and similar."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Issuing commands like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "where"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " from within the debugger would reset the local variables changes made by the user. It is interesting to look at the root cause of the issue as accessing an attribute ("
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "frame.f_locals"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") would trigger this side effects."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks in particular to the patience from the reporters at D.E. Shaw for their initial bug report that was due to a similar coding oversight in an extension, and who took time to debug and narrow down the problem."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.25"
        }
      ],
      "level": 1,
      "target": "version 7.25"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release you can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/89",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Third release of IPython for 2021, mostly containing bug fixes. A couple of not typical updates:"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.24"
        }
      ],
      "level": 1,
      "target": "version 7.24"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix an issue where "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%recall"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " would both succeeded and print an error message    it failed. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12952"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12952",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Drop support for NumPy 1.16 – practically has no effect beyond indicating in    package metadata that we do not support it. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12937"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12937",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The debugger (and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%debug"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic) have been improved and can skip or hide frames originating from files that are not writable to the user, as these are less likely to be the source of errors, or be part of system files this can be a useful addition when debugging long errors."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In addition to the global "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "skip_hidden True|False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " command, the debugger has gained finer grained control of predicates as to whether to a frame should be considered hidden. So far 3 predicates are available :"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "tbhide"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ": frames containing the local variable "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "__tracebackhide__"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " set to     True."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "readonly"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ": frames originating from readonly files, set to False."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ipython_internal"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ": frames that are likely to be from IPython internal     code, set to True."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can toggle individual predicates during a session with"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "ipdb> skip_predicates readonly True",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Read-only files will now be considered hidden frames."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can call "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "skip_predicates"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " without arguments to see the states of current predicates:"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "ipdb> skip_predicates\ncurrent predicates:\n    tbhide : True\n    readonly : False\n    ipython_internal : True",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "If all predicates are set to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ",  "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "skip_hidden"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will practically have no effect. We attempt to warn you when all predicates are False."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Note that the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "readonly"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " predicate may increase disk access as we check for file access permission for all frames on many command invocation, but is usually cached by operating systems. Let us know if you encounter any issues."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As the IPython debugger does not use the traitlets infrastructure for configuration, by editing your "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": ".pdbrc"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " files and appending commands you would like to be executed just before entering the interactive prompt. For example:"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "# file : ~/.pdbrc\nskip_predicates readonly True\nskip_predicates tbhide False",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Will hide read only frames by default and show frames marked with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__tracebackhide__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Debugger improvements"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release you can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/87",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries, in particular above mentioned improvements to the debugger."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Third release of IPython for 2021, mostly containing bug fixes. A couple of not typical updates:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "We moved to GitHub actions away from Travis-CI, the transition may not be    100% complete (not testing on nightly anymore), but as we ran out of    Travis-Ci hours on the IPython organisation that was a necessary step.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12900"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12900",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "We have a new dependency: "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "matplotlib-inline"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", which try to extract    matplotlib inline backend specific behavior. It is available on PyPI and    conda-forge thus should not be a problem to upgrade to this version. If you    are a package maintainer that might be an extra dependency to package first.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12817"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12817",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " (IPython 7.23.1 fix a typo that made this change fail)"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In the addition/new feature category, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "display()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now have a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "clear=True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option to clear the display if any further outputs arrives, allowing users to avoid having to use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "clear_output()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " directly. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12823"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12823",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In bug fixes category, this release fix an issue when printing tracebacks containing Unicode characters "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12758"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12758",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In code cleanup category "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12932"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12932",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " remove usage of some deprecated functionality for compatibility with Python 3.10."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.23 and 7.23.1"
        }
      ],
      "level": 1,
      "target": "version 7.23"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release you can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/86",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". In particular MrMino for responding to almost all new issues, and triaging many of the old ones, as well as takluyver, minrk, willingc for reacting quikly when we ran out of CI Hours."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to organisations, QuantStack (martinRenou and SylvainCorlay) for extracting matplotlib inline backend into its own package, and the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Second release of IPython for 2021, mostly containing bug fixes. Here is a quick rundown of the few changes."
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix some "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "sys.excepthook"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " shenanigan when embedding with qt, recommended if   you – for example – use "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "napari"
                        }
                      ],
                      "url": "https://napari.org",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12842"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12842",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix bug when using the new ipdb "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%context"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12844"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12844",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Couples of deprecation cleanup "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12868"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12868",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Update for new dpast.com api if you use the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%pastbin"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12712"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12712",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Remove support for numpy before 1.16. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12836"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12836",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.22"
        }
      ],
      "level": 1,
      "target": "version 7.22"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We have a new team member that you should see more often on the IPython repository, Błażej Michalik (@MrMino) have been doing regular contributions to IPython, and spent time replying to many issues and guiding new users to the codebase; they now have triage permissions to the IPython repository and we'll work toward giving them more permission in the future."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release you can find all individual contributions to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/84",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Thanks as well to organisations, QuantStack for working on debugger compatibility for Xeus_python, and the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "D. E. Shaw group"
                }
              ],
              "url": "https://deshaw.com/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for sponsoring work on IPython and related libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.21 is the first release we have back on schedule of one release every month; it contains a number of minor fixes and improvements, notably, the new context command for ipdb"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.21"
        }
      ],
      "level": 1,
      "target": "version 721"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It is now possible to change the number of lines shown in the backtrace information in ipdb using \"context\" command. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12826"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12826",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "(thanks @MrMino, there are other improvement from them on master)."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New \"context\" command in ipdb"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix some issues on new osx-arm64 "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12804"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12804",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12807"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12807",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Compatibility with Xeus-Python for debugger protocol, "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12809"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12809",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Misc docs fixes for compatibility and uniformity with Numpydoc.   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12824"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12824",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Other notable changes in IPython 7.21"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors to this release you can find all individual contribution to this milestone "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "on github"
                }
              ],
              "url": "https://github.com/ipython/ipython/milestone/83",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.20 is the accumulation of 3 month of work on IPython, spacing between IPython release have been increased from the usual once a month for various reason."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Mainly as I'm too busy and the effectively sole maintainer, and"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Second because not much changes happened before mid December."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The main driver for this release was the new version of Jedi 0.18 breaking API; which was taken care of in the master branch early in 2020 but not in 7.x as I though that by now 8.0 would be out."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The inclusion of a resolver in pip did not help and actually made things worse. If usually I would have simply pinned Jedi to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "<0.18"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "; this is not a solution anymore as now pip is free to install Jedi 0.18, and downgrade IPython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "I'll do my best to keep the regular release, but as the 8.0-dev branch and 7.x are starting to diverge this is becoming difficult in particular with my limited time, so if you have any cycles to spare I'll appreciate your help to respond to issues and pushing 8.0 forward."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Here are thus some of the changes for IPython 7.20."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Support for PyQt5 >= 5.11 "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12715"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12715",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%reset"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " remove imports more aggressively "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12718"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12718",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "fix the "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%conda"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " magic "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12739"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12739",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "compatibility with Jedi 0.18, and bump minimum Jedi version. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12793"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12793",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.20"
        }
      ],
      "level": 1,
      "target": "version 720"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.19 accumulative two month of works, bug fixes and improvements, there was exceptionally no release last month."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix to restore the ability to specify more than one extension using command     line flags when using traitlets 5.0 "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12543"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12543",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Docs docs formatting that make the install commands work on zsh     "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12587"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12587",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Always display the last frame in tracebacks even if hidden with     "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "__tracebackhide__"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12601"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12601",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Avoid an issue where a callback can be registered multiple times.     "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12625"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12625",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Avoid an issue in debugger mode where frames changes could be lost.     "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12627"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12627",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Never hide the frames that invoke a debugger, even if marked as hidden by     "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "__tracebackhide__"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12631"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12631",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix calling the debugger in a recursive manner "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12659"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12659",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A number of code changes have landed on master and we are getting close to enough new features and codebase improvement that a 8.0 start to make sens. For downstream packages, please start working on migrating downstream testing away from iptest and using pytest, as nose will not work on Python 3.10 and we will likely start removing it as a dependency for testing."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.19"
        }
      ],
      "level": 1,
      "target": "version 719"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.18 is a minor release that mostly contains bugfixes."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "CRLF"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " is now handled by magics my default; solving some issues due to copy    pasting on windows. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12475"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12475",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Requiring pexpect "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": ">=4.3"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " as we are Python 3.7+ only and earlier version of    pexpect will be incompatible. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12510"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12510",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Minimum jedi version is now 0.16. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12488"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12488",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.18"
        }
      ],
      "level": 1,
      "target": "version 718"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.17 brings a couple of new improvements to API and a couple of user facing changes to make the terminal experience more user friendly."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12407"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12407",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " introduces the ability to pass extra argument to the IPython debugger class; this is to help a new project from "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "kmaork"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (https://github.com/kmaork/madbg) to feature a fully remote debugger."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12410"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12410",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " finally remove support for 3.6, while the codebase is still technically compatible; IPython will not install on Python 3.6."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "lots of work on the debugger and hidden frames from "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@impact27"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12437"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12437",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12445"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12445",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12460"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12460",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and in particular "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12453"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12453",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which make the debug magic more robust at handling spaces."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Biggest API addition is code transformation which is done before code execution; IPython allows a number of hooks to catch non-valid Python syntax (magic, prompt stripping...etc). Transformers are usually called many time; typically:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "When trying to figure out whether the code is complete and valid (should we    insert a new line or execute ?)"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "During actual code execution pass before giving the code to Python's    "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "exec"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This lead to issues when transformer might have had side effects; or do external queries. Starting with IPython 7.17 you can expect your transformer to be called less time."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Input transformers are now called only once in the execution path of "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "InteractiveShell",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", allowing to register transformer that potentially have side effects (note that this is not recommended). Internal methods "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "should_run_async",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "run_cell_async",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now take a recommended optional "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "transformed_cell",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "preprocessing_exc_tuple",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameters that will become mandatory at some point in the future; that is to say cells need to be explicitly transformed to be valid Python syntax ahead of trying to run them. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12440"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12440",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ";"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "input_transformers"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can now also have an attribute "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "has_side_effects"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " set to "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "True",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", when this attribute is present; this  will prevent the transformers from being ran when IPython is trying to guess whether the user input is complete. Note that this may means you will need to explicitly execute in some case where your transformations are now not ran; but will not affect users with no custom extensions."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.17"
        }
      ],
      "level": 1,
      "target": "version 717"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Change of API and exposed objects automatically detected using "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "frappuccino"
                }
              ],
              "url": "https://pypi.org/project/frappuccino/",
              "title": ""
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "The following items are new since 7.16.0       "
                }
              ]
            },
            {
              "__type": "Code",
              "__tag": 4050,
              "value": "+ IPython.core.interactiveshell.InteractiveShell.get_local_scope(self, stack_depth)",
              "execution_status": null
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "The following signatures differ since 7.16.0       "
                }
              ]
            },
            {
              "__type": "Code",
              "__tag": 4050,
              "value": "- IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True)\n+ IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True, *, transformed_cell=None, preprocessing_exc_tuple=None)\n\n- IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell)\n+ IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell, *, transformed_cell=None, preprocessing_exc_tuple=None)\n\n- IPython.terminal.debugger.TerminalPdb.pt_init(self)\n+ IPython.terminal.debugger.TerminalPdb.pt_init(self, pt_session_options=None)",
              "execution_status": null
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This method was added       "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "+ IPython.core.interactiveshell.InteractiveShell.get_local_scope",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Which is now also present on subclasses       "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "+ IPython.terminal.embed.InteractiveShellEmbed.get_local_scope\n+ IPython.terminal.interactiveshell.TerminalInteractiveShell.get_local_scope",
          "execution_status": null
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "API Changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.16.1 was release immediately after 7.16.0 to fix a conda packaging issue. The source is identical to 7.16.0 but the file permissions in the tar are different."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.16.2 pins jedi dependency to \"<=0.17.2\" which should prevent some issues for users still on python 3.6. This may not be sufficient as pip may still allow to downgrade IPython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Compatibility with Jedi > 0.17.2 was not added as this would have meant bumping the minimal version to >0.16."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.16.1, 7.16.2"
        }
      ],
      "level": 1,
      "target": "version 716"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The default traceback mode will now skip frames that are marked with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__tracebackhide__ = True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and show how many traceback frames have been skipped. This can be toggled by using "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "xmode",
              "domain": null,
              "role": "magic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--show"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--hide"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " attribute. It will have no effect on non verbose traceback modes."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The ipython debugger also now understands "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__tracebackhide__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " as well and will skip hidden frames when displaying. Movement up and down the stack will skip the hidden frames and will show how many frames were hidden. Internal IPython frames are also now hidden by default. The behavior can be changed with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "skip_hidden"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " while in the debugger, command and accepts \"yes\", \"no\", \"true\" and \"false\" case insensitive parameters."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.16"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Exceptions are now (re)raised when running notebooks via the "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "%run",
                      "domain": null,
                      "role": "magic",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", helping to catch issues in workflows and   pipelines. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12301"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12301",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix inputhook for qt 5.15.0 "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12355"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12355",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix wx inputhook "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12375"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12375",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Add handling for malformed pathext env var (Windows) "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12367"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12367",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "use $SHELL in system_piped "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#12360"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/12360",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for uniform behavior with   ipykernel."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc Noticeable changes:"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.15 reproducible build did not work, so we try again this month "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12358"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12358",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Reproducible Build"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Change of API and exposed objects automatically detected using "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "frappuccino"
                }
              ],
              "url": "https://pypi.org/project/frappuccino/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (still in beta):"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following items are new and mostly related to understanding "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__tracebackhide__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "+ IPython.core.debugger.Pdb.do_down(self, arg)\n+ IPython.core.debugger.Pdb.do_skip_hidden(self, arg)\n+ IPython.core.debugger.Pdb.do_up(self, arg)\n+ IPython.core.debugger.Pdb.hidden_frames(self, stack)\n+ IPython.core.debugger.Pdb.stop_here(self, frame)",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following items have been removed      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "- IPython.core.debugger.Pdb.new_do_down\n- IPython.core.debugger.Pdb.new_do_up",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Those were implementation details."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "API Changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.15 brings a number of bug fixes and user facing improvements."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.15"
        }
      ],
      "level": 1,
      "target": "version 715"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Long completion name have better elision in terminal "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12284"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12284",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "I've started to test on Python 3.9 "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12307"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12307",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " and fix some errors."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Hi DPI scaling of figures when using qt eventloop "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12314"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12314",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Document the ability to have systemwide configuration for IPython.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12328"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12328",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix issues with input autoformatting "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12336"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12336",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "IPython.core.debugger.Pdb"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " is now interruptible ("
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12168"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12168",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", in 7.14    but forgotten in release notes)"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Video HTML attributes ("
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12212"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12212",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", in 7.14 but forgotten in release    notes)"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc Noticeable changes:"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Starting with IPython 7.15, I am attempting to provide reproducible builds, that is to say you should be able from the source tree to generate an sdist and wheel that are identical byte for byte with the publish version on PyPI."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "I've only tested on a couple of machines so far and the process is relatively straightforward, so this mean that IPython not only have a deterministic build process, but also I have either removed, or put under control all effects of the build environments on the final artifact.  I encourage you to attempt the build process on your machine as documented in "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "core_developer_guide",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "coredev:index"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and let me know if you do not obtain an identical artifact."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "While reproducible builds is critical to check that the supply chain of (open source) software has not been compromised, it can also help to speedup many of the build processes in large environment (conda, apt...) by allowing better caching of intermediate build steps."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Learn more on "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "https://reproducible-builds.org/"
                }
              ],
              "url": "https://reproducible-builds.org/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Reflections on trusting trust"
                }
              ],
              "url": "https://dl.acm.org/doi/10.1145/358198.358210",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is also one of the cornerstone and recommended reads on this subject."
            }
          ]
        },
        {
          "__type": "Admonition",
          "__tag": 4056,
          "kind": "note",
          "base_type": "note",
          "children": [
            {
              "__type": "AdmonitionTitle",
              "__tag": 4055,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "note "
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "The build commit from which the sdist is generated is also "
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "signed"
                    }
                  ],
                  "url": "https://en.wikipedia.org/wiki/Digital_signature",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ", so you should be able to check it has not been compromised, and the git repository is a "
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "merkle-tree"
                    }
                  ],
                  "url": "https://en.wikipedia.org/wiki/Merkle_tree",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ", you can check the consistency with "
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "git-fsck"
                    }
                  ],
                  "url": "https://git-scm.com/docs/git-fsck",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " which you likely "
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "want to enable by default"
                    }
                  ],
                  "url": "https://gist.github.com/mbbx6spp/14b86437e794bffb4120",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "."
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Reproducible Build"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.15 will be the Last IPython version to officially support Python 3.6, as stated by "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NumPy Enhancement Proposal 29"
                }
              ],
              "url": "https://numpy.org/neps/nep-0029-deprecation_policy.html",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Starting with next minor version of IPython I may stop testing on Python 3.6 and may stop publishing release artifacts that install on Python 3.6"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NEP29: Last version to support Python 3.6"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Highlighted features are not new, but seem to not be widely known, this section will help you discover in more narrative form what you can do with IPython."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Highlighted features"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In terminal IPython it is possible to increase the height of the tab-completion menu. To do so set the value of "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "TerminalInteractiveShell.space_for_menu",
              "domain": null,
              "role": "configtrait",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", this will reserve more space at the bottom of the screen for various kind of menus in IPython including tab completion and searching in history."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Increase Tab Completion Menu Height"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "If you have a preferred code formatter, you can configure IPython to reformat your code. Set the value of "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "TerminalInteractiveShell.autoformatter",
              "domain": null,
              "role": "configtrait",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to for example "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "'black'"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and IPython will auto format your code when possible."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Autoformat Code in the terminal"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython  7.14 is a minor release that fix a couple of bugs and prepare compatibility with new or future versions of some libraries."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.14"
        }
      ],
      "level": 1,
      "target": "version 714"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix compatibility with Sphinx 3+ "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12235"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12235",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Remove deprecated matplotlib parameter usage, compatibility with matplotlib    3.3+ :"
                        },
                        {
                          "__type": "InlineRole",
                          "__tag": 4003,
                          "value": "122250",
                          "domain": null,
                          "role": null,
                          "inventory": null
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Important changes:"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "set "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": ".py"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " extension when editing current buffer in vi/emacs. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12167"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12167",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "support for unicode identifiers in "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "?"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "/"
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "??"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12208"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12208",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "add extra options to the "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "Video"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " Rich objects "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12212"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12212",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "add pretty-printing to "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "SimpleNamespace"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12230"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12230",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc Changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "KeyboardInterrupt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will now interrupt IPython's extended debugger, in order to make Jupyter able to interrupt it. ("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12168"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12168",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython.core.debugger.Pdb is now interruptible"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Add an option to "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "IPython.display.Video",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "IPython",
                "version": "*",
                "kind": "api",
                "path": "IPython.core.display:Video"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to change the attributes of the HTML display of the video ("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12212"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12212",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Video HTML attributes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many object present in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "IPython.core.display"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " are there for internal use only, and should  already been imported from "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "IPython.display"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " by users and external libraries. Trying to import those from "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "IPython.core.display"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is still possible but will trigger a deprecation warning in later versions of IPython and will become errors in the future."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This will simplify compatibility with other Python kernels (like Xeus-Python), and simplify code base."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Pending deprecated imports"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.13 is the final release of the 7.x branch since master is diverging toward an 8.0. Exiting new features have already been merged in 8.0 and will not be available on the 7.x branch. All the changes below have been backported from the master branch."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix inability to run PDB when inside an event loop "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12141"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12141",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix ability to interrupt some processes on windows "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12137"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12137",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix debugger shortcuts "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12132"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12132",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "improve tab completion when inside a string by removing irrelevant elements "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12128"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12128",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix display of filename tab completion when the path is long "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12122"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12122",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Many removal of Python 2 specific code path "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12110"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12110",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "displaying wav files do not require NumPy anymore, and is 5x to 30x faster "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12113"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12113",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See the list of all closed issues and pull request on "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "github"
                }
              ],
              "url": "https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.13"
        }
      ],
      "level": 1,
      "target": "version 713"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.12 is a minor update that mostly brings code cleanup, removal of longtime deprecated function and a couple update to documentation cleanup as well."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notable changes are the following:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Exit non-zero when ipython is given a file path to run that doesn't exist "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12074"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12074",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Test PR on ARM64 with Travis-CI "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12073"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12073",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Update CI to work with latest Pytest "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12086"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12086",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Add infrastructure to run ipykernel eventloop via trio "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12097"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12097",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Support git blame ignore revs "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12091"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12091",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Start multi-line "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "__repr__"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " s on their own line "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#12099"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/12099",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.12"
        }
      ],
      "level": 1,
      "target": "version 712"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A couple of deprecated functions (no-op) have been reintroduces in py3compat as Cython was still relying on them, and will be removed in a couple of versions."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.11.1"
        }
      ],
      "level": 1,
      "target": "version 7111"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.11 received a couple of compatibility fixes and code cleanup."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A number of function in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "py3compat"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " have been removed; a number of types in the IPython code base are now non-ambiguous and now always "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "unicode"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " instead of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Union[Unicode,bytes]"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "; many of the relevant code path have thus been simplified/cleaned and types annotation added."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython support several verbosity level from exceptions. "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "xmode plain"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now support chained exceptions. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11999"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11999",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We are starting to remove "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "shell=True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in some usages of subprocess. While not directly a security issue (as IPython is made to run arbitrary code anyway) it is not good practice and we'd like to show the example. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12023"
                }
              ],
              "url": "https://github.com/IPython/IPython/issues/12023",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This discussion was started by "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@mschwager"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " thanks to a new auditing tool they are working on with duo-labs ("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "dlint"
                }
              ],
              "url": "https://github.com/duo-labs/dlint",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Work around some bugs in Python 3.9 tokenizer "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#12057"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/12057",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython will now print its version after a crash. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11986"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11986",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This is likely the last release from the 7.x series that will see new feature. The master branch will soon accept large code changes and thrilling new features; the 7.x branch will only start to accept critical bug fixes, and update dependencies."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.11"
        }
      ],
      "level": 1,
      "target": "version 711"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb, asyncio and Prompt Toolkit 3."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.10.2"
        }
      ],
      "level": 1,
      "target": "version 7102"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please update Prompt toolkit to 3.0.2 at least), and fixes some interaction with headless IPython."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.10.1"
        }
      ],
      "level": 1,
      "target": "version 7101"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.10 is the first double digit minor release in the  last decade, and first since the release of IPython 1.0, previous double digit minor release was in August 2009."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We've been trying to give you regular release on the last Friday of every month for a guaranty of rapid access to bug fixes and new features."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Unlike the previous first few releases that have seen only a couple of code changes, 7.10 bring a number of changes, new features and bugfixes."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.10.0"
        }
      ],
      "level": 1,
      "target": "version 7100"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython has decided to follow the informational "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NEP 29"
                }
              ],
              "url": "https://numpy.org/neps/nep-0029-deprecation_policy.html",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which layout a clear policy as to which version of (C)Python and NumPy are supported."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We thus dropped support for Python 3.5, and cleaned up a number of code path that were Python-version dependent. If you are on 3.5 or earlier pip should automatically give you the latest compatible version of IPython so you do not need to pin to a given version."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Stop Support for Python 3.5 – Adopt NEP 29"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few breaking changes. We believe IPython 7.10 should be compatible with both Prompt Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so please report any issues."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Support for Prompt Toolkit 3.0"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Pull Request "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11933"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11933",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " introduced an optimisation in the prompt rendering logic that should decrease the resource usage of IPython when using the _default_ configuration but could potentially introduce a regression of functionalities if you are using a custom prompt."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We know assume if you haven't changed the default keybindings that the prompt "
            },
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "will not change"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " during the duration of your input – which is for example not true when using vi insert mode that switches between "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "[ins]",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "[nor]",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for the current mode."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "If you are experiencing any issue let us know."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Prompt Rendering Performance improvements"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The IPython terminal can now auto format your code just before entering a new line or executing a command. To do so use the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--TerminalInteractiveShell.autoformatter"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option and set it to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "'black'"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "; if black is installed IPython will use black to format your code when possible."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython cannot always properly format your code; in particular it will auto formatting with "
            },
            {
              "__type": "Emphasis",
              "__tag": 4047,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "black"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will only work if:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Your code does not contains magics or special python syntax."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "There is no code after your cursor."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Black API is also still in motion; so this may not work with all versions of black."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It should be possible to register custom formatter, though the API is till in flux."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Code autoformatting"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "When using IPython terminal it is now possible to register function to handle arbitrary mimetypes. While rendering non-text based representation was possible in many jupyter frontend; it was not possible in terminal IPython, as usually terminal are limited to displaying text. As many terminal these days provide escape sequences to display non-text; bringing this loved feature to IPython CLI made a lot of sens. This functionality will not only allow inline images; but allow opening of external program; for example "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "mplayer"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to \"display\" sound files."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "So far only the hooks necessary for this are in place, but no default mime renderers added; so inline images will only be available via extensions. We will progressively enable these features by default in the next few releases, and contribution is welcomed."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We welcome any feedback on the API. See "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "shell_mimerenderer",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "config:shell_mimerenderer"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more information."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This is originally based on work form in "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10610"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10610",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " from @stephanh42 started over two years ago, and still a lot need to be done."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Completions can define their own ordering "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11855"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11855",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Enable Plotting in the same cell than the one that import matplotlib    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11916"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11916",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Allow to store and restore multiple variables at once "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11930"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11930",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can see "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "all pull-requests"
                }
              ],
              "url": "https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for this release."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "MISC"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Change of API and exposed objects automatically detected using "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "frappuccino"
                }
              ],
              "url": "https://pypi.org/project/frappuccino/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (still in beta):"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following items are new in IPython 7.10      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "+ IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)\n+ IPython.terminal.interactiveshell.PTK3\n+ IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)\n+ IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following items have been removed in 7.10      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "- IPython.lib.pretty.DICT_IS_ORDERED",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following signatures differ between versions      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "- IPython.extensions.storemagic.restore_aliases(ip)\n+ IPython.extensions.storemagic.restore_aliases(ip, alias='None')",
          "execution_status": null
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "API Changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "@stephanh42 who started the work on inline images in terminal 2 years ago"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "@augustogoulart who spent a lot of time triaging issues and responding to    users."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "@con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you    like IPython, Jupyter and many other library of the SciPy stack you can    donate to numfocus.org non profit"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Special Thanks"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.9 is a small release with a couple of improvement and bug fixes."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Xterm terminal title should be restored on exit "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11910"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11910",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "special variables "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "_"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ",``__``, "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "___"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " are not set anymore when cache size    is 0 or less.  "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11877"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11877",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Autoreload should have regained some speed by using a new heuristic logic to    find all objects needing reload. This should avoid large objects traversal    like pandas dataframes. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11876"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11876",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Get ready for Python 4. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11874"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11874",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineRole",
                          "__tag": 4003,
                          "value": "%env",
                          "domain": null,
                          "role": null,
                          "inventory": null
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " Magic now has heuristic to hide potentially sensitive values "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11896"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11896",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This is a small release despite a number of Pull Request Pending that need to be reviewed/worked on. Many of the core developers have been busy outside of IPython/Jupyter and we thanks all contributor for their patience; we'll work on these as soon as we have time."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.9.0"
        }
      ],
      "level": 1,
      "target": "version 790"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.8.0 contain a few bugfix and 2 new APIs:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Enable changing the font color for LaTeX rendering "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11840"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11840",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "and Re-Expose some PDB API (see below)"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.8.0"
        }
      ],
      "level": 1,
      "target": "version780"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Expose the built-in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pdb.Pdb"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " API. "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Pdb"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " constructor arguments are generically exposed, regardless of python version. Newly exposed arguments:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "skip"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Python 3.1+"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "nosiginnt"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Python 3.2+"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "readrc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Python 3.6+"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Try it out      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "from IPython.terminal.debugger import TerminalPdb\npdb = TerminalPdb(skip=[\"skipthismodule\"])",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11840"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11840",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Expose Pdb API"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a few of the outstanding issue fixed:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix a bug introduced in 7.6 where the "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%matplotlib"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " magic would fail on      previously acceptable arguments "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11814"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11814",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix the manage location on freebsd "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11808"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11808",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix error message about aliases after "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%reset"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " call in ipykernel      "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11806"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11806",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix Duplication completions in emacs "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11803"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11803",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We are planning to adopt "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NEP29"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/14086",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (still currently in draft) which may make this minor version of IPython the last one to support Python 3.5 and will make the code base more aggressive toward removing compatibility with older versions of Python."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "GitHub now support to give only \"Triage\" permissions to users; if you'd like to help close stale issues and labels issues please reach to us with your GitHub Username and we'll add you to the triage team. It is a great way to start contributing and a path toward getting commit rights."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.7.0"
        }
      ],
      "level": 1,
      "target": "version770"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.6.1 contain a critical bugfix in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%timeit"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic, which would crash on some inputs as a side effect of "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11716"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11716",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11812"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11812",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.6.1"
        }
      ],
      "level": 1,
      "target": "version761"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.6.0 contains a couple of bug fixes and number of small features additions as well as some compatibility with the current development version of Python 3.8."
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Add a "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "-l"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " option to "
                        },
                        {
                          "__type": "InlineRole",
                          "__tag": 4003,
                          "value": "psearch",
                          "domain": null,
                          "role": "magic",
                          "inventory": null
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " to list the available search      types. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11672"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11672",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Support "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "PathLike"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " for "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "DisplayObject"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " and "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "Image"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ". "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11764"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11764",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Configurability of timeout in the test suite for slow platforms.      "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11756"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11756",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Accept any casing for matplotlib backend. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#121748"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/121748",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Properly skip test that requires numpy to be installed "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11723"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11723",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "More support for Python 3.8 and positional only arguments (pep570)      "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11720"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11720",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Unicode names for the completion are loaded lazily on first use which      should decrease startup time. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11693"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11693",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Autoreload now update the types of reloaded objects; this for example allow      pickling of reloaded objects. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11644"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11644",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix a bug where "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%%time"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " magic would suppress cell output. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11716"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11716",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.6.0"
        }
      ],
      "level": 1,
      "target": "whatsnew760"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Most of the work between 7.5 and 7.6 was to prepare the migration from our testing framework to pytest. Most of the test suite should now work by simply issuing "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pytest"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " from the root of the repository."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The migration to pytest is just at its beginning. Many of our test still rely on IPython-specific plugins for nose using pytest (doctest using IPython syntax is one example of this where test appear as \"passing\", while no code has been ran). Many test also need to be updated like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "yield-test"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to be properly parametrized tests."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Migration to pytest allowed me to discover a number of issues in our test suite; which was hiding a number of subtle issues – or not actually running some of the tests in our test suite – I have thus corrected many of those; like improperly closed resources; or used of deprecated features. I also made use of the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pytest --durations=..."
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to find some of our slowest test and speed them up (our test suite can now be up to 10% faster). Pytest as also a variety of plugins and flags which will make the code quality of IPython and the testing experience better."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Prepare migration to pytest (instead of nose) for testing"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We skipped the release of 7.6 at the end of May, but will attempt to get back on schedule. We are starting to think about making introducing backward incompatible change and start the 8.0 series."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many of the remaining task for 7.4 and 7.5, like updating the website."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one minor new feature. The "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "Audio",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " display element can now be assigned an element id when displayed in browser. See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11670"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11670",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The major outstanding bug fix correct a change of behavior that was introduce in 7.4.0 where some cell magics would not be able to access or modify global scope when using the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@needs_local_scope"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " decorator. This was typically encountered with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%%time"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%%timeit"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magics. See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11659"
                }
              ],
              "url": "https://github.com/IPython/IPython/issues/11659",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11698"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11698",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.5.0"
        }
      ],
      "level": 1,
      "target": "whatsnew750"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.4.0"
        }
      ],
      "level": 1,
      "target": "whatsnew740"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously, we provided completion for a unicode name with its relative symbol. With this, now IPython provides complete suggestions to unicode name symbols."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As on the PR, if user types "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\\LAT<tab>"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", IPython provides a list of possible completions. In this case, it would be something like     "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "'LATIN CAPITAL LETTER A',\n'LATIN CAPITAL LETTER B',\n'LATIN CAPITAL LETTER C',\n'LATIN CAPITAL LETTER D',\n....",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This help to type unicode character that do not have short latex aliases, and have long unicode names. for example "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Ͱ"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\\GREEK CAPITAL LETTER HETA"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This feature was contributed by Luciana Marques "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11583"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11583",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Unicode name completions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Added 'normalize' argument to "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "IPython.display.Audio",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "IPython",
                "version": "*",
                "kind": "api",
                "path": "IPython.lib.display:Audio"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This argument applies when audio data is given as an array of samples. The default of "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "normalize=True",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " preserves prior behavior of normalizing the audio to the maximum possible range. Setting to "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "False",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " disables normalization."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Make audio normalization optional"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix improper acceptation of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "return"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " outside of functions. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11641"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11641",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fixed PyQt 5.11 backwards incompatibility causing sip import failure.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11613"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11613",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix Bug where "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "type?"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " would crash IPython. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#1608"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/1608",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Allow to apply "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "@needs_local_scope"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " to cell magics for convenience.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11542"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11542",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Miscellaneous"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.3.0 bring several bug fixes and small improvements that you will described below."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The biggest change to this release is the implementation of the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%conda"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%pip"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magics, that will attempt to install packages in the "
            },
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "current\nenvironment"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". You may still need to restart your interpreter or kernel for the change to be taken into account, but it should simplify installation of packages into remote environment. Installing using pip/conda from the command line is still the prefer method."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%pip"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic was already present, but was only printing a warning; now it will actually forward commands to pip."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Misc bug fixes and improvements:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Compatibility with Python 3.8."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Do not expand shell variable in execution magics, and added the    "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "no_var_expand"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " decorator for magic requiring a similar functionality    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11516"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11516",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Add "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%pip"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " and "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%conda"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " magic "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11524"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11524",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Re-initialize posix aliases after a "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%reset"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11528"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11528",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Allow the IPython command line to run "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "*.ipynb"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " files "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11529"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11529",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.3.0"
        }
      ],
      "level": 1,
      "target": "whatsnew730"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix a bug preventing PySide2 GUI integration from working "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11464"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11464",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Run CI on Mac OS ! "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11471"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11471",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix IPython \"Demo\" mode. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11498"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11498",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%run"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " magic  with path in name "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11499"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11499",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix: add CWD to sys.path "
                        },
                        {
                          "__type": "Emphasis",
                          "__tag": 4047,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "after"
                            }
                          ]
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " stdlib "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11502"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11502",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Better rendering of signatures, especially long ones. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11505"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11505",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Re-enable jedi by default if it's installed "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11506"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11506",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Add New "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "minimal"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " exception reporting mode (useful for educational purpose). See "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11509"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11509",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.2.0"
        }
      ],
      "level": 1,
      "target": "whatsnew720"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "When using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "?"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "/"
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "??"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " on a class, IPython will now list the first 10 subclasses."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris is one of the people who played a critical role in IPython/Jupyter getting funding."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We are grateful for all the help Chris has given us over the years, and we're now proud to have code contributed by Chris in IPython."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Added ability to show subclasses when using pinfo and other utilities"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can set this option to force the %cd magic to behave as if "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-q"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was passed      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [1]: cd /\n/\n\nIn [2]: %config OSMagics.cd_force_quiet = True\n\nIn [3]: cd /tmp\n\nIn [4]:",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11491"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11491",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "OSMagics.cd_force_quiet configuration option"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Set the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "TerminalInteractiveShell.prompt_includes_vi_mode"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to a boolean value (default: True) to control this feature. See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11492"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11492",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "In vi editing mode, whether the prompt includes the current vi mode can now be configured"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x transition. It also brings "
            },
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Compatibility with Python 3.7.1"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", as we're unwillingly relying on a bug in CPython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "New Core Dev:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "We welcome Jonathan Slenders to the committers. Jonathan has done a fantastic    work on prompt_toolkit, and we'd like to recognise his impact by giving him    commit rights. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11397"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/issues/11397",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notable Changes"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Major update of \"latex to unicode\" tab completion map (see below)"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notable New Features:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Restore functionality and documentation of the "
                        },
                        {
                          "__type": "Strong",
                          "__tag": 4048,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "sphinx directive"
                            }
                          ]
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", which    is now stricter (fail on error by daefault), has new configuration options,    has a brand new documentation page "
                        },
                        {
                          "__type": "CrossRef",
                          "__tag": 4002,
                          "value": "ipython_directive",
                          "reference": {
                            "__type": "LocalRef",
                            "__tag": 4022,
                            "kind": "docs",
                            "path": "sphinxext"
                          },
                          "kind": "exists"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " (which needs    some cleanup). It is also now "
                        },
                        {
                          "__type": "Emphasis",
                          "__tag": 4047,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "tested"
                            }
                          ]
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " so we hope to have less regressions.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11402"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11402",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "IPython.display.Video"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " now supports "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "width"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " and "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "height"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " arguments,    allowing a custom width and height to be set instead of using the video's    width and height. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11353"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11353",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Warn when using "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "HTML('<iframe>')"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "IFrame"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11350"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11350",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Allow Dynamic switching of editing mode between vi/emacs and show    normal/input mode in prompt when using vi. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11390"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11390",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ". Use "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%config    TerminalInteractiveShell.editing_mode = 'vi'"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " or "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%config    TerminalInteractiveShell.editing_mode = 'emacs'"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " to dynamically switch    between modes."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notable Fixes:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix entering of "
                        },
                        {
                          "__type": "Strong",
                          "__tag": 4048,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "multi-line blocks in terminal"
                            }
                          ]
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " IPython, and various    crashes in the new input transformation machinery "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11354"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11354",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ",    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11356"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11356",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11358"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11358",
                          "title": ""
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ". These also fix a "
                        },
                        {
                          "__type": "Strong",
                          "__tag": 4048,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Compatibility bug\n   with Python 3.7.1"
                            }
                          ]
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix moving through generator stack in ipdb "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11266"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11266",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "%Magic command arguments now support quoting. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11330"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11330",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Re-add "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "rprint"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " and "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "rprinte"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " aliases. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11331"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11331",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Remove implicit dependency on "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ipython_genutils"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11317"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11317",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Make "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "nonlocal"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " raise "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "SyntaxError"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " instead of silently failing in async    mode. "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11382"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11382",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix mishandling of magics and "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "= !"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " assignment just after a dedent in    nested code blocks "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11418"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11418",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Fix instructions for custom shortcuts "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11426"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11426",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Notable Internals improvements:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Use of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "os.scandir"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " (Python 3 only) to speed up some file system operations.    "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11365"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11365",
                          "title": ""
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "use "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "perf_counter"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "clock"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " for more precise    timing results with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "%time"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " "
                        },
                        {
                          "__type": "Link",
                          "__tag": 4049,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "#11376"
                            }
                          ],
                          "url": "https://github.com/IPython/IPython/pull/11376",
                          "title": ""
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many thanks to all the contributors and in particular to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "bartskowron"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "tonyfast"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " who handled some pretty complicated bugs in the input machinery. We had a number of first time contributors and maybe hacktoberfest participants that made significant contributions and helped us free some time to focus on more complicated bugs."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can see all the closed issues and Merged PR, new features and fixes "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "here"
                }
              ],
              "url": "https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.1.0"
        }
      ],
      "level": 1,
      "target": "whatsnew710"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In IPython 7.1 the Unicode completion map has been updated and synchronized with the Julia language."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Added and removed character characters:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "\\jmath"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " ("
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "ȷ"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "), "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "\\\\underleftrightarrow"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " (U+034D, combining) have been  added, while "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "\\\\textasciicaron"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " have been removed"
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Some sequences have seen their prefix removed:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "6 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\text...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "45 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\Elz...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "65 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\B...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "450 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\m...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Some sequences have seen their prefix shortened:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "5 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\mitBbb...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\bbi...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "52 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\mit...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\i...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "216 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\mbfit...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\bi...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "222 characters "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\mbf...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " should now be inputed with "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\b...<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " directly,"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A couple of characters had their sequence simplified:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ð"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\dh<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\eth<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ħ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\hbar<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\Elzxh<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ɸ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\ltphi<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\textphi<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ϴ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\varTheta<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\textTheta<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ℇ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\eulermascheroni<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\Eulerconst<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ℎ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\planck<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\Planckconst<tab>"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "U+0336 (COMBINING LONG STROKE OVERLAY), type "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\strike<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": ", instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\Elzbar<tab>"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A couple of sequences have been updated:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\varepsilon"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " now gives "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ɛ"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " (GREEK SMALL LETTER EPSILON) instead of "
                        },
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "ε"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " (GREEK LUNATE EPSILON SYMBOL),"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "\\underbar"
                        },
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": " now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE)."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Unicode Completion update"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Released Thursday September 27th, 2018"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7 includes major feature improvements. This is also the second major version of IPython to support only Python 3 – starting at Python 3.4. Python 2 is still community-supported on the bugfix only 5.x branch, but we remind you that Python 2 \"end of life\" is on Jan 1st 2020."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We were able to backport bug fixes to the 5.x branch thanks to our backport bot which backported more than "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "70 Pull-Requests"
                }
              ],
              "url": "https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "PRs that still need manual backport"
                }
              ],
              "url": "https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The IPython 6.x branch will likely not see any further release unless critical bugs are found."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Make sure you have pip > 9.0 before upgrading. You should be able to update by running:"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "pip install ipython --upgrade",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Or, if you have conda installed:"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "conda install ipython",
          "execution_status": null
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 7.0.0"
        }
      ],
      "level": 1,
      "target": "whatsnew700"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 7.0+ now uses "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "prompt_toolkit 2.0"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". If you still need to use an earlier "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "prompt_toolkit"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " version, you may need to pin IPython to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "<7.0"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Prompt Toolkit 2.0"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Staring with IPython 7.0 on Python 3.6+, IPython can automatically "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "await"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " top level code. You should not need to access an event loop or runner yourself. To learn more, read the "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "autoawait",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "interactive:autoawait"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " section of our docs, see "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11265"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11265",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", or try the following code      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "Python 3.6.0\nType 'copyright', 'credits' or 'license' for more information\nIPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.\n\nIn [1]: import aiohttp\n   ...: result = aiohttp.get('https://api.github.com')\n\nIn [2]: response = await result\n<pause for a few 100s ms>\n\nIn [3]: await response.json()\nOut[3]:\n{'authorizations_url': 'https://api.github.com/authorizations',\n 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',\n...\n}",
          "execution_status": null
        },
        {
          "__type": "Admonition",
          "__tag": 4056,
          "kind": "note",
          "base_type": "note",
          "children": [
            {
              "__type": "AdmonitionTitle",
              "__tag": 4055,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "note "
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Async integration is experimental code, behavior may change or be removed between Python and IPython versions without warnings."
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Integration is by default with "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "asyncio",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "asyncio",
                "version": "*",
                "kind": "api",
                "path": "asyncio"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", but other libraries can be configured -- like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "curio"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "trio"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " -- to improve concurrency in the REPL      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [1]: %autoawait trio\n\nIn [2]: import trio\n\nIn [3]: async def child(i):\n   ...:     print(\"   child %s goes to sleep\"%i)\n   ...:     await trio.sleep(2)\n   ...:     print(\"   child %s wakes up\"%i)\n\nIn [4]: print('parent start')\n   ...: async with trio.open_nursery() as n:\n   ...:     for i in range(3):\n   ...:         n.spawn(child, i)\n   ...: print('parent end')\nparent start\n   child 2 goes to sleep\n   child 0 goes to sleep\n   child 1 goes to sleep\n   <about 2 seconds pause>\n   child 2 wakes up\n   child 1 wakes up\n   child 0 wakes up\nparent end",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "autoawait",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "interactive:autoawait"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more information."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Asynchronous code in a Notebook interface or any other frontend using the Jupyter Protocol will require further updates to the IPykernel package."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Autowait: Asynchronous REPL"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As the internal API of IPython is now asynchronous, IPython needs to run under an event loop. In order to allow many workflows, (like using the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%run",
              "domain": null,
              "role": "magic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic, or copy-pasting code that explicitly starts/stop event loop), when top-level code is detected as not being asynchronous, IPython code is advanced via a pseudo-synchronous runner, and may not advance pending tasks."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Non-Asynchronous code"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The introduction of the ability to run async code had some effect on the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "IPython.embed()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " API. By default, embed will not allow you to run asynchronous code unless an event loop is specified."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Change to Nested Embed"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Some magics will not work with async until they're updated. Contributions welcome."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Effects on Magics"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We expect more internal but public IPython functions to become "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "async"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and will likely end up having a persistent event loop while IPython is running."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Expected Future changes"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This release took more than a year in the making. The code was rebased a number of times; leading to commit authorship that may have been lost in the final Pull-Request. Huge thanks to many people for contribution, discussion, code, documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor, minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Thanks"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The magic "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%autoreload 2 <autoreload>",
              "domain": null,
              "role": "magic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now captures new methods added to classes. Earlier, only methods existing as of the initial import were being tracked and updated."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This new feature helps dual environment development - Jupyter+IDE - where the code gradually moves from notebook cells to package files as it gets structured."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Example"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ": An instance of the class "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "MyClass"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will be able to access the method "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "cube()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " after it is uncommented and the file "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "file1.py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is saved on disk."
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "# notebook\n\nfrom mymodule import MyClass\nfirst = MyClass(5)",
          "execution_status": null
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "# mymodule/file1.py\n\nclass MyClass:\n\n    def __init__(self, a=10):\n        self.a = a\n\n    def square(self):\n        print('compute square')\n        return self.a*self.a\n\n    # def cube(self):\n    #     print('compute cube')\n    #     return self.a*self.a*self.a",
          "execution_status": null
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Autoreload Improvement"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The autoindent feature that was deprecated in 5.x was re-enabled and un-deprecated in "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#11257"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/11257",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Make "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%run -n -i ... <run>",
              "domain": null,
              "role": "magic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " work correctly. Earlier, if "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%run",
              "domain": null,
              "role": "magic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was passed both arguments, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-n"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " would be silently ignored. See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10308"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10308",
              "title": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%%script",
              "domain": null,
              "role": "cellmagic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (as well as "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%%bash",
              "domain": null,
              "role": "cellmagic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "%%ruby",
              "domain": null,
              "role": "cellmagic",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "... ) cell magics now raise by default if the return code of the given code is non-zero (thus halting execution of further cells in a notebook). The behavior can be disable by passing the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--no-raise-error"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " flag."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A couple of unused functions and methods have been deprecated and will be removed in future versions:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "BulletList",
              "__tag": 4053,
              "ordered": false,
              "start": 1,
              "children": [
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "IPython.utils.io.raw_print_err"
                        }
                      ]
                    }
                  ]
                },
                {
                  "__type": "ListItem",
                  "__tag": 4054,
                  "children": [
                    {
                      "__type": "Paragraph",
                      "__tag": 4045,
                      "children": [
                        {
                          "__type": "InlineCode",
                          "__tag": 4051,
                          "value": "IPython.utils.io.raw_print"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Deprecations"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The API for transforming input before it is parsed as Python code has been   completely redesigned: any custom input transformations will need to be   rewritten. See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "/config/inputtransforms",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "/config/inputtransforms"
                      },
                      "kind": "docs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for details of the new API."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Backwards incompatible changes"
        }
      ],
      "level": 2,
      "target": null
    }
  ],
  "local_refs": []
}