{"action":"created","issue":{"url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4143","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4143/labels{/name}","comments_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4143/comments","events_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4143/events","html_url":"https://github.com/matplotlib/matplotlib/pull/4143","id":58483332,"number":4143,"title":"MEP27 Decouple pyplot from backends (refactoring Gcf out of backend code)","user":{"login":"OceanWolf","id":3758703,"avatar_url":"https://avatars.githubusercontent.com/u/3758703?v=3","gravatar_id":"","url":"https://api.github.com/users/OceanWolf","html_url":"https://github.com/OceanWolf","followers_url":"https://api.github.com/users/OceanWolf/followers","following_url":"https://api.github.com/users/OceanWolf/following{/other_user}","gists_url":"https://api.github.com/users/OceanWolf/gists{/gist_id}","starred_url":"https://api.github.com/users/OceanWolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OceanWolf/subscriptions","organizations_url":"https://api.github.com/users/OceanWolf/orgs","repos_url":"https://api.github.com/users/OceanWolf/repos","events_url":"https://api.github.com/users/OceanWolf/events{/privacy}","received_events_url":"https://api.github.com/users/OceanWolf/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/matplotlib/matplotlib/labels/MEP22","name":"MEP22","color":"5319e7"},{"url":"https://api.github.com/repos/matplotlib/matplotlib/labels/MEP27","name":"MEP27","color":"5319e7"},{"url":"https://api.github.com/repos/matplotlib/matplotlib/labels/needs_review","name":"needs_review","color":"009800"}],"state":"open","locked":false,"assignee":{"login":"OceanWolf","id":3758703,"avatar_url":"https://avatars.githubusercontent.com/u/3758703?v=3","gravatar_id":"","url":"https://api.github.com/users/OceanWolf","html_url":"https://github.com/OceanWolf","followers_url":"https://api.github.com/users/OceanWolf/followers","following_url":"https://api.github.com/users/OceanWolf/following{/other_user}","gists_url":"https://api.github.com/users/OceanWolf/gists{/gist_id}","starred_url":"https://api.github.com/users/OceanWolf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OceanWolf/subscriptions","organizations_url":"https://api.github.com/users/OceanWolf/orgs","repos_url":"https://api.github.com/users/OceanWolf/repos","events_url":"https://api.github.com/users/OceanWolf/events{/privacy}","received_events_url":"https://api.github.com/users/OceanWolf/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/12","html_url":"https://github.com/matplotlib/matplotlib/milestones/proposed%20next%20point%20release","labels_url":"https://api.github.com/repos/matplotlib/matplotlib/milestones/12/labels","id":534144,"number":12,"title":"proposed next point release","description":"","creator":{"login":"tacaswell","id":199813,"avatar_url":"https://avatars.githubusercontent.com/u/199813?v=3","gravatar_id":"","url":"https://api.github.com/users/tacaswell","html_url":"https://github.com/tacaswell","followers_url":"https://api.github.com/users/tacaswell/followers","following_url":"https://api.github.com/users/tacaswell/following{/other_user}","gists_url":"https://api.github.com/users/tacaswell/gists{/gist_id}","starred_url":"https://api.github.com/users/tacaswell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tacaswell/subscriptions","organizations_url":"https://api.github.com/users/tacaswell/orgs","repos_url":"https://api.github.com/users/tacaswell/repos","events_url":"https://api.github.com/users/tacaswell/events{/privacy}","received_events_url":"https://api.github.com/users/tacaswell/received_events","type":"User","site_admin":false},"open_issues":368,"closed_issues":213,"state":"open","created_at":"2014-01-13T03:21:09Z","updated_at":"2015-07-27T22:45:33Z","due_on":null,"closed_at":null},"comments":142,"created_at":"2015-02-22T00:40:12Z","updated_at":"2015-07-28T19:18:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/matplotlib/matplotlib/pulls/4143","html_url":"https://github.com/matplotlib/matplotlib/pull/4143","diff_url":"https://github.com/matplotlib/matplotlib/pull/4143.diff","patch_url":"https://github.com/matplotlib/matplotlib/pull/4143.patch"},"body":"This PR exists as an alternative to https://github.com/matplotlib/matplotlib/pull/2624\r\n\r\nSee https://github.com/OceanWolf/matplotlib/blob/backend-refactor/doc/devel/MEP/MEP27.rst for details.\r\n\r\nTl;dr:\r\n``FigureManagerBase`` :arrow_right: ``FigureManager`` + ``WindowBase``\r\n``ShowBase`` :arrow_right: ``Gcf.show_all`` + ``MainLoopBase``\r\n\r\nThe main refactor (+gtk3 as an example) goes here, and will have no effect on the individual backends, work for other backends will occur in separate branches as indicated.\r\n\r\n- [ ] ``MacOSX``\r\n- [ ] ``CocoaAgg``\r\n- [ ] ``GTK``\r\n  - [ ] ``GTKCairo``\r\n  - [ ] ``GTKAgg``\r\n- [ ] ``NbAgg``\r\n- [x] ``WebAgg``  https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-webagg (still W-I-P, but will deal with last items in its PR)\r\n- [x] ``Wx`` https://github.com/OceanWolf/matplotlib/compare/backend-refactor...backend-refactor-wx\r\n  - [x] ``WxAgg``\r\n- [x] ``Qt`` https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-qt\r\n  - [x] ``Qt4Agg``\r\n  - [x] ``Qt5Agg``\r\n- [x] ``TkAgg`` https://github.com/OceanWolf/matplotlib/compare/backend-refactor...OceanWolf:backend-refactor-tkagg\r\n  - [ ] Remove tools.SaveFigureBase\r\n- [x] ``GTK3`` in this branch\r\n  - [x] ``GTK3Cairo``\r\n  - [x] ``GTK3Agg``\r\n\r\nTo accomplish this, we shall do this in two passes:\r\n1. The first pass we refactor out all generic backend code out of the ``gtk3`` backend, replacing these with common methods, i.e. we refactor out ``Gcf`` to ``backend_bases.py``.\r\n2. The second pass we then refactor ``Gcf``  out from ``backend_bases.py``.\r\n3. Other backends in separate branches, see list above for progress and make changes to this PR for global changes (none since the 2nd backend)."},"comment":{"url":"https://api.github.com/repos/matplotlib/matplotlib/issues/comments/125725434","html_url":"https://github.com/matplotlib/matplotlib/pull/4143#issuecomment-125725434","issue_url":"https://api.github.com/repos/matplotlib/matplotlib/issues/4143","id":125725434,"user":{"login":"jenshnielsen","id":548266,"avatar_url":"https://avatars.githubusercontent.com/u/548266?v=3","gravatar_id":"","url":"https://api.github.com/users/jenshnielsen","html_url":"https://github.com/jenshnielsen","followers_url":"https://api.github.com/users/jenshnielsen/followers","following_url":"https://api.github.com/users/jenshnielsen/following{/other_user}","gists_url":"https://api.github.com/users/jenshnielsen/gists{/gist_id}","starred_url":"https://api.github.com/users/jenshnielsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenshnielsen/subscriptions","organizations_url":"https://api.github.com/users/jenshnielsen/orgs","repos_url":"https://api.github.com/users/jenshnielsen/repos","events_url":"https://api.github.com/users/jenshnielsen/events{/privacy}","received_events_url":"https://api.github.com/users/jenshnielsen/received_events","type":"User","site_admin":false},"created_at":"2015-07-28T19:18:53Z","updated_at":"2015-07-28T19:18:53Z","body":"Matplotlib is testing pull requests automatically. If it is testing on your branch you probably also have travis enabled on your own repository. You can disable that at https://travis-ci.org/OceanWolf/matplotlib/settings"}}