{"action":"created","comment":{"url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/comments/80887352","pull_request_review_id":1907843,"id":80887352,"diff_hunk":"@@ -311,10 +311,85 @@ def __plugPopupMenu( menuDefinition, plugValueWidget ) :\n \tif not isinstance( node, GafferOSL.OSLCode ) :\n \t\treturn\n \n-\tif plug.parent() not in ( node[\"parameters\"], node[\"out\"] ) :\n-\t\treturn\n-\n-\tmenuDefinition.append( \"/DeleteDivider\", { \"divider\" : True } )\n-\tmenuDefinition.append( \"/Delete\", { \"command\" : IECore.curry( __deletePlug, plug ), \"active\" : not plugValueWidget.getReadOnly() } )\n+\tif plug.parent() in ( node[\"parameters\"], node[\"out\"] ) :\n+\n+\t\tmenuDefinition.append( \"/DeleteDivider\", { \"divider\" : True } )\n+\t\tmenuDefinition.append( \"/Delete\", { \"command\" : IECore.curry( __deletePlug, plug ), \"active\" : not plugValueWidget.getReadOnly() } )\n+\n+\telif plug.isSame( node[\"code\"] ) :\n+\n+\t\tfor label, text in reversed( [\n+\n+\t\t\t( \"/Math/Constants/Pi\", \"M_PI\" ),\n+\t\t\t( \"/Math/Angles/Radians\", \"radians( angleInDegrees )\" ),\n+\t\t\t( \"/Math/Angles/Degrees\", \"degrees( angleInRadians )\" ),\n+\t\t\t( \"/Math/Trigonometry/Sin\", \"sin( angleInRadians )\" ),\n+\t\t\t( \"/Math/Trigonometry/Cosine\", \"cos( angleInRadians )\" ),\n+\t\t\t( \"/Math/Trigonometry/Tangent\", \"tan( angleInRadians )\" ),\n+\t\t\t( \"/Math/Trigonometry/Arc Sin\", \"asin( y )\" ),\n+\t\t\t( \"/Math/Trigonometry/Arc Cosine\", \"acos( x )\" ),\n+\t\t\t( \"/Math/Trigonometry/Arc Tangent\", \"atan( yOverX )\" ),\n+\t\t\t( \"/Math/Trigonometry/Arc Tangent 2\", \"atan2( y, x )\" ),\n+\t\t\t( \"/Math/Exponents/Pow\", \"pow( x, y )\" ),\n+\t\t\t( \"/Math/Exponents/Exp\", \"exp( x )\" ),\n+\t\t\t( \"/Math/Exponents/Log\", \"log( x )\" ),\n+\t\t\t( \"/Math/Exponents/Square Root\", \"sqrt( x )\" ),\n+\t\t\t( \"/Math/Utility/Abs\", \"abs( x )\" ),\n+\t\t\t( \"/Math/Utility/Sign\", \"sign( x )\" ),\n+\t\t\t( \"/Math/Utility/Floor\", \"floor( x )\" ),\n+\t\t\t( \"/Math/Utility/Ceil\", \"ceil( x )\" ),\n+\t\t\t( \"/Math/Utility/Round\", \"round( x )\" ),\n+\t\t\t( \"/Math/Utility/Trunc\", \"trunc( x )\" ),\n+\t\t\t( \"/Math/Utility/Mod\", \"mod( x )\" ),\n+\t\t\t( \"/Math/Utility/Min\", \"min( a, b )\" ),\n+\t\t\t( \"/Math/Utility/Max\", \"max( a, b )\" ),\n+\t\t\t( \"/Math/Utility/Clamp\", \"clamp( x, minValue, maxValue )\" ),\n+\t\t\t( \"/Math/Utility/Mix\", \"mix( a, b, alpha )\" ),\n+\t\t\t( \"/Math/Geometry/Dot\", \"dot( a, b )\" ),\n+\n+\t\t\t( \"/Geometry/Cross\", \"cross( a, b )\" ),\n+\t\t\t( \"/Geometry/Length\", \"length( V )\" ),\n+\t\t\t( \"/Geometry/Length\", \"distance( p0, p1 )\" ),\n+\t\t\t( \"/Geometry/Normalize\", \"normalize( V )\" ),\n+\t\t\t( \"/Geometry/Face Forward\", \"faceforward( N, I )\" ),\n+\t\t\t( \"/Geometry/Reflect\", \"reflect( I, N )\" ),\n+\t\t\t( \"/Geometry/Refract\", \"refract( I, N, eta )\" ),\n+\t\t\t( \"/Geometry/Rotate\", \"rotate( p, angle, p0, p1 )\" ),\n+\t\t\t( \"/Geometry/Transform\", \"transform( toSpace, p )\" ),\n+\t\t\t( \"/Geometry/Transform\", \"transform( fromSpace, toSpace, p )\" ),\n+\n+\t\t\t( \"/Color/Luminance\", \"luminance( c )\" ),\n+\t\t\t( \"/Color/BlackBody\", \"blackbody( degreesKelvin )\" ),\n+\t\t\t( \"/Color/Wavelength Color\", \"wavelength_color( wavelengthNm )\" ),\n+\t\t\t( \"/Color/Transform\", \"transformc( fromSpace, toSpace, c )\" ),\n+\n+\t\t\t( \"/Pattern/Step\", \"step( edge, x )\" ),\n+\t\t\t( \"/Pattern/Linear Step\", \"linearstep( edge0, edge1, x )\" ),\n+\t\t\t( \"/Pattern/Smooth Step\", \"smoothstep( edge0, edge1, x )\" ),\n+\t\t\t( \"/Pattern/Noise\", \"noise( \\\"perlin\\\", p )\" ),\n+\t\t\t( \"/Pattern/Periodic Noise\", \"noise( \\\"perlin\\\", p, period )\" ),\n+\t\t\t( \"/Pattern/Cell Noise\", \"cellnoise( p )\" ),\n+\n+\t\t\t( \"/String/Length\", \"length( str )\" ),\n+\t\t\t( \"/String/Format\", \"format( \\\"\\\", ... )\" ),\n+\t\t\t( \"/String/Join\", \"concat( str0, str1 )\" ),\n+\t\t\t( \"/String/Split\", \"split( str, results )\" ),\n+\t\t\t( \"/String/Starts With\", \"startswith( str, prefix )\" ),\n+\t\t\t( \"/String/Ends With\", \"endswith( str, suffix )\" ),\n+\t\t\t( \"/String/Substring\", \"substr( str, start, length )\" ),\n+\t\t\t( \"/String/Get Char\", \"getchar( str, n )\" ),\n+\t\t\t( \"/String/Hash\", \"hash( str )\" ),\n+\n+\t\t\t( \"/Texture/Texture\", \"texture( filename, s, t )\" ),\n+\t\t\t( \"/Texture/Environment\", \"environment( filename, R )\" ),\n+\n+\t\t] ) :\n+\n+\t\t\tmenuDefinition.prepend( \"/InsertDivider\", { \"divider\" : True } )\n+\n+\t\t\tmenuDefinition.prepend(\n+\t\t\t\t\"/Insert\" + label,\n+\t\t\t\t{ \"command\" : functools.partial( plugValueWidget.textWidget().insertText, text ) },","path":"python/GafferOSLUI/OSLCodeUI.py","position":403,"original_position":87,"commit_id":"3f6e59bd33479bc46b3d13c5569ac925a2c5f12f","original_commit_id":"ad6551a3bd0a2fcb8b7a46ace07dcba87df5cc92","user":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"body":"Yeah, hardcoding it kindof sucked, but I didn't know any other way - I don't think it can be introspected. Another thing I wanted was to have a handy reference section in the manual with all the functions and their descriptions from the osl language spec. We do link to the actual spec itself, but there's so much verbiage to get past before getting to the function reference that I fear it'll put people off.\r\n\r\nOne approach would be to crib everything out of the language spec, convert it to markdown and store it somewhere (maybe even as metadata in gaffer?). Then we could generate the reference manual and the menus from it. That seemed a bit of an effort though, so I left it as future work.\r\n\r\nI've added `isconnected()` and `isconstant()` for good measure.\r\n\r\nI haven't added `inFloat()` etc for a couple of reasons. Firstly, I was hoping to find the time at some point  to explore the possibility of having the inputs/outputs map directly to primvars/channels without needing the functions. Secondly, folks can always use the InFloat shaders etc connected to the inputs/outputs, which kindof encourages making a more modular shader in the middle anyway. Not a big deal to add them if you think it's definitely better that may, but I kindof wanted to see how things panned out first.","created_at":"2016-09-28T10:36:18Z","updated_at":"2016-09-28T10:36:18Z","html_url":"https://github.com/ImageEngine/gaffer/pull/1861#discussion_r80887352","pull_request_url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861","_links":{"self":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/comments/80887352"},"html":{"href":"https://github.com/ImageEngine/gaffer/pull/1861#discussion_r80887352"},"pull_request":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861"}}},"pull_request":{"url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861","id":86773989,"html_url":"https://github.com/ImageEngine/gaffer/pull/1861","diff_url":"https://github.com/ImageEngine/gaffer/pull/1861.diff","patch_url":"https://github.com/ImageEngine/gaffer/pull/1861.patch","issue_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1861","number":1861,"state":"open","locked":false,"title":"OSLCode node round 2","user":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"body":"This reimplements the prototype OSLCode node from #1843 based on our discussion there. It is now focussed totally on making little OSL utility shaders/snippets, and parameter creation is handled through the UI rather than the code. The full shader is synthesized by taking the body of the code as entered by the user and inserting it into an autogenerated template containing the parameter definitions generated from the UI. It looks a lot like Andrew's mockup :\r\n\r\n![oslcode](https://cloud.githubusercontent.com/assets/1133871/18842512/234733a2-840d-11e6-96f0-59a3bf44ed92.png)\r\n\r\nI haven't added the \"see the full shader\" tab as showing the guts of the generated code seemed a bit at odds with the \"make snippets feel easy\" goal, but instead I've provided a menu item in the tool menu to export the full .osl source code.\r\n\r\nThis PR also contains minor improvements to code editors (why we haven't used a monospaced font until now I don't know), a bunch of UI fixes to deal with the new problems thrown up by the OSLCode node, and a basic tutorial in the documentation.","created_at":"2016-09-26T16:20:23Z","updated_at":"2016-09-28T10:36:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"036fdc897546c8210b9d5fdf0337c5452567d401","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861/commits","review_comments_url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861/comments","review_comment_url":"https://api.github.com/repos/ImageEngine/gaffer/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/1861/comments","statuses_url":"https://api.github.com/repos/ImageEngine/gaffer/statuses/3f6e59bd33479bc46b3d13c5569ac925a2c5f12f","head":{"label":"johnhaddon:oslCode","ref":"oslCode","sha":"3f6e59bd33479bc46b3d13c5569ac925a2c5f12f","user":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"repo":{"id":9043150,"name":"gaffer","full_name":"johnhaddon/gaffer","owner":{"login":"johnhaddon","id":1133871,"avatar_url":"https://avatars.githubusercontent.com/u/1133871?v=3","gravatar_id":"","url":"https://api.github.com/users/johnhaddon","html_url":"https://github.com/johnhaddon","followers_url":"https://api.github.com/users/johnhaddon/followers","following_url":"https://api.github.com/users/johnhaddon/following{/other_user}","gists_url":"https://api.github.com/users/johnhaddon/gists{/gist_id}","starred_url":"https://api.github.com/users/johnhaddon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnhaddon/subscriptions","organizations_url":"https://api.github.com/users/johnhaddon/orgs","repos_url":"https://api.github.com/users/johnhaddon/repos","events_url":"https://api.github.com/users/johnhaddon/events{/privacy}","received_events_url":"https://api.github.com/users/johnhaddon/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/johnhaddon/gaffer","description":"My day-to-day development","fork":true,"url":"https://api.github.com/repos/johnhaddon/gaffer","forks_url":"https://api.github.com/repos/johnhaddon/gaffer/forks","keys_url":"https://api.github.com/repos/johnhaddon/gaffer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/johnhaddon/gaffer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/johnhaddon/gaffer/teams","hooks_url":"https://api.github.com/repos/johnhaddon/gaffer/hooks","issue_events_url":"https://api.github.com/repos/johnhaddon/gaffer/issues/events{/number}","events_url":"https://api.github.com/repos/johnhaddon/gaffer/events","assignees_url":"https://api.github.com/repos/johnhaddon/gaffer/assignees{/user}","branches_url":"https://api.github.com/repos/johnhaddon/gaffer/branches{/branch}","tags_url":"https://api.github.com/repos/johnhaddon/gaffer/tags","blobs_url":"https://api.github.com/repos/johnhaddon/gaffer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/johnhaddon/gaffer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/johnhaddon/gaffer/git/refs{/sha}","trees_url":"https://api.github.com/repos/johnhaddon/gaffer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/johnhaddon/gaffer/statuses/{sha}","languages_url":"https://api.github.com/repos/johnhaddon/gaffer/languages","stargazers_url":"https://api.github.com/repos/johnhaddon/gaffer/stargazers","contributors_url":"https://api.github.com/repos/johnhaddon/gaffer/contributors","subscribers_url":"https://api.github.com/repos/johnhaddon/gaffer/subscribers","subscription_url":"https://api.github.com/repos/johnhaddon/gaffer/subscription","commits_url":"https://api.github.com/repos/johnhaddon/gaffer/commits{/sha}","git_commits_url":"https://api.github.com/repos/johnhaddon/gaffer/git/commits{/sha}","comments_url":"https://api.github.com/repos/johnhaddon/gaffer/comments{/number}","issue_comment_url":"https://api.github.com/repos/johnhaddon/gaffer/issues/comments{/number}","contents_url":"https://api.github.com/repos/johnhaddon/gaffer/contents/{+path}","compare_url":"https://api.github.com/repos/johnhaddon/gaffer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/johnhaddon/gaffer/merges","archive_url":"https://api.github.com/repos/johnhaddon/gaffer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/johnhaddon/gaffer/downloads","issues_url":"https://api.github.com/repos/johnhaddon/gaffer/issues{/number}","pulls_url":"https://api.github.com/repos/johnhaddon/gaffer/pulls{/number}","milestones_url":"https://api.github.com/repos/johnhaddon/gaffer/milestones{/number}","notifications_url":"https://api.github.com/repos/johnhaddon/gaffer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/johnhaddon/gaffer/labels{/name}","releases_url":"https://api.github.com/repos/johnhaddon/gaffer/releases{/id}","deployments_url":"https://api.github.com/repos/johnhaddon/gaffer/deployments","created_at":"2013-03-27T00:06:40Z","updated_at":"2016-09-12T15:39:20Z","pushed_at":"2016-09-28T10:23:43Z","git_url":"git://github.com/johnhaddon/gaffer.git","ssh_url":"git@github.com:johnhaddon/gaffer.git","clone_url":"https://github.com/johnhaddon/gaffer.git","svn_url":"https://github.com/johnhaddon/gaffer","homepage":"","size":24394,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ImageEngine:master","ref":"master","sha":"de3dc4c10a5b3cb8909dd976bc90f5a1cb6bb94b","user":{"login":"ImageEngine","id":3976662,"avatar_url":"https://avatars.githubusercontent.com/u/3976662?v=3","gravatar_id":"","url":"https://api.github.com/users/ImageEngine","html_url":"https://github.com/ImageEngine","followers_url":"https://api.github.com/users/ImageEngine/followers","following_url":"https://api.github.com/users/ImageEngine/following{/other_user}","gists_url":"https://api.github.com/users/ImageEngine/gists{/gist_id}","starred_url":"https://api.github.com/users/ImageEngine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ImageEngine/subscriptions","organizations_url":"https://api.github.com/users/ImageEngine/orgs","repos_url":"https://api.github.com/users/ImageEngine/repos","events_url":"https://api.github.com/users/ImageEngine/events{/privacy}","received_events_url":"https://api.github.com/users/ImageEngine/received_events","type":"Organization","site_admin":false},"repo":{"id":9043124,"name":"gaffer","full_name":"ImageEngine/gaffer","owner":{"login":"ImageEngine","id":3976662,"avatar_url":"https://avatars.githubusercontent.com/u/3976662?v=3","gravatar_id":"","url":"https://api.github.com/users/ImageEngine","html_url":"https://github.com/ImageEngine","followers_url":"https://api.github.com/users/ImageEngine/followers","following_url":"https://api.github.com/users/ImageEngine/following{/other_user}","gists_url":"https://api.github.com/users/ImageEngine/gists{/gist_id}","starred_url":"https://api.github.com/users/ImageEngine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ImageEngine/subscriptions","organizations_url":"https://api.github.com/users/ImageEngine/orgs","repos_url":"https://api.github.com/users/ImageEngine/repos","events_url":"https://api.github.com/users/ImageEngine/events{/privacy}","received_events_url":"https://api.github.com/users/ImageEngine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ImageEngine/gaffer","description":"Gaffer is an open source application framework designed specifically for creating tools for use in visual effects production.","fork":false,"url":"https://api.github.com/repos/ImageEngine/gaffer","forks_url":"https://api.github.com/repos/ImageEngine/gaffer/forks","keys_url":"https://api.github.com/repos/ImageEngine/gaffer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ImageEngine/gaffer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ImageEngine/gaffer/teams","hooks_url":"https://api.github.com/repos/ImageEngine/gaffer/hooks","issue_events_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/events{/number}","events_url":"https://api.github.com/repos/ImageEngine/gaffer/events","assignees_url":"https://api.github.com/repos/ImageEngine/gaffer/assignees{/user}","branches_url":"https://api.github.com/repos/ImageEngine/gaffer/branches{/branch}","tags_url":"https://api.github.com/repos/ImageEngine/gaffer/tags","blobs_url":"https://api.github.com/repos/ImageEngine/gaffer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ImageEngine/gaffer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ImageEngine/gaffer/git/refs{/sha}","trees_url":"https://api.github.com/repos/ImageEngine/gaffer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ImageEngine/gaffer/statuses/{sha}","languages_url":"https://api.github.com/repos/ImageEngine/gaffer/languages","stargazers_url":"https://api.github.com/repos/ImageEngine/gaffer/stargazers","contributors_url":"https://api.github.com/repos/ImageEngine/gaffer/contributors","subscribers_url":"https://api.github.com/repos/ImageEngine/gaffer/subscribers","subscription_url":"https://api.github.com/repos/ImageEngine/gaffer/subscription","commits_url":"https://api.github.com/repos/ImageEngine/gaffer/commits{/sha}","git_commits_url":"https://api.github.com/repos/ImageEngine/gaffer/git/commits{/sha}","comments_url":"https://api.github.com/repos/ImageEngine/gaffer/comments{/number}","issue_comment_url":"https://api.github.com/repos/ImageEngine/gaffer/issues/comments{/number}","contents_url":"https://api.github.com/repos/ImageEngine/gaffer/contents/{+path}","compare_url":"https://api.github.com/repos/ImageEngine/gaffer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ImageEngine/gaffer/merges","archive_url":"https://api.github.com/repos/ImageEngine/gaffer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ImageEngine/gaffer/downloads","issues_url":"https://api.github.com/repos/ImageEngine/gaffer/issues{/number}","pulls_url":"https://api.github.com/repos/ImageEngine/gaffer/pulls{/number}","milestones_url":"https://api.github.com/repos/ImageEngine/gaffer/milestones{/number}","notifications_url":"https://api.github.com/repos/ImageEngine/gaffer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ImageEngine/gaffer/labels{/name}","releases_url":"https://api.github.com/repos/ImageEngine/gaffer/releases{/id}","deployments_url":"https://api.github.com/repos/ImageEngine/gaffer/deployments","created_at":"2013-03-27T00:04:53Z","updated_at":"2016-09-28T05:43:16Z","pushed_at":"2016-09-28T10:23:43Z","git_url":"git://github.com/ImageEngine/gaffer.git","ssh_url":"git@github.com:ImageEngine/gaffer.git","clone_url":"https://github.com/ImageEngine/gaffer.git","svn_url":"https://github.com/ImageEngine/gaffer","homepage":"http://www.gafferhq.org","size":110882,"stargazers_count":231,"watchers_count":231,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":85,"mirror_url":null,"open_issues_count":202,"forks":85,"open_issues":202,"watchers":231,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861"},"html":{"href":"https://github.com/ImageEngine/gaffer/pull/1861"},"issue":{"href":"https://api.github.com/repos/ImageEngine/gaffer/issues/1861"},"comments":{"href":"https://api.github.com/repos/ImageEngine/gaffer/issues/1861/comments"},"review_comments":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861/comments"},"review_comment":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ImageEngine/gaffer/pulls/1861/commits"},"statuses":{"href":"https://api.github.com/repos/ImageEngine/gaffer/statuses/3f6e59bd33479bc46b3d13c5569ac925a2c5f12f"}}}}
{"actor":{"display_login":"johnhaddon"}}