{"action":"closed","number":4963,"pull_request":{"url":"https://api.github.com/repos/dlang/phobos/pulls/4963","id":98410165,"html_url":"https://github.com/dlang/phobos/pull/4963","diff_url":"https://github.com/dlang/phobos/pull/4963.diff","patch_url":"https://github.com/dlang/phobos/pull/4963.patch","issue_url":"https://api.github.com/repos/dlang/phobos/issues/4963","number":4963,"state":"closed","locked":false,"title":"[DEMO for DIP1005] Converted imports to selective imports in std.array","user":{"login":"andralex","id":566679,"avatar_url":"https://avatars.githubusercontent.com/u/566679?v=3","gravatar_id":"","url":"https://api.github.com/users/andralex","html_url":"https://github.com/andralex","followers_url":"https://api.github.com/users/andralex/followers","following_url":"https://api.github.com/users/andralex/following{/other_user}","gists_url":"https://api.github.com/users/andralex/gists{/gist_id}","starred_url":"https://api.github.com/users/andralex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andralex/subscriptions","organizations_url":"https://api.github.com/users/andralex/orgs","repos_url":"https://api.github.com/users/andralex/repos","events_url":"https://api.github.com/users/andralex/events{/privacy}","received_events_url":"https://api.github.com/users/andralex/received_events","type":"User","site_admin":false},"body":"For the second demo I managed to replace all imports with selective imports in std.array. It was a major effort that involved grepping for heuristics such as \"static if\", \"typeof\", \"^if\", \"compiles\", \"has\", \"\\Wis\" etc. A few examples of the difficulties for fun:\r\n\r\n1. Remove `isStaticArray` from the import list. The error is:\r\n\r\n```\r\nstd/conv.d(4169): Error: static assert  \"DirIteratorImpl cannot be emplaced from (string, SpanMode, bool).\"\r\nstd/conv.d(4250):        instantiated from here: emplaceRef!(DirIteratorImpl, DirIteratorImpl, string, SpanMode, bool)\r\nstd/typecons.d(4998):        instantiated from here: emplace!(DirIteratorImpl, string, SpanMode, bool)\r\nstd/typecons.d(5091):        instantiated from here: initialize!(string, SpanMode, bool)\r\nstd/file.d(3802):        instantiated from here: __ctor!(string, SpanMode, bool)\r\n```\r\n\r\nThis alone took me some 15-20 minutes and almost had me give up.\r\n\r\n2, Remove `hasElaborateAssign` from the import list. The error is:\r\n\r\n```\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3812): Error: template instance std.conv.textImpl!(string, string, const(char)[]) error instantiating\r\nstd/format.d(912):        instantiated from here: text!(string, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(103): Error: template instance std.format.FormatSpec!(immutable(char)) error instantiating\r\nstd/conv.d(939):        instantiated from here: toStr!(string, dchar)\r\nstd/conv.d(172):        instantiated from here: toImpl!(string, dchar)\r\nstd/conv.d(3857):        instantiated from here: to!dchar\r\nstd/conv.d(3812):        ... (4 instantiations, -v to show) ...\r\nstd/format.d(977):        instantiated from here: parse!(int, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3812): Error: template instance std.conv.textImpl!(string, string, string, string) error instantiating\r\nstd/conv.d(58):        instantiated from here: text!(string, string, string)\r\nstd/conv.d(2072):        instantiated from here: convError!(const(char)[], int)\r\nstd/format.d(977):        instantiated from here: parse!(int, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(2072): Error: template instance std.conv.convError!(const(char)[], uint) error instantiating\r\nstd/format.d(990):        instantiated from here: parse!(uint, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/format.d(1011): Error: template instance std.conv.parse!(ubyte, const(char)[]) error instantiating\r\n```\r\n\r\n3. Remove `isAssignable`. Error message is:\r\n\r\n```\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3812): Error: template instance std.conv.textImpl!(string, string, const(char)[]) error instantiating\r\nstd/format.d(912):        instantiated from here: text!(string, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(103): Error: template instance std.format.FormatSpec!(immutable(char)) error instantiating\r\nstd/conv.d(939):        instantiated from here: toStr!(string, dchar)\r\nstd/conv.d(172):        instantiated from here: toImpl!(string, dchar)\r\nstd/conv.d(3857):        instantiated from here: to!dchar\r\nstd/conv.d(3812):        ... (4 instantiations, -v to show) ...\r\nstd/format.d(977):        instantiated from here: parse!(int, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3857): Error: template std.array.Appender!string.Appender.put cannot deduce function from argument types !()(string), candidates are:\r\nstd/array.d(2823):        std.array.Appender!string.Appender.put(U)(U item) if (canPutItem!U)\r\nstd/array.d(2851):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutConstRange!Range)\r\nstd/array.d(2860):        std.array.Appender!string.Appender.put(Range)(Range items) if (canPutRange!Range)\r\nstd/conv.d(3812): Error: template instance std.conv.textImpl!(string, string, string, string) error instantiating\r\nstd/conv.d(58):        instantiated from here: text!(string, string, string)\r\nstd/conv.d(2072):        instantiated from here: convError!(const(char)[], int)\r\nstd/format.d(977):        instantiated from here: parse!(int, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/conv.d(2072): Error: template instance std.conv.convError!(const(char)[], uint) error instantiating\r\nstd/format.d(990):        instantiated from here: parse!(uint, const(char)[])\r\nstd/bigint.d(867):        instantiated from here: FormatSpec!char\r\nstd/format.d(1011): Error: template instance std.conv.parse!(ubyte, const(char)[]) error instantiating\r\n```\r\n\r\n4. Remove `isImplicitlyConvertible` with the result:\r\n\r\n```\r\nstd/range/primitives.d(347): Error: static assert  \"Cannot put a const(char) into a Appender!string.\"\r\nstd/format.d(1452):        instantiated from here: put!(Appender!string, const(char))\r\nstd/format.d(3485):        instantiated from here: formatValue!(Appender!string, ulong, char)\r\nstd/format.d(464):        instantiated from here: formatGeneric!(Appender!string, ulong, char)\r\nstd/format.d(6482):        ... (1 instantiations, -v to show) ...\r\nstd/typecons.d(400):        instantiated from here: format!(char, ulong, ulong)\r\nstd/encoding.d(3468):        instantiated from here: Tuple!(BOM, \"schema\", ubyte[], \"sequence\")\r\n```\r\n\r\n","created_at":"2016-12-16T22:02:22Z","updated_at":"2016-12-17T17:26:17Z","closed_at":"2016-12-17T17:26:17Z","merged_at":"2016-12-17T17:26:17Z","merge_commit_sha":"996543316ee5d6212151b5dda2cb3489e3b31c5c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/dlang/phobos/pulls/4963/commits","review_comments_url":"https://api.github.com/repos/dlang/phobos/pulls/4963/comments","review_comment_url":"https://api.github.com/repos/dlang/phobos/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dlang/phobos/issues/4963/comments","statuses_url":"https://api.github.com/repos/dlang/phobos/statuses/e064d5664f92c4b2f0866c08f6d0290ba66825ed","head":{"label":"andralex:selective_import_demo","ref":"selective_import_demo","sha":"e064d5664f92c4b2f0866c08f6d0290ba66825ed","user":{"login":"andralex","id":566679,"avatar_url":"https://avatars.githubusercontent.com/u/566679?v=3","gravatar_id":"","url":"https://api.github.com/users/andralex","html_url":"https://github.com/andralex","followers_url":"https://api.github.com/users/andralex/followers","following_url":"https://api.github.com/users/andralex/following{/other_user}","gists_url":"https://api.github.com/users/andralex/gists{/gist_id}","starred_url":"https://api.github.com/users/andralex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andralex/subscriptions","organizations_url":"https://api.github.com/users/andralex/orgs","repos_url":"https://api.github.com/users/andralex/repos","events_url":"https://api.github.com/users/andralex/events{/privacy}","received_events_url":"https://api.github.com/users/andralex/received_events","type":"User","site_admin":false},"repo":{"id":1415983,"name":"phobos","full_name":"andralex/phobos","owner":{"login":"andralex","id":566679,"avatar_url":"https://avatars.githubusercontent.com/u/566679?v=3","gravatar_id":"","url":"https://api.github.com/users/andralex","html_url":"https://github.com/andralex","followers_url":"https://api.github.com/users/andralex/followers","following_url":"https://api.github.com/users/andralex/following{/other_user}","gists_url":"https://api.github.com/users/andralex/gists{/gist_id}","starred_url":"https://api.github.com/users/andralex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andralex/subscriptions","organizations_url":"https://api.github.com/users/andralex/orgs","repos_url":"https://api.github.com/users/andralex/repos","events_url":"https://api.github.com/users/andralex/events{/privacy}","received_events_url":"https://api.github.com/users/andralex/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/andralex/phobos","description":"Runtime library for the D programming language","fork":true,"url":"https://api.github.com/repos/andralex/phobos","forks_url":"https://api.github.com/repos/andralex/phobos/forks","keys_url":"https://api.github.com/repos/andralex/phobos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/andralex/phobos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/andralex/phobos/teams","hooks_url":"https://api.github.com/repos/andralex/phobos/hooks","issue_events_url":"https://api.github.com/repos/andralex/phobos/issues/events{/number}","events_url":"https://api.github.com/repos/andralex/phobos/events","assignees_url":"https://api.github.com/repos/andralex/phobos/assignees{/user}","branches_url":"https://api.github.com/repos/andralex/phobos/branches{/branch}","tags_url":"https://api.github.com/repos/andralex/phobos/tags","blobs_url":"https://api.github.com/repos/andralex/phobos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/andralex/phobos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/andralex/phobos/git/refs{/sha}","trees_url":"https://api.github.com/repos/andralex/phobos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/andralex/phobos/statuses/{sha}","languages_url":"https://api.github.com/repos/andralex/phobos/languages","stargazers_url":"https://api.github.com/repos/andralex/phobos/stargazers","contributors_url":"https://api.github.com/repos/andralex/phobos/contributors","subscribers_url":"https://api.github.com/repos/andralex/phobos/subscribers","subscription_url":"https://api.github.com/repos/andralex/phobos/subscription","commits_url":"https://api.github.com/repos/andralex/phobos/commits{/sha}","git_commits_url":"https://api.github.com/repos/andralex/phobos/git/commits{/sha}","comments_url":"https://api.github.com/repos/andralex/phobos/comments{/number}","issue_comment_url":"https://api.github.com/repos/andralex/phobos/issues/comments{/number}","contents_url":"https://api.github.com/repos/andralex/phobos/contents/{+path}","compare_url":"https://api.github.com/repos/andralex/phobos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/andralex/phobos/merges","archive_url":"https://api.github.com/repos/andralex/phobos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/andralex/phobos/downloads","issues_url":"https://api.github.com/repos/andralex/phobos/issues{/number}","pulls_url":"https://api.github.com/repos/andralex/phobos/pulls{/number}","milestones_url":"https://api.github.com/repos/andralex/phobos/milestones{/number}","notifications_url":"https://api.github.com/repos/andralex/phobos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/andralex/phobos/labels{/name}","releases_url":"https://api.github.com/repos/andralex/phobos/releases{/id}","deployments_url":"https://api.github.com/repos/andralex/phobos/deployments","created_at":"2011-02-26T21:18:12Z","updated_at":"2015-09-27T06:56:02Z","pushed_at":"2016-12-17T16:50:22Z","git_url":"git://github.com/andralex/phobos.git","ssh_url":"git@github.com:andralex/phobos.git","clone_url":"https://github.com/andralex/phobos.git","svn_url":"https://github.com/andralex/phobos","homepage":"d-programming-language.org","size":47965,"stargazers_count":24,"watchers_count":24,"language":"D","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":0,"forks":4,"open_issues":0,"watchers":24,"default_branch":"master"}},"base":{"label":"dlang:master","ref":"master","sha":"f3a840144a156fce5efee82ca13152c2ac1ef1c3","user":{"login":"dlang","id":565913,"avatar_url":"https://avatars.githubusercontent.com/u/565913?v=3","gravatar_id":"","url":"https://api.github.com/users/dlang","html_url":"https://github.com/dlang","followers_url":"https://api.github.com/users/dlang/followers","following_url":"https://api.github.com/users/dlang/following{/other_user}","gists_url":"https://api.github.com/users/dlang/gists{/gist_id}","starred_url":"https://api.github.com/users/dlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlang/subscriptions","organizations_url":"https://api.github.com/users/dlang/orgs","repos_url":"https://api.github.com/users/dlang/repos","events_url":"https://api.github.com/users/dlang/events{/privacy}","received_events_url":"https://api.github.com/users/dlang/received_events","type":"Organization","site_admin":false},"repo":{"id":1257084,"name":"phobos","full_name":"dlang/phobos","owner":{"login":"dlang","id":565913,"avatar_url":"https://avatars.githubusercontent.com/u/565913?v=3","gravatar_id":"","url":"https://api.github.com/users/dlang","html_url":"https://github.com/dlang","followers_url":"https://api.github.com/users/dlang/followers","following_url":"https://api.github.com/users/dlang/following{/other_user}","gists_url":"https://api.github.com/users/dlang/gists{/gist_id}","starred_url":"https://api.github.com/users/dlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlang/subscriptions","organizations_url":"https://api.github.com/users/dlang/orgs","repos_url":"https://api.github.com/users/dlang/repos","events_url":"https://api.github.com/users/dlang/events{/privacy}","received_events_url":"https://api.github.com/users/dlang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dlang/phobos","description":"The standard library of the D programming language","fork":false,"url":"https://api.github.com/repos/dlang/phobos","forks_url":"https://api.github.com/repos/dlang/phobos/forks","keys_url":"https://api.github.com/repos/dlang/phobos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dlang/phobos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dlang/phobos/teams","hooks_url":"https://api.github.com/repos/dlang/phobos/hooks","issue_events_url":"https://api.github.com/repos/dlang/phobos/issues/events{/number}","events_url":"https://api.github.com/repos/dlang/phobos/events","assignees_url":"https://api.github.com/repos/dlang/phobos/assignees{/user}","branches_url":"https://api.github.com/repos/dlang/phobos/branches{/branch}","tags_url":"https://api.github.com/repos/dlang/phobos/tags","blobs_url":"https://api.github.com/repos/dlang/phobos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dlang/phobos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dlang/phobos/git/refs{/sha}","trees_url":"https://api.github.com/repos/dlang/phobos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dlang/phobos/statuses/{sha}","languages_url":"https://api.github.com/repos/dlang/phobos/languages","stargazers_url":"https://api.github.com/repos/dlang/phobos/stargazers","contributors_url":"https://api.github.com/repos/dlang/phobos/contributors","subscribers_url":"https://api.github.com/repos/dlang/phobos/subscribers","subscription_url":"https://api.github.com/repos/dlang/phobos/subscription","commits_url":"https://api.github.com/repos/dlang/phobos/commits{/sha}","git_commits_url":"https://api.github.com/repos/dlang/phobos/git/commits{/sha}","comments_url":"https://api.github.com/repos/dlang/phobos/comments{/number}","issue_comment_url":"https://api.github.com/repos/dlang/phobos/issues/comments{/number}","contents_url":"https://api.github.com/repos/dlang/phobos/contents/{+path}","compare_url":"https://api.github.com/repos/dlang/phobos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dlang/phobos/merges","archive_url":"https://api.github.com/repos/dlang/phobos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dlang/phobos/downloads","issues_url":"https://api.github.com/repos/dlang/phobos/issues{/number}","pulls_url":"https://api.github.com/repos/dlang/phobos/pulls{/number}","milestones_url":"https://api.github.com/repos/dlang/phobos/milestones{/number}","notifications_url":"https://api.github.com/repos/dlang/phobos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dlang/phobos/labels{/name}","releases_url":"https://api.github.com/repos/dlang/phobos/releases{/id}","deployments_url":"https://api.github.com/repos/dlang/phobos/deployments","created_at":"2011-01-15T07:00:06Z","updated_at":"2016-12-17T02:47:12Z","pushed_at":"2016-12-17T17:26:17Z","git_url":"git://github.com/dlang/phobos.git","ssh_url":"git@github.com:dlang/phobos.git","clone_url":"https://github.com/dlang/phobos.git","svn_url":"https://github.com/dlang/phobos","homepage":"dlang.org/phobos","size":47676,"stargazers_count":761,"watchers_count":761,"language":"D","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":524,"mirror_url":null,"open_issues_count":85,"forks":524,"open_issues":85,"watchers":761,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dlang/phobos/pulls/4963"},"html":{"href":"https://github.com/dlang/phobos/pull/4963"},"issue":{"href":"https://api.github.com/repos/dlang/phobos/issues/4963"},"comments":{"href":"https://api.github.com/repos/dlang/phobos/issues/4963/comments"},"review_comments":{"href":"https://api.github.com/repos/dlang/phobos/pulls/4963/comments"},"review_comment":{"href":"https://api.github.com/repos/dlang/phobos/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dlang/phobos/pulls/4963/commits"},"statuses":{"href":"https://api.github.com/repos/dlang/phobos/statuses/e064d5664f92c4b2f0866c08f6d0290ba66825ed"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"andralex","id":566679,"avatar_url":"https://avatars.githubusercontent.com/u/566679?v=3","gravatar_id":"","url":"https://api.github.com/users/andralex","html_url":"https://github.com/andralex","followers_url":"https://api.github.com/users/andralex/followers","following_url":"https://api.github.com/users/andralex/following{/other_user}","gists_url":"https://api.github.com/users/andralex/gists{/gist_id}","starred_url":"https://api.github.com/users/andralex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andralex/subscriptions","organizations_url":"https://api.github.com/users/andralex/orgs","repos_url":"https://api.github.com/users/andralex/repos","events_url":"https://api.github.com/users/andralex/events{/privacy}","received_events_url":"https://api.github.com/users/andralex/received_events","type":"User","site_admin":false},"comments":4,"review_comments":0,"commits":1,"additions":14,"deletions":8,"changed_files":1}}
{"actor":{"display_login":"andralex"}}