{
  "__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:version6",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "6.x Series"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Miscellaneous bug fixes and compatibility with Python 3.7."
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Autocompletion fix for modules with out "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__init__.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11227"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11227",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "update the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%pastebin"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic to use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "dpaste.com"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead og GitHub Gist   which now requires authentication "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11182"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11182",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fix crash with multiprocessing "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11185"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11185",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.5.0"
        }
      ],
      "level": 1,
      "target": "whatsnew650"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Everything new in "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "IPython 5.7",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:version5"
              },
              "kind": "exists"
            }
          ]
        },
        {
          "__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 display object not emitting metadata "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11106"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11106",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Comments failing Jedi test "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11110"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11110",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.4.0"
        }
      ],
      "level": 1,
      "target": "whatsnew640"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This is a bugfix release to switch the default completions back to IPython's own completion machinery. We discovered some problems with the completions from Jedi, including completing column names on pandas data frames."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can switch the completions source with the config option "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "Completer.use_jedi",
              "domain": null,
              "role": "configtrait",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.3.1"
        }
      ],
      "level": 1,
      "target": "whatsnew631"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 6.3 contains all the bug fixes and features in "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "IPython 5.6",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:version5"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". In addition:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A new display class "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.display.Code",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.lib.display:Code"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " can be used to display   syntax highlighted code in a notebook ("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10978"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10978",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "html",
                      "domain": null,
                      "role": "cellmagic",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic now takes a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--isolated"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " option to put the   content in an iframe ("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10962"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10962",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The code to find completions using the Jedi library has had various   adjustments. This is still a work in progress, but we hope this version has   fewer annoyances ("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10956"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10956",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10969"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10969",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10999"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10999",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11035"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11035",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11063"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11063",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#11065"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/11065",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "Emphasis",
                      "__tag": 4047,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "post"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " event callbacks are now always called, even when the execution failed   (for example because of a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "SyntaxError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The execution info and result objects are now made available in the   corresponding "
                    },
                    {
                      "__type": "Emphasis",
                      "__tag": 4047,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "pre"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "Emphasis",
                      "__tag": 4047,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "post"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "*_run_cell"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "event callbacks",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "/config/callbacks"
                      },
                      "kind": "docs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   in a backward compatible manner ("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10774"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/issues/10774",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10795"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10795",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Performance with very long code cells (hundreds of lines) is greatly improved   ("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10898"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10898",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "). Further improvements are planned for IPython 7."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You can see all "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "pull requests for the 6.3 milestone"
                }
              ],
              "url": "https://github.com/ipython/ipython/pulls?utf8=%E2%9C%93&q=is%3Apr+milestone%3A6.3+is%3Aclosed",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.3"
        }
      ],
      "level": 1,
      "target": "whatsnew630"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 6.2 contains all the bugs fixes and features "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "available in IPython 5.5",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:version5"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", like built in progress bar support, and system-wide configuration"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following features are specific to IPython 6.2:"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.2"
        }
      ],
      "level": 1,
      "target": "whatsnew620"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Terminal IPython will now show the signature of the function while completing. Only the currently highlighted function will show its signature on the line below the completer by default. This functionality is recent, so it might be limited; we welcome bug reports and requests for enhancements. "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10507"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10507",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Function signature in completions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython can now trigger the display hook on the last assignment of cells. Up until 6.2 the following code wouldn't show the value of the assigned variable      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In[1]: xyz = \"something\"\n# nothing shown",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "You would have to actually make it the last statement      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [2]: xyz = \"something else\"\n...   : xyz\nOut[2]: \"something else\"",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "With the option "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "InteractiveShell.ast_node_interactivity='last_expr_or_assign'"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " you can now do      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "In [2]: xyz = \"something else\"\nOut[2]: \"something else\"",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This option can be toggled at runtime with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "%config"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " magic, and will trigger on assignment "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "a = 1"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", augmented assignment "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "+="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "|="
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " ... as well as type annotated assignments: "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "a:int = 2"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10598"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10598",
              "title": ""
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Assignments return values"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Advanced users of the debugger can now correctly recursively enter ipdb. This is thanks to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "@segevfiner"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " on "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10721"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10721",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Recursive Call of 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": "Quotes in a filename are always escaped during tab-completion on non-Windows.   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10069"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10069",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Variables now shadow magics in autocompletion. See "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#4877"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/issues/4877",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10542"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10542",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Added the ability to add parameters to alias_magic. For example      "
                    }
                  ]
                },
                {
                  "__type": "Code",
                  "__tag": 4050,
                  "value": "In [2]: %alias_magic hist history --params \"-l 2\" --line\nCreated `%hist` as an alias for `%history -l 2`.\n\nIn [3]: hist\n%alias_magic hist history --params \"-l 30\" --line\n%alias_magic hist history --params \"-l 2\" --line",
                  "execution_status": null,
                  "out": ""
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Previously it was only possible to have an alias attached to a single function,   and you would have to pass in the given parameters every time      "
                    }
                  ]
                },
                {
                  "__type": "Code",
                  "__tag": 4050,
                  "value": "In [4]: %alias_magic hist history --line\nCreated `%hist` as an alias for `%history`.\n\nIn [5]: hist -l 2\nhist\n%alias_magic hist history --line",
                  "execution_status": null,
                  "out": ""
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "To suppress log state messages, you can now either use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%logstart -q"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", pass   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--LoggingMagics.quiet=True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " on the command line, or set   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "c.LoggingMagics.quiet=True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in your configuration file."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "An additional flag "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--TerminalInteractiveShell.term_title_format"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is   introduced to allow the user to control the format of the terminal title.  It   is specified as a python format string, and currently the only variable it   will format is "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "{cwd}"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "??"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "/"
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%pinfo2"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will now show object docstrings if the source can't be retrieved. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10532"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10532",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IPython.display"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has gained a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%markdown"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " cell magic. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10563"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10563",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%config"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " options can now be tab completed. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10555"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10555",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%config"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with no arguments are now unique and sorted. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10548"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10548",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Completion on keyword arguments does not duplicate "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " sign if already present. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10547"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10547",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%run -m <module>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "<module>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " passes extra arguments to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "<module>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10546"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10546",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "completer now understand \"snake case auto complete\": if "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "foo_bar_kittens"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is   a valid completion, I can type "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "f_b<tab>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will complete to it. "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10537"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10537",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "tracebacks are better standardized and will compress "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "/path/to/home",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10515"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10515",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following changes were also added to IPython 5.4, see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "what's new in IPython 5.4",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:version5"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more detail description:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "TerminalInteractiveShell"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is configurable and can be configured to   (re)-use the readline interface."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "objects can now define a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "_repr_mimebundle_"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Execution heuristics improve for single line statements"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "display()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " can now return a display id to update display areas."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.1"
        }
      ],
      "level": 1,
      "target": "whatsnew610"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Released April 19th, 2017"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 6 features a major improvement in the completion machinery which is now capable of completing non-executed code. It is also the first version of IPython to stop compatibility with Python 2, which is still supported on the bugfix only 5.x branch. Read below for a non-exhaustive list of new features."
            }
          ]
        },
        {
          "__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 using:"
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "pip install ipython --upgrade",
          "execution_status": null,
          "out": ""
        },
        {
          "__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": "If your pip version is greater than or equal to pip 9.0.1 you will automatically get the most recent version of IPython compatible with your system: on Python 2 you  will get the latest IPython 5.x bugfix, while in Python 3 you will get the latest 6.x stable version."
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "IPython 6.0"
        }
      ],
      "level": 1,
      "target": "whatsnew600"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The completer Completion API has seen an overhaul, and the new completer has plenty of improvements both from the end users of terminal IPython and for consumers of the API."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This new API is capable of pulling completions from "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "jedi",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "jedi",
                "version": "*",
                "kind": "api",
                "path": "jedi"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", thus allowing type inference on non-executed code. If "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "jedi",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "jedi",
                "version": "*",
                "kind": "api",
                "path": "jedi"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is installed, completions like the following are now possible without code evaluation:"
            }
          ]
        },
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Code",
              "__tag": 4050,
              "value": ">>> data = ['Number of users', 123_456]\n... data[0].<tab>",
              "execution_status": null,
              "out": ""
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "That is to say, IPython is now capable of inferring that "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "data[0]",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is a string, and will suggest completions like "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": ".capitalize",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The completion power of IPython will increase with new Jedi releases, and a number of bug-fixes and more completions are already available on the development version of "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "jedi",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "jedi",
                "version": "*",
                "kind": "api",
                "path": "jedi"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " if you are curious."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "With the help of prompt toolkit, types of completions can be shown in the completer interface:"
            }
          ]
        },
        {
          "__type": "Figure",
          "__tag": 4024,
          "value": {
            "__type": "RefInfo",
            "__tag": 4000,
            "module": "IPython",
            "version": "9.11.0",
            "kind": "assets",
            "path": "jedi_type_inference_60.png"
          }
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The appearance of the completer is controlled by the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "c.TerminalInteractiveShell.display_completions"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option that will show the type differently depending on the value among "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "'column'"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "'multicolumn'"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "'readlinelike'"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The use of Jedi also fulfills a number of requests and fixes a number of bugs like case-insensitive completion and completion after division operator: See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "#10182"
                }
              ],
              "url": "https://github.com/IPython/IPython/pull/10182",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Extra patches and updates will be needed to the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "ipykernel",
              "domain": null,
              "role": "mod",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " package for this feature to be available to other clients like Jupyter Notebook, Lab, Nteract, Hydrogen..."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The use of Jedi should be barely noticeable on recent machines, but  can be slower on older ones.  To tweak the performance, the amount of time given to Jedi to compute type inference can be adjusted with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "c.IPCompleter.jedi_compute_type_timeout"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The objects whose type were not inferred will be shown as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "<unknown>"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Jedi can also be completely deactivated by using the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "c.Completer.use_jedi=False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The old "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Completer.complete()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " API is waiting deprecation and should be replaced replaced by "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Completer.completions()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in the near future. Feedback on the current state of the API and suggestions are welcome."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New completion API and Interface"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "One of the large challenges in IPython 6.0 has been the adoption of a pure Python 3 codebase, which has led to upstream patches in pip, pypi and warehouse to make sure Python 2 systems still upgrade to the latest compatible Python version."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We remind our Python 2 users that IPython 5 is still compatible with Python 2.7, still maintained and will get regular releases. Using pip 9+, upgrading IPython will automatically upgrade to the latest version compatible with your system."
            }
          ]
        },
        {
          "__type": "Admonition",
          "__tag": 4056,
          "kind": "warning",
          "base_type": "warning",
          "children": [
            {
              "__type": "AdmonitionTitle",
              "__tag": 4055,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "warning "
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "If you are on a system using an older version of pip on Python 2, pip may still install IPython 6.0 on your system, and IPython will refuse to start. You can fix this by upgrading pip, and reinstalling ipython, or forcing pip to install an earlier version: "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "pip install 'ipython<6'"
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The ability to use only Python 3 on the code base of IPython brings a number of advantages. Most of the newly written code make use of "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "optional function type annotation"
                }
              ],
              "url": "https://peps.python.org/pep-0484/",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " leading to clearer code and better documentation."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The total size of the repository has also decreased by about 1500 lines (for the  first time excluding the big split for 4.0). The decrease is potentially a bit more for the sour as some documents like this one are append only and are about 300 lines long."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The removal of the Python2/Python3 shim layer has made the code quite a lot clearer and more idiomatic in a number of locations, and much friendlier to work with and understand. We hope to further embrace Python 3 capabilities in the next release cycle and introduce more of the Python 3 only idioms (yield from, kwarg only, general unpacking) in the IPython code base, and see if we can take advantage of these to improve user experience with better error messages and hints."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Python 3 only codebase"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython gained a new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "c.TerminalIPythonApp.interactive_shell_class"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option that allows customizing the class used to start the terminal frontend. This should allow a user to use custom interfaces, like reviving the former readline interface which is now a separate package not actively maintained by the core team. See the project to bring back the readline interface: "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "rlipython"
                }
              ],
              "url": "https://github.com/ipython/rlipython",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This change will be backported to the IPython 5.x series."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Configurable TerminalInteractiveShell, readline interface"
        }
      ],
      "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 "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "capture",
                      "domain": null,
                      "role": "cellmagic",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic can now capture the result of a cell (from   an expression on the last line), as well as printed and displayed output.   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#9851"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/9851",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Pressing Ctrl-Z in the terminal debugger now suspends IPython, as it already   does in the main terminal prompt."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Autoreload can now reload "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Enum"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". See "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10232"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/issues/10232",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10316"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10316",
                      "title": ""
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "IPython.display has gained a "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "GeoJSON <IPython.display.GeoJSON>",
                      "domain": null,
                      "role": "any",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " object.   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10288"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10288",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10253"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10253",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Misc improvements"
        }
      ],
      "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": "Loading extensions from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipython_extension_dir"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " prints a warning that this   location is pending deprecation. This should only affect users still having   extensions installed with "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%install_ext"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " which has been deprecated since   IPython 4.0, and removed in 5.0. Extensions still present in   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipython_extension_dir"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " may shadow more recently installed versions using   pip. It is thus recommended to clean "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipython_extension_dir"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " of any   extension now available as a package."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IPython.utils.warn"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was deprecated in IPython 4.0, and has now been removed.   instead of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IPython.utils.warn"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " inbuilt "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "warnings",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "warnings",
                        "version": "*",
                        "kind": "api",
                        "path": "warnings"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " module is used."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The function "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.core.oinspect.py:call_tip",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is unused, was marked as   deprecated (raising a "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "DeprecationWarning",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") and marked for later removal.   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "#10104"
                        }
                      ],
                      "url": "https://github.com/IPython/IPython/pull/10104",
                      "title": ""
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Functions Deprecated in 6.x Development cycle"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Backward incompatible changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The following functions have been removed in the development cycle marked for Milestone 6.0."
            }
          ]
        },
        {
          "__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/process.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "is_cmd_found"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "IPython/utils/process.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "pycmd2argv"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "--deep-reload",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " flag and the corresponding options to inject "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "dreload",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "interactive:reference"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "reload",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " into the interactive namespace have been removed. You have to   explicitly import "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "reload",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " from "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.lib.deepreload",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.lib.deepreload"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to use it."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "profile",
                      "domain": null,
                      "role": "magic",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " used to print the current IPython profile, and which   was deprecated in IPython 2.0 does now raise a "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "DeprecationWarning",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " error when   used. It is often confused with the "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "prun",
                      "domain": null,
                      "role": "magic",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and the deprecation removal   should free up the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "profile"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " name in future versions."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Functions Removed in 6.x Development cycle"
        }
      ],
      "level": 3,
      "target": null
    }
  ],
  "local_refs": []
}