{
  "__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:version0.11",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "0.11 Series"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython 0.11 is a "
            },
            {
              "__type": "Emphasis",
              "__tag": 4047,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "major"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " overhaul of IPython, two years in the making.  Most of the code base has been rewritten or at least reorganized, breaking backward compatibility with several APIs in previous versions.  It is the first major release in two years, and probably the most significant change to IPython since its inception.  We plan to have a relatively quick succession of releases, as people discover new bugs and regressions.  Once we iron out any significant bugs in this process and settle down the new APIs, this series will become IPython 1.0.  We encourage feedback now on the core APIs, which we hope to maintain stable during the 1.0 series."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Since the internal APIs have changed so much, projects using IPython as a library (as opposed to end-users of the application) are the most likely to encounter regressions or changes that break their existing use patterns.  We will make every effort to provide updated versions of the APIs to facilitate the transition, and we encourage you to contact us on the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "development mailing list",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with questions and feedback."
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://mail.scipy.org/mailman/listinfo/ipython-dev"
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Chris Fonnesbeck recently wrote an "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "excellent post",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " that highlights some of our major new features, with examples and screenshots.  We encourage you to read it as it provides an illustrated, high-level overview complementing the detailed feature breakdown in this document."
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://stronginference.com/post/innovations-in-ipython"
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A quick summary of the major changes (see below for details):"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Standalone Qt console"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ": a new rich console has been added to IPython,   started with "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "ipython qtconsole",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  In this application we have tried to   retain the feel of a terminal for fast and efficient workflows, while adding   many features that a line-oriented terminal simply can not support, such as   inline figures, full multiline editing with syntax highlighting, graphical   tooltips for function calls and much more.  This development was sponsored by   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Enthought Inc.",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "below",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "whatsnew:version0.11"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for details."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://enthought.com"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "High-level parallel computing with ZeroMQ"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Using the same architecture   that our Qt console is based on, we have completely rewritten our high-level   parallel computing machinery that in prior versions used the Twisted   networking framework.  While this change will require users to update their   codes, the improvements in performance, memory control and internal   consistency across our codebase convinced us it was a price worth paying.  We   have tried to explain how to best proceed with this update, and will be happy   to answer questions that may arise.  A full tutorial describing these   features "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "was presented at SciPy'11",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", more details "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "below",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "whatsnew:version0.11"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://minrk.github.com/scipy-tutorial-2011"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "New model for GUI/plotting support in the terminal"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  Now instead of the   various "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "-Xthread",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " flags we had before, GUI support is provided without the   use of any threads, by directly integrating GUI event loops with Python's   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "PyOS_InputHook",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " API.  A new command-line flag "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "--gui",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " controls GUI support,   and it can also be enabled after IPython startup via the new "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "%gui",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic.   This requires some changes if you want to execute GUI-using scripts inside   IPython, see "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "the GUI support section",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "interactive:reference"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for more details."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "A two-process architecture."
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " The Qt console is the first use of a new   model that splits IPython between a kernel process where code is executed and   a client that handles user interaction.  We plan on also providing terminal   and web-browser based clients using this infrastructure in future releases.   This model allows multiple clients to interact with an IPython process   through a "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "well-documented messaging protocol <messaging>",
                      "domain": null,
                      "role": "ref",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " using the   ZeroMQ networking library."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Refactoring."
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " the entire codebase has been refactored, in order to make it   more modular and easier to contribute to.  IPython has traditionally been a   hard project to participate because the old codebase was very monolithic.  We   hope this (ongoing) restructuring will make it easier for new developers to   join us."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Vim integration"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Vim can be configured to seamlessly control an IPython   kernel, see the files in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "docs/examples/vim"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for the full details.   This work was done by Paul Ivanov, who prepared a nice "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "video   demonstration",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " of the features it provides."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://pirsquared.org/blog/2011/07/28/vim-ipython/"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Integration into Microsoft Visual Studio"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Thanks to the work of the   Microsoft "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Python Tools for Visual Studio",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " team, this version of IPython   has been integrated into Microsoft Visual Studio's Python tools open source   plug-in.  "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Details below",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://pytools.codeplex.com"
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "details below",
          "url": "ms_visual_studio_011_"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Improved unicode support"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". We closed many bugs related to unicode input."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Python 3"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". IPython now runs on Python 3.x. See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "python3_011",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "whatsnew:version0.11"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for   details."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "New profile model"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Profiles are now directories that contain all relevant   information for that session, and thus better isolate IPython use-cases."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "SQLite storage for history"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". All history is now stored in a SQLite   database, providing support for multiple simultaneous sessions that won't   clobber each other as well as the ability to perform queries on all stored   data."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "New configuration system"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". All parts of IPython are now configured via a   mechanism inspired by the Enthought Traits library.  Any configurable element   can have its attributes set either via files that now use real Python syntax   or from the command-line."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Pasting of code with prompts"
                        }
                      ]
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". IPython now intelligently strips out input   prompts , be they plain Python ones ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": ">>>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "..."
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") or IPython ones   ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "In [N]:"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "...:"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ").  More details "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "here",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "interactive:reference"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Release 0.11"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Over 60 separate authors have contributed to this release, see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "below",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:version0.11"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for a full list.  In particular, we want to highlight the extremely active participation of two new core team members: Evan Patterson implemented the Qt console, and Thomas Kluyver started with our Python 3 port and by now has made major contributions to just about every area of IPython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We are also grateful for the support we have received during this development cycle from several institutions:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Enthought Inc",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " funded the development of our new Qt console, an effort that   required developing major pieces of underlying infrastructure, which now   power not only the Qt console but also our new parallel machinery.  We'd like   to thank Eric Jones and Travis Oliphant for their support, as well as Ilan   Schnell for his tireless work integrating and testing IPython in the   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Enthought Python Distribution"
                        }
                      ],
                      "url": "http://www.enthought.com/products/epd.php",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://enthought.com"
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "Enthought Python Distribution",
          "url": "http://www.enthought.com/products/epd.php"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Nipy/NIH: funding via the "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "NiPy project",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (NIH grant 5R01MH081909-02) helped   us jumpstart the development of this series by restructuring the entire   codebase two years ago in a way that would make modular development and   testing more approachable.  Without this initial groundwork, all the new   features we have added would have been impossible to develop."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://nipy.org"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Sage/NSF: funding via the grant "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Sage: Unifying Mathematical Software for   Scientists, Engineers, and Mathematicians",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (NSF grant DMS-1015114)   supported a meeting in spring 2011 of several of the core IPython developers   where major progress was made integrating the last key pieces leading to this   release."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://modular.math.washington.edu/grants/compmath09"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Microsoft's team working on "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Python Tools for Visual Studio",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " developed the    integratron of IPython into the Python plugin for Visual Studio 2010."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://pytools.codeplex.com"
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Google Summer of Code: in 2010, we had two students developing prototypes of   the new machinery that is now maturing in this release: "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Omar Zapata"
                        }
                      ],
                      "url": "http://ipythonzmq.blogspot.com/2010/08/ipython-zmq-status.html",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Gerardo Gutiérrez",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "whatsnew:version0.11"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "Omar Zapata",
          "url": "http://ipythonzmq.blogspot.com/2010/08/ipython-zmq-status.html"
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Authors and support"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In April 2010, after "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "one breakage too many with bzr",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", we decided to move our entire development process to Git and Github.com.  This has proven to be one of the best decisions in the project's history, as the combination of git and github have made us far, far more productive than we could be with our previous tools.  We first converted our bzr repo to a git one without losing history, and a few weeks later ported all open Launchpad bugs to github issues with their comments mostly intact (modulo some formatting changes).  This ensured a smooth transition where no development history or submitted bugs were lost. Feel free to use our little Launchpad to Github issues "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "porting script"
                }
              ],
              "url": "https://gist.github.com/835577",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " if you need to make a similar transition."
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "",
          "url": "http://mail.scipy.org/pipermail/ipython-dev/2010-April/005944.html"
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "porting script",
          "url": "https://gist.github.com/835577"
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "These simple statistics show how much work has been done on the new release, by comparing the current code to the last point it had in common with the 0.10 series.  A huge diff and ~2200 commits make up this cycle      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "git diff $(git merge-base 0.10.2 HEAD)  | wc -l\n288019\n\ngit log $(git merge-base 0.10.2 HEAD)..HEAD --oneline | wc -l\n2200",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Since our move to github, 511 issues were closed, 226 of which were pull requests and 285 regular issues ("
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "a full list with links",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "whatsnew:github-stats-0.11"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is available for those interested in the details).  Github's pull requests are a fantastic mechanism for reviewing code and building a shared ownership of the project, and we are making enthusiastic use of it."
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "This undercounts the number of issues closed in this development cycle,\nsince we only moved to github for issue tracking in May 2010, but we have no\nway of collecting statistics on the number of issues closed in the old\nLaunchpad bug tracker prior to that.",
          "execution_status": null,
          "out": ""
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Development summary: moving to Git and Github"
        }
      ],
      "level": 2,
      "target": "Gerardo Gutiérrez"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython now ships with a Qt application that feels very much like a terminal, but is in fact a rich GUI that runs an IPython client but supports inline figures, saving sessions to PDF and HTML, multiline editing with syntax highlighting, graphical calltips and much more:"
            }
          ]
        },
        {
          "__type": "Figure",
          "__tag": 4024,
          "value": {
            "__type": "RefInfo",
            "__tag": 4000,
            "module": "IPython",
            "version": "9.13.0",
            "kind": "assets",
            "path": "qtconsole.png"
          }
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Qt console for IPython, using inline matplotlib plots."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We hope that many projects will embed this widget, which we've kept deliberately very lightweight, into their own environments.  In the future we may also offer a slightly more featureful application (with menus and other GUI elements), but we remain committed to always shipping this easy to embed widget."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See the "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Jupyter Qt Console site"
                }
              ],
              "url": "https://jupyter.org/qtconsole",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for a detailed description of the console's features and use."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Qt Console"
        }
      ],
      "level": 2,
      "target": "qtconsole_011"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We have completely rewritten the Twisted-based code for high-level parallel computing to work atop our new ZeroMQ architecture.  While we realize this will break compatibility for a number of users, we hope to make the transition as easy as possible with our docs, and we are convinced the change is worth it. ZeroMQ provides us with much tighter control over memory, higher performance, and its communications are impervious to the Python Global Interpreter Lock because they take place in a system-level C++ thread.  The impact of the GIL in our previous code was something we could simply not work around, given that Twisted is itself a Python library.  So while Twisted is a very capable framework, we think ZeroMQ fits our needs much better and we hope you will find the change to be a significant improvement in the long run."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Our manual contains a full description of how to use IPython for parallel computing, and the "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "tutorial",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "interactive:tutorial"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " presented by Min Ragan-Kelley at the SciPy 2011 conference provides a hands-on complement to the reference docs."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "High-level parallel computing with ZeroMQ"
        }
      ],
      "level": 2,
      "target": "parallel_011"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As of this release, a significant portion of IPython has been refactored.  This refactoring is founded on a number of new abstractions.  The main new classes that implement these abstractions are:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.HasTraits",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.traitlets:HasTraits"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.configurable.Configurable",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.configurable:Configurable"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.application.Application",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.application:Application"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.loader.ConfigLoader",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:ConfigLoader"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.loader.Config",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:Config"
                      },
                      "kind": "module"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We are still in the process of writing developer focused documentation about these classes, but for now our "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "configuration documentation",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "development:config"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " contains a high level overview of the concepts that these classes express."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The biggest user-visible change is likely the move to using the config system to determine the command-line arguments for IPython applications. The benefit of this is that "
            },
            {
              "__type": "Emphasis",
              "__tag": 4047,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "all"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " configurable values in IPython are exposed on the command-line, but the syntax for specifying values has changed. The gist is that assigning values is pure Python assignment.  Simple flags exist for commonly used options, these are always prefixed with '--'."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The IPython command-line help has the details of all the options (via "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ipython --help"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "), but a simple example should clarify things; the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "pylab"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " flag can be used to start in pylab mode with the qt4 backend    "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "ipython --pylab=qt",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "which is equivalent to using the fully qualified form    "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "ipython --TerminalIPythonApp.pylab=qt",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The long-form options can be listed via "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ipython --help-all"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Refactoring"
        }
      ],
      "level": 2,
      "target": ""
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "There is a new GUI framework for IPython, based on a client-server model in which multiple clients can communicate with one IPython kernel, using the ZeroMQ messaging framework. There is already a Qt console client, which can be started by calling "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ipython qtconsole"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The protocol is "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "documented <messaging>",
              "domain": null,
              "role": "ref",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The parallel computing framework has also been rewritten using ZMQ. The protocol is described in the ipyparallel documentation, and the code is in the new "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "IPython.parallel",
              "domain": null,
              "role": "mod",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " module."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "ZeroMQ architecture"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A Python 3 version of IPython has been prepared. For the time being, this is maintained separately and updated from the main codebase. Its code can be found "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "here"
                }
              ],
              "url": "https://github.com/ipython/ipython-py3k",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The parallel computing components are not perfect on Python3, but most functionality appears to be working.  As this work is evolving quickly, the best place to find updated information about it is our "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "Python 3 wiki page",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Python 3 support"
        }
      ],
      "level": 2,
      "target": "python3_011"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Entering non-ascii characters in unicode literals ("
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "u\"€ø\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") now works properly on all platforms. However, entering these in byte/string literals ("
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\"€ø\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") will not work as expected on Windows (or any platform where the terminal encoding is not UTF-8, as it typically is for Linux & Mac OS X). You can use escape sequences ("
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\"\\xe9\\x82\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") to get bytes above 128, or use unicode literals and encode them. This is a limitation of Python 2 which we cannot easily work around."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Unicode"
        }
      ],
      "level": 2,
      "target": ""
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython can be used as the interactive shell in the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "Python plugin for Microsoft Visual Studio",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", as seen here:"
            }
          ]
        },
        {
          "__type": "Figure",
          "__tag": 4024,
          "value": {
            "__type": "RefInfo",
            "__tag": 4000,
            "module": "IPython",
            "version": "9.13.0",
            "kind": "assets",
            "path": "ms_visual_studio.png"
          }
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "IPython console embedded in Microsoft Visual Studio."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Microsoft team developing this currently has a release candidate out using IPython 0.11. We will continue to collaborate with them to ensure that as they approach their final release date, the integration with IPython remains smooth. We'd like to thank Dino Viehland and Shahrokh Mortazavi for the work they have done towards this feature, as well as Wenming Ye for his support of our WinHPC capabilities."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Integration with Microsoft Visual Studio"
        }
      ],
      "level": 2,
      "target": "ms_visual_studio_011"
    },
    {
      "__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": "Added "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Bytes"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " traitlet, removing "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Str"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  All 'string' traitlets should   either be "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Unicode"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " if a real string, or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Bytes"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " if a C-string. This   removes ambiguity and helps the Python 3 transition."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New magic "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%loadpy"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " loads a python file from disk or web URL into   the current input buffer."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New magic "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%pastebin"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for sharing code via the 'Lodge it' pastebin."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New magic "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%precision"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for controlling float and numpy pretty printing."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "IPython applications initiate logging, so any object can gain access to   a the logger of the currently running Application with:"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "from traitlets.config.application import Application\nlogger = Application.instance().log",
          "execution_status": null,
          "out": ""
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "You can now get help on an object halfway through typing a command. For   instance, typing "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "a = zip?"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " shows the details of "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "zip",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". It also   leaves the command at the next prompt so you can carry on with it."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The input history is now written to an SQLite database. The API for   retrieving items from the history has also been redesigned."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.extensions.pretty",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " extension has been moved out of   quarantine and fully updated to the new extension API."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New magics for loading/unloading/reloading extensions have been added:   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%load_ext"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%unload_ext"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%reload_ext"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The configuration system and configuration files are brand new. See the   configuration system "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "documentation",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "config:index"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for more details."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "InteractiveShell",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.interactiveshell:InteractiveShell"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " class is now a   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Configurable",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.configurable:Configurable"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " subclass and has traitlets   that determine the defaults and runtime environment. The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__init__"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " method   has also been refactored so this class can be instantiated and run without   the old "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "ipmaker",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " module."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The methods of "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "InteractiveShell",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.interactiveshell:InteractiveShell"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have   been organized into sections to make it easier to turn more sections   of functionality into components."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The embedded shell has been refactored into a truly standalone subclass of   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "InteractiveShell",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " called "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "InteractiveShellEmbed",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  All   embedding logic has been taken out of the base class and put into the    embedded subclass."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Added methods of "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "InteractiveShell",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.interactiveshell:InteractiveShell"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to   help it cleanup after itself. The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "cleanup",
                      "domain": null,
                      "role": "meth",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " method controls this. We   couldn't do this in "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "__del__",
                      "domain": null,
                      "role": "meth",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " because we have cycles in our object   graph that prevent it from being called."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created a new module "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.utils.importstring",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.utils.importstring"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for resolving   strings like "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "foo.bar.Bar"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to the actual class."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Completely refactored the "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.core.prefilter",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.prefilter"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " module into   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Configurable",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.configurable:Configurable"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " subclasses. Added a new   layer into the prefilter system, called \"transformations\" that all new   prefilter logic should use (rather than the older \"checker/handler\"   approach)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Aliases are now components ("
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.core.alias",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.alias"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New top level "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.frontend.terminal.embed.embed",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " function that can   be called to embed IPython at any place in user's code. On the first call it   will create an "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.frontend.terminal.embed.InteractiveShellEmbed",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   instance and call it. In later calls, it just calls the previously created   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.frontend.terminal.embed.InteractiveShellEmbed",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created a configuration system ("
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.configurable",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.configurable"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") that is   based on "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". Configurables are arranged into a   runtime containment tree (not inheritance) that i) automatically propagates   configuration information and ii) allows singletons to discover each other in   a loosely coupled manner. In the future all parts of IPython will be   subclasses of "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Configurable",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.configurable:Configurable"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". All IPython   developers should become familiar with the config system."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created a new "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Config",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:Config"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for holding   configuration information. This is a dict like class with a few extras: i)   it supports attribute style access, ii) it has a merge function that merges   two "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Config",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:Config"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instances recursively and iii) it   will automatically create sub-"
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "Config",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:Config"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   instances for attributes that start with an uppercase character."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created new configuration loaders in "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets.config.loader",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". These   loaders provide a unified loading interface for all configuration   information including command line arguments and configuration files. We   have two default implementations based on "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "argparse",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "argparse",
                        "version": "*",
                        "kind": "api",
                        "path": "argparse"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and plain python   files.  These are used to implement the new configuration system."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created a top-level "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Application",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " class in   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.core.application",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.application"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " that is designed to encapsulate the starting   of any basic Python program. An application loads and merges all the   configuration objects, constructs the main application, configures and   initiates logging, and creates and configures any "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Configurable",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   instances and then starts the application running. An extended   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "BaseIPythonApplication",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " class adds logic for handling the   IPython directory as well as profiles, and all IPython entry points   extend it."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Type",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Instance",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " traitlets now handle classes given   as strings, like "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "foo.bar.Bar"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". This is needed for forward declarations.   But, this was implemented in a careful way so that string to class   resolution is done at a single point, when the parent   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~traitlets.HasTraitlets",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is instantiated."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.utils.ipstruct",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.utils.ipstruct"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been refactored to be a subclass of    dict.  It also now has full docstrings and doctests."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Created a Traits like implementation in "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "traitlets",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  This   is a pure Python, lightweight version of a library that is similar to   Enthought's Traits project, but has no dependencies on Enthought's code.  We   are using this for validation, defaults and notification in our new component   system.  Although it is not 100% API compatible with Enthought's Traits, we   plan on moving in this direction so that eventually our implementation could   be replaced by a (yet to exist) pure Python version of Enthought Traits."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Added a new module "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.lib.inputhook",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to manage the integration   with GUI event loops using "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "PyOS_InputHook",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  See the docstrings in this   module or the main IPython docs for details."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "For users, GUI event loop integration is now handled through the new   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%gui"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " magic command.  Type "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "%gui?"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " at an IPython prompt for   documentation."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "For developers "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.lib.inputhook",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " provides a simple interface   for managing the event loops in their interactive GUI applications.   Examples can be found in our "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "examples/lib"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " directory."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Additional new features"
        }
      ],
      "level": 2,
      "target": ""
    },
    {
      "__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 Twisted-based "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.kernel",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed, and completely   rewritten as "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.parallel",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", using ZeroMQ."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Profiles are now directories. Instead of a profile being a single config file,   profiles are now self-contained directories. By default, profiles get their   own IPython history, log files, and everything. To create a new profile, do   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipython profile create <name>"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "All IPython applications have been rewritten to use   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "KeyValueConfigLoader",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "traitlets",
                        "version": "*",
                        "kind": "api",
                        "path": "traitlets.config.loader:KeyValueConfigLoader"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". This means that   command-line options have changed. Now, all configurable values are accessible   from the command-line with the same syntax as in a configuration file."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The command line options "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-wthread"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-qthread"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-gthread"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--gui=wx"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--gui=qt"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "--gui=gtk"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The extension loading functions have been renamed to   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "load_ipython_extension",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "unload_ipython_extension",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "InteractiveShell",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.interactiveshell:InteractiveShell"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " no longer takes an   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "embedded"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " argument. Instead just use the   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.core.interactiveshell.InteractiveShellEmbed",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " class."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__IPYTHON__"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is no longer injected into "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__builtin__"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Struct.__init__",
                      "domain": null,
                      "role": "meth",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " no longer takes "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "None",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as its first argument.  It   must be a "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "dict",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Struct",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.core.interactiveshell.InteractiveShell.ipmagic",
                      "domain": null,
                      "role": "meth",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been   renamed "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.core.interactiveshell.InteractiveShell.magic.",
                      "domain": null,
                      "role": "meth",
                      "inventory": null
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The functions "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "ipmagic",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "ipalias",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been removed from   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "__builtins__",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The references to the global   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "~IPython.core.interactivehell.InteractiveShell",
                      "domain": null,
                      "role": "class",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instance ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "_ip"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", and   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__IP"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") have been removed from the user's namespace. They are replaced by a   new function called "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "get_ipython",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " that returns the current   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "InteractiveShell",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core.interactiveshell:InteractiveShell"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instance. This   function is injected into the user's namespace and is now the main way of   accessing the running IPython."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Old style configuration files "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipythonrc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ipy_user_conf.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   are no longer supported. Users should migrate there configuration files to   the new format described "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "here",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "/config/intro"
                      },
                      "kind": "docs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "here",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "development:config"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The old IPython extension API that relied on "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "ipapi",
                      "domain": null,
                      "role": "func",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been   completely removed. The new extension API is described "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "here",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "config:extensions:index"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "qt3"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been dropped.  Users who need this should use   previous versions of IPython."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Removed "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "shellglobals",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as it was obsolete."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Removed all the threaded shells in "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.core.shell",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". These are no   longer needed because of the new capabilities in   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.lib.inputhook",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New top-level sub-packages have been created: "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.core",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.core"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",    "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.lib",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.lib"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "IPython.utils",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "IPython",
                        "version": "*",
                        "kind": "api",
                        "path": "IPython.utils"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.deathrow",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.quarantine",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  All existing top-level modules have been   moved to appropriate sub-packages.  All internal import statements   have been updated and tests have been added.  The build system (setup.py   and friends) have been updated. See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "/api/index",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "/api/index"
                      },
                      "kind": "docs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for details of these   new sub-packages."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.ipapi",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been moved to "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.core.ipapi",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.Shell",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.iplib",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been split and removed as   part of the refactor."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "Extensions",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been moved to "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "extensions",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and all existing   extensions have been moved to either "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.quarantine",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or   "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.deathrow",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.quarantine",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " contains modules that we   plan on keeping but that need to be updated. "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.deathrow",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " contains   modules that are either dead or that should be maintained as third party   libraries."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Previous IPython GUIs in "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.frontend",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.gui",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are   likely broken, and have been removed to "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "IPython.deathrow",
                      "domain": null,
                      "role": "mod",
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " because of the   refactoring in the core. With proper updates, these should still work."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Backwards incompatible changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We do our best to improve IPython, but there are some known regressions in 0.11 relative to 0.10.2.  First of all, there are features that have yet to be ported to the new APIs, and in order to ensure that all of the installed code runs for our users, we have moved them to two separate directories in the source distribution, "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "quarantine",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "deathrow",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ".  Finally, we have some other miscellaneous regressions that we hope to fix as soon as possible.  We now describe all of these in more detail."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Known Regressions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "These are tools and extensions that we consider relatively easy to update to the new classes and APIs, but that we simply haven't had time for.  Any user who is interested in one of these is encouraged to help us by porting it and submitting a pull request on our "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "development site"
                }
              ],
              "url": "http://github.com/ipython/ipython",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "development site",
          "url": "http://github.com/ipython/ipython"
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Currently, the quarantine directory contains      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "clearcmd.py            ipy_fsops.py            ipy_signals.py\nenvpersist.py          ipy_gnuglobal.py        ipy_synchronize_with.py\next_rescapture.py      ipy_greedycompleter.py  ipy_system_conf.py\nInterpreterExec.py     ipy_jot.py              ipy_which.py\nipy_app_completers.py  ipy_lookfor.py          ipy_winpdb.py\nipy_autoreload.py      ipy_profile_doctest.py  ipy_workdir.py\nipy_completers.py      ipy_pydb.py             jobctrl.py\nipy_editors.py         ipy_rehashdir.py        ledit.py\nipy_exportdb.py        ipy_render.py           pspersistence.py\nipy_extutil.py         ipy_server.py           win32clip.py",
          "execution_status": null,
          "out": ""
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Quarantine"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "These packages may be harder to update or make most sense as third-party libraries.  Some of them are completely obsolete and have been already replaced by better functionality (we simply haven't had the time to carefully weed them out so they are kept here for now). Others simply require fixes to code that the current core team may not be familiar with.  If a tool you were used to is included here, we encourage you to contact the dev list and we can discuss whether it makes sense to keep it in IPython (if it can be maintained)."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Currently, the deathrow directory contains      "
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": "astyle.py              ipy_defaults.py          ipy_vimserver.py\ndtutils.py             ipy_kitcfg.py            numeric_formats.py\nGnuplot2.py            ipy_legacy.py            numutils.py\nGnuplotInteractive.py  ipy_p4.py                outputtrap.py\nGnuplotRuntime.py      ipy_profile_none.py      PhysicalQInput.py\nibrowse.py             ipy_profile_numpy.py     PhysicalQInteractive.py\nigrid.py               ipy_profile_scipy.py     quitter.py*\nipipe.py               ipy_profile_sh.py        scitedirector.py\niplib.py               ipy_profile_zope.py      Shell.py\nipy_constants.py       ipy_traits_completer.py  twshell.py",
          "execution_status": null,
          "out": ""
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Deathrow"
        }
      ],
      "level": 3,
      "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 machinery that adds functionality to the 'sh' profile for using IPython   as your system shell has not been updated to use the new APIs.  As a result,   only the aesthetic (prompt) changes are still implemented. We intend to fix   this by 0.12.  Tracked as issue "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "547"
                        }
                      ],
                      "url": "https://github.com/ipython/ipython/issues/547",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "547",
          "url": "https://github.com/ipython/ipython/issues/547"
        },
        {
          "__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 installation of scripts on Windows was broken without setuptools, so we   now depend on setuptools on Windows.  We hope to fix setuptools-less   installation, and then remove the setuptools dependency.  Issue "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "539"
                        }
                      ],
                      "url": "https://github.com/ipython/ipython/issues/539",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Target",
          "__tag": 4061,
          "label": "539",
          "url": "https://github.com/ipython/ipython/issues/539"
        },
        {
          "__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 directory history "
                    },
                    {
                      "__type": "InlineRole",
                      "__tag": 4003,
                      "value": "_dh",
                      "domain": null,
                      "role": null,
                      "inventory": null
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is not saved between sessions.  Issue "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "634",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "whatsnew:version0.11"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Other regressions"
        }
      ],
      "level": 3,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As part of the updating of IPython, we have removed a few features for the purposes of cleaning up the codebase and interfaces.  These removals are permanent, but for any item listed below, equivalent functionality is available."
            }
          ]
        },
        {
          "__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 magics Exit and Quit have been dropped as ways to exit IPython. Instead,   the lowercase forms of both work either as a bare name ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "exit"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") or a   function call ("
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "exit()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ").  You can assign these to other names using   exec_lines in the config file."
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Removed Features"
        }
      ],
      "level": 2,
      "target": "634"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Many users and developers contributed code, features, bug reports and ideas to this release.  Please do not hesitate in contacting us if we've failed to acknowledge your contribution here.  In particular, for this release we have contribution from the following people, a mix of new and regular names (in alphabetical order by first name):"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Aenugu Sai Kiran Reddy <saikrn08-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "andy wilson <wilson.andrew.j+github-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Antonio Cuni <antocuni>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Barry Wark <barrywark-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Beetoju Anuradha <anu.beethoju-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Benjamin Ragan-Kelley <minrk-at-Mercury.local>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Brad Reisfeld"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Brian E. Granger <ellisonbg-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Christoph Gohlke <cgohlke-at-uci.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Cody Precord"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "dan.milstein"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Darren Dale <dsdale24-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Dav Clark <davclark-at-berkeley.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "David Warde-Farley <wardefar-at-iro.umontreal.ca>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "epatters <ejpatters-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "epatters <epatters-at-caltech.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "epatters <epatters-at-enthought.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Eric Firing <efiring-at-hawaii.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Erik Tollerud <erik.tollerud-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Evan Patterson <epatters-at-enthought.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Fernando Perez <Fernando.Perez-at-berkeley.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Gael Varoquaux <gael.varoquaux-at-normalesup.org>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Gerardo <muzgash-at-Muzpelheim>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Jason Grout <jason.grout-at-drake.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "John Hunter <jdh2358-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Jens Hedegaard Nielsen <jenshnielsen-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Johann Cohen-Tanugi <johann.cohentanugi-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Jörgen Stenarson <jorgen.stenarson-at-bostream.nu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Justin Riley <justin.t.riley-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Kiorky"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Laurent Dufrechou <laurent.dufrechou-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Luis Pedro Coelho <lpc-at-cmu.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Mani chandra <mchandra-at-iitk.ac.in>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Mark E. Smith"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Mark Voorhies <mark.voorhies-at-ucsf.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Martin Spacek <git-at-mspacek.mm.st>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Michael Droettboom <mdroe-at-stsci.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "MinRK <benjaminrk-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "muzuiget <muzuiget-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Nick Tarleton <nick-at-quixey.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Nicolas Rougier <Nicolas.rougier-at-inria.fr>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Omar Andres Zapata Mesa <andresete.chaos-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Paul Ivanov <pivanov314-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Pauli Virtanen <pauli.virtanen-at-iki.fi>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Prabhu Ramachandran"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Ramana <sramana9-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Robert Kern <robert.kern-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Sathesh Chandra <satheshchandra88-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Satrajit Ghosh <satra-at-mit.edu>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Sebastian Busch"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Skipper Seabold <jsseabold-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Stefan van der Walt <bzr-at-mentat.za.net>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Stephan Peijnik <debian-at-sp.or.at>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Steven Bethard"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Thomas Kluyver <takowl-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Thomas Spura <tomspur-at-fedoraproject.org>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Tom Fetherston <tfetherston-at-aol.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Tom MacWright"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "tzanko"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "vankayala sowjanya <hai.sowjanya-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Vivian De Smedt <vds2212-at-VIVIAN>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Ville M. Vainio <vivainio-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Vishal Vatsa <vishal.vatsa-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Vishnu S G <sgvishnu777-at-gmail.com>"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Walter Doerwald <walter-at-livinglogic.de>"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__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": "This list was generated with the output of "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "git log dev-0.11 HEAD --format='* %aN <%aE>' | sed 's/@/\\-at\\-/' | sed 's/<>//' | sort -u"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " after some cleanup.  If you should be on this list, please add yourself."
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Credits"
        }
      ],
      "level": 2,
      "target": "credits_011"
    }
  ],
  "local_refs": []
}