{"action":"opened","number":8597,"pull_request":{"url":"https://api.github.com/repos/ipython/ipython/pulls/8597","id":39014944,"html_url":"https://github.com/ipython/ipython/pull/8597","diff_url":"https://github.com/ipython/ipython/pull/8597.diff","patch_url":"https://github.com/ipython/ipython/pull/8597.patch","issue_url":"https://api.github.com/repos/ipython/ipython/issues/8597","number":8597,"state":"open","locked":false,"title":"[work in progress] Replacing readline with prompt-toolkit.","user":{"login":"jonathanslenders","id":216638,"avatar_url":"https://avatars.githubusercontent.com/u/216638?v=3","gravatar_id":"","url":"https://api.github.com/users/jonathanslenders","html_url":"https://github.com/jonathanslenders","followers_url":"https://api.github.com/users/jonathanslenders/followers","following_url":"https://api.github.com/users/jonathanslenders/following{/other_user}","gists_url":"https://api.github.com/users/jonathanslenders/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanslenders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanslenders/subscriptions","organizations_url":"https://api.github.com/users/jonathanslenders/orgs","repos_url":"https://api.github.com/users/jonathanslenders/repos","events_url":"https://api.github.com/users/jonathanslenders/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanslenders/received_events","type":"User","site_admin":false},"body":"Pull request that replaces all the readline functionality with prompt-toolkit. This pull request is meant to remove all readline specific stuff, and replace it with prompt-toolkit. That way we have better cross-platform support. (Especially Windows.) It should still provide a very simple command line. (Nice features, like we have in ``ptpython`` can be added later on.)\r\n\r\nTo try:\r\n- Clone the latest prompt-toolkit (not the Pypi one): https://github.com/jonathanslenders/python-prompt-toolkit/\r\n- Install this branch.\r\n- Run ``ipython`` at the terminal.\r\n- %matplotlib, %pylab, plot(), etc... should all work.\r\n\r\nSee: #8489.\r\n\r\nTo be done:\r\n[] TerminalInteractiveShell.interact needs to be cleaned up. I don't think we still need things like ``hlen_b4_cell``, ``rl_do_indent``, etc...\r\n[] The history integration has to be implemented. Right now we have an in-memory history. (It would be nice if we can make the data format compatible with the one that we already had.\r\n[] Remove or fix ``_replace_rlhist_multiline``.\r\n[] ``prompt_manager.render(color=False)``. We don't want to have ``color=True`` anymore. The colors are determined by the Pygments color scheme. We don't want prompt_manager to return VT100 terminal escape codes.\r\n[] Remove the parts of the ``InputSplitter`` that we don't need anymore.\r\n[] Remove ``utils/coloransi.py``. Use Pygments color schemes and prompt-toolkit instead.\r\n[] Unit tests.\r\n\r\nFurther, this needs to be tested, improved, reviewed, etc...","created_at":"2015-07-01T19:10:04Z","updated_at":"2015-07-01T19:10:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ipython/ipython/pulls/8597/commits","review_comments_url":"https://api.github.com/repos/ipython/ipython/pulls/8597/comments","review_comment_url":"https://api.github.com/repos/ipython/ipython/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ipython/ipython/issues/8597/comments","statuses_url":"https://api.github.com/repos/ipython/ipython/statuses/b45e41f0c67775521d6eb104f30126a7c54e9798","head":{"label":"jonathanslenders:prompt-toolkit","ref":"prompt-toolkit","sha":"b45e41f0c67775521d6eb104f30126a7c54e9798","user":{"login":"jonathanslenders","id":216638,"avatar_url":"https://avatars.githubusercontent.com/u/216638?v=3","gravatar_id":"","url":"https://api.github.com/users/jonathanslenders","html_url":"https://github.com/jonathanslenders","followers_url":"https://api.github.com/users/jonathanslenders/followers","following_url":"https://api.github.com/users/jonathanslenders/following{/other_user}","gists_url":"https://api.github.com/users/jonathanslenders/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanslenders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanslenders/subscriptions","organizations_url":"https://api.github.com/users/jonathanslenders/orgs","repos_url":"https://api.github.com/users/jonathanslenders/repos","events_url":"https://api.github.com/users/jonathanslenders/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanslenders/received_events","type":"User","site_admin":false},"repo":{"id":38387997,"name":"ipython","full_name":"jonathanslenders/ipython","owner":{"login":"jonathanslenders","id":216638,"avatar_url":"https://avatars.githubusercontent.com/u/216638?v=3","gravatar_id":"","url":"https://api.github.com/users/jonathanslenders","html_url":"https://github.com/jonathanslenders","followers_url":"https://api.github.com/users/jonathanslenders/followers","following_url":"https://api.github.com/users/jonathanslenders/following{/other_user}","gists_url":"https://api.github.com/users/jonathanslenders/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanslenders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanslenders/subscriptions","organizations_url":"https://api.github.com/users/jonathanslenders/orgs","repos_url":"https://api.github.com/users/jonathanslenders/repos","events_url":"https://api.github.com/users/jonathanslenders/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanslenders/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jonathanslenders/ipython","description":"Official repository for IPython itself. Other repos in the IPython organization contain things like the website, documentation builds, etc.","fork":true,"url":"https://api.github.com/repos/jonathanslenders/ipython","forks_url":"https://api.github.com/repos/jonathanslenders/ipython/forks","keys_url":"https://api.github.com/repos/jonathanslenders/ipython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jonathanslenders/ipython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jonathanslenders/ipython/teams","hooks_url":"https://api.github.com/repos/jonathanslenders/ipython/hooks","issue_events_url":"https://api.github.com/repos/jonathanslenders/ipython/issues/events{/number}","events_url":"https://api.github.com/repos/jonathanslenders/ipython/events","assignees_url":"https://api.github.com/repos/jonathanslenders/ipython/assignees{/user}","branches_url":"https://api.github.com/repos/jonathanslenders/ipython/branches{/branch}","tags_url":"https://api.github.com/repos/jonathanslenders/ipython/tags","blobs_url":"https://api.github.com/repos/jonathanslenders/ipython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jonathanslenders/ipython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jonathanslenders/ipython/git/refs{/sha}","trees_url":"https://api.github.com/repos/jonathanslenders/ipython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jonathanslenders/ipython/statuses/{sha}","languages_url":"https://api.github.com/repos/jonathanslenders/ipython/languages","stargazers_url":"https://api.github.com/repos/jonathanslenders/ipython/stargazers","contributors_url":"https://api.github.com/repos/jonathanslenders/ipython/contributors","subscribers_url":"https://api.github.com/repos/jonathanslenders/ipython/subscribers","subscription_url":"https://api.github.com/repos/jonathanslenders/ipython/subscription","commits_url":"https://api.github.com/repos/jonathanslenders/ipython/commits{/sha}","git_commits_url":"https://api.github.com/repos/jonathanslenders/ipython/git/commits{/sha}","comments_url":"https://api.github.com/repos/jonathanslenders/ipython/comments{/number}","issue_comment_url":"https://api.github.com/repos/jonathanslenders/ipython/issues/comments{/number}","contents_url":"https://api.github.com/repos/jonathanslenders/ipython/contents/{+path}","compare_url":"https://api.github.com/repos/jonathanslenders/ipython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jonathanslenders/ipython/merges","archive_url":"https://api.github.com/repos/jonathanslenders/ipython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jonathanslenders/ipython/downloads","issues_url":"https://api.github.com/repos/jonathanslenders/ipython/issues{/number}","pulls_url":"https://api.github.com/repos/jonathanslenders/ipython/pulls{/number}","milestones_url":"https://api.github.com/repos/jonathanslenders/ipython/milestones{/number}","notifications_url":"https://api.github.com/repos/jonathanslenders/ipython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jonathanslenders/ipython/labels{/name}","releases_url":"https://api.github.com/repos/jonathanslenders/ipython/releases{/id}","created_at":"2015-07-01T18:31:32Z","updated_at":"2015-07-01T18:31:37Z","pushed_at":"2015-07-01T18:37:31Z","git_url":"git://github.com/jonathanslenders/ipython.git","ssh_url":"git@github.com:jonathanslenders/ipython.git","clone_url":"https://github.com/jonathanslenders/ipython.git","svn_url":"https://github.com/jonathanslenders/ipython","homepage":"http://ipython.org","size":110214,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ipython:master","ref":"master","sha":"506ed73aae9113f04eb485dda87803fcd4b49de4","user":{"login":"ipython","id":230453,"avatar_url":"https://avatars.githubusercontent.com/u/230453?v=3","gravatar_id":"","url":"https://api.github.com/users/ipython","html_url":"https://github.com/ipython","followers_url":"https://api.github.com/users/ipython/followers","following_url":"https://api.github.com/users/ipython/following{/other_user}","gists_url":"https://api.github.com/users/ipython/gists{/gist_id}","starred_url":"https://api.github.com/users/ipython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ipython/subscriptions","organizations_url":"https://api.github.com/users/ipython/orgs","repos_url":"https://api.github.com/users/ipython/repos","events_url":"https://api.github.com/users/ipython/events{/privacy}","received_events_url":"https://api.github.com/users/ipython/received_events","type":"Organization","site_admin":false},"repo":{"id":658518,"name":"ipython","full_name":"ipython/ipython","owner":{"login":"ipython","id":230453,"avatar_url":"https://avatars.githubusercontent.com/u/230453?v=3","gravatar_id":"","url":"https://api.github.com/users/ipython","html_url":"https://github.com/ipython","followers_url":"https://api.github.com/users/ipython/followers","following_url":"https://api.github.com/users/ipython/following{/other_user}","gists_url":"https://api.github.com/users/ipython/gists{/gist_id}","starred_url":"https://api.github.com/users/ipython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ipython/subscriptions","organizations_url":"https://api.github.com/users/ipython/orgs","repos_url":"https://api.github.com/users/ipython/repos","events_url":"https://api.github.com/users/ipython/events{/privacy}","received_events_url":"https://api.github.com/users/ipython/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ipython/ipython","description":"Official repository for IPython itself. Other repos in the IPython organization contain things like the website, documentation builds, etc.","fork":false,"url":"https://api.github.com/repos/ipython/ipython","forks_url":"https://api.github.com/repos/ipython/ipython/forks","keys_url":"https://api.github.com/repos/ipython/ipython/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ipython/ipython/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ipython/ipython/teams","hooks_url":"https://api.github.com/repos/ipython/ipython/hooks","issue_events_url":"https://api.github.com/repos/ipython/ipython/issues/events{/number}","events_url":"https://api.github.com/repos/ipython/ipython/events","assignees_url":"https://api.github.com/repos/ipython/ipython/assignees{/user}","branches_url":"https://api.github.com/repos/ipython/ipython/branches{/branch}","tags_url":"https://api.github.com/repos/ipython/ipython/tags","blobs_url":"https://api.github.com/repos/ipython/ipython/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ipython/ipython/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ipython/ipython/git/refs{/sha}","trees_url":"https://api.github.com/repos/ipython/ipython/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ipython/ipython/statuses/{sha}","languages_url":"https://api.github.com/repos/ipython/ipython/languages","stargazers_url":"https://api.github.com/repos/ipython/ipython/stargazers","contributors_url":"https://api.github.com/repos/ipython/ipython/contributors","subscribers_url":"https://api.github.com/repos/ipython/ipython/subscribers","subscription_url":"https://api.github.com/repos/ipython/ipython/subscription","commits_url":"https://api.github.com/repos/ipython/ipython/commits{/sha}","git_commits_url":"https://api.github.com/repos/ipython/ipython/git/commits{/sha}","comments_url":"https://api.github.com/repos/ipython/ipython/comments{/number}","issue_comment_url":"https://api.github.com/repos/ipython/ipython/issues/comments{/number}","contents_url":"https://api.github.com/repos/ipython/ipython/contents/{+path}","compare_url":"https://api.github.com/repos/ipython/ipython/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ipython/ipython/merges","archive_url":"https://api.github.com/repos/ipython/ipython/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ipython/ipython/downloads","issues_url":"https://api.github.com/repos/ipython/ipython/issues{/number}","pulls_url":"https://api.github.com/repos/ipython/ipython/pulls{/number}","milestones_url":"https://api.github.com/repos/ipython/ipython/milestones{/number}","notifications_url":"https://api.github.com/repos/ipython/ipython/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ipython/ipython/labels{/name}","releases_url":"https://api.github.com/repos/ipython/ipython/releases{/id}","created_at":"2010-05-10T04:46:06Z","updated_at":"2015-07-01T17:23:04Z","pushed_at":"2015-06-30T22:16:56Z","git_url":"git://github.com/ipython/ipython.git","ssh_url":"git@github.com:ipython/ipython.git","clone_url":"https://github.com/ipython/ipython.git","svn_url":"https://github.com/ipython/ipython","homepage":"http://ipython.org","size":110214,"stargazers_count":6843,"watchers_count":6843,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2030,"mirror_url":null,"open_issues_count":936,"forks":2030,"open_issues":936,"watchers":6843,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ipython/ipython/pulls/8597"},"html":{"href":"https://github.com/ipython/ipython/pull/8597"},"issue":{"href":"https://api.github.com/repos/ipython/ipython/issues/8597"},"comments":{"href":"https://api.github.com/repos/ipython/ipython/issues/8597/comments"},"review_comments":{"href":"https://api.github.com/repos/ipython/ipython/pulls/8597/comments"},"review_comment":{"href":"https://api.github.com/repos/ipython/ipython/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ipython/ipython/pulls/8597/commits"},"statuses":{"href":"https://api.github.com/repos/ipython/ipython/statuses/b45e41f0c67775521d6eb104f30126a7c54e9798"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":578,"deletions":194,"changed_files":16}}