{"action":"closed","number":2933,"pull_request":{"url":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933","id":237018915,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3MDE4OTE1","html_url":"https://github.com/GafferHQ/gaffer/pull/2933","diff_url":"https://github.com/GafferHQ/gaffer/pull/2933.diff","patch_url":"https://github.com/GafferHQ/gaffer/pull/2933.patch","issue_url":"https://api.github.com/repos/GafferHQ/gaffer/issues/2933","number":2933,"state":"closed","locked":false,"title":"Fix crash when starting Gaffer with unicode in the clipboard.","user":{"login":"andrewkaufman","id":3979682,"node_id":"MDQ6VXNlcjM5Nzk2ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/3979682?v=4","gravatar_id":"","url":"https://api.github.com/users/andrewkaufman","html_url":"https://github.com/andrewkaufman","followers_url":"https://api.github.com/users/andrewkaufman/followers","following_url":"https://api.github.com/users/andrewkaufman/following{/other_user}","gists_url":"https://api.github.com/users/andrewkaufman/gists{/gist_id}","starred_url":"https://api.github.com/users/andrewkaufman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andrewkaufman/subscriptions","organizations_url":"https://api.github.com/users/andrewkaufman/orgs","repos_url":"https://api.github.com/users/andrewkaufman/repos","events_url":"https://api.github.com/users/andrewkaufman/events{/privacy}","received_events_url":"https://api.github.com/users/andrewkaufman/received_events","type":"User","site_admin":false},"body":"We just skip the unsupported characters.\r\n\r\nBefore this change, copying unicode (like 🤠) and starting gaffer would crash with the following:\r\n\r\n```\r\nTraceback (most recent call last):\r\n  File \"/software/apps/gaffer/0.52.3.0/cent7.x86_64/cortex/10/gaffer/bin/gaffer.py\", line 162, in <module>\r\n    app = loadApp( appName )\r\n  File \"/software/apps/gaffer/0.52.3.0/cent7.x86_64/cortex/10/gaffer/bin/gaffer.py\", line 71, in loadApp\r\n    return appLoader.load( appName )()\r\n  File \"/software/apps/gaffer/0.52.3.0/cent7.x86_64/cortex/10/gaffer/apps/gui/gui-1.py\", line 83, in __init__\r\n    self.__setupClipboardSync()\r\n  File \"/software/apps/gaffer/0.52.3.0/cent7.x86_64/cortex/10/gaffer/apps/gui/gui-1.py\", line 133, in __setupClipboardSync\r\n    self.__qtClipboardContentsChanged() # Trigger initial sync\r\n  File \"/software/apps/gaffer/0.52.3.0/cent7.x86_64/cortex/10/gaffer/apps/gui/gui-1.py\", line 156, in __qtClipboardContentsChanged\r\n    text = str( QtWidgets.QApplication.clipboard().text() )\r\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\U0001f602' in position 0: ordinal not in range(128)\r\n```\r\n\r\nI could alternatively catch `UnicodeEncodeError` and not copy anything to the clipboard, but this seemed to be the suggested approach on the interwebs.","created_at":"2018-12-07T23:11:52Z","updated_at":"2018-12-11T09:20:45Z","closed_at":"2018-12-11T09:20:45Z","merged_at":"2018-12-11T09:20:45Z","merge_commit_sha":"5d30211d27ce4a7ac52d27938ed7f6c7417208f7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933/commits","review_comments_url":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933/comments","review_comment_url":"https://api.github.com/repos/GafferHQ/gaffer/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GafferHQ/gaffer/issues/2933/comments","statuses_url":"https://api.github.com/repos/GafferHQ/gaffer/statuses/e4d7fbe98f2ec4de16f83121afea74e117379520","head":{"label":"andrewkaufman:clipboard","ref":"clipboard","sha":"e4d7fbe98f2ec4de16f83121afea74e117379520","user":{"login":"andrewkaufman","id":3979682,"node_id":"MDQ6VXNlcjM5Nzk2ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/3979682?v=4","gravatar_id":"","url":"https://api.github.com/users/andrewkaufman","html_url":"https://github.com/andrewkaufman","followers_url":"https://api.github.com/users/andrewkaufman/followers","following_url":"https://api.github.com/users/andrewkaufman/following{/other_user}","gists_url":"https://api.github.com/users/andrewkaufman/gists{/gist_id}","starred_url":"https://api.github.com/users/andrewkaufman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andrewkaufman/subscriptions","organizations_url":"https://api.github.com/users/andrewkaufman/orgs","repos_url":"https://api.github.com/users/andrewkaufman/repos","events_url":"https://api.github.com/users/andrewkaufman/events{/privacy}","received_events_url":"https://api.github.com/users/andrewkaufman/received_events","type":"User","site_admin":false},"repo":{"id":9043305,"node_id":"MDEwOlJlcG9zaXRvcnk5MDQzMzA1","name":"gaffer","full_name":"andrewkaufman/gaffer","private":false,"owner":{"login":"andrewkaufman","id":3979682,"node_id":"MDQ6VXNlcjM5Nzk2ODI=","avatar_url":"https://avatars1.githubusercontent.com/u/3979682?v=4","gravatar_id":"","url":"https://api.github.com/users/andrewkaufman","html_url":"https://github.com/andrewkaufman","followers_url":"https://api.github.com/users/andrewkaufman/followers","following_url":"https://api.github.com/users/andrewkaufman/following{/other_user}","gists_url":"https://api.github.com/users/andrewkaufman/gists{/gist_id}","starred_url":"https://api.github.com/users/andrewkaufman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andrewkaufman/subscriptions","organizations_url":"https://api.github.com/users/andrewkaufman/orgs","repos_url":"https://api.github.com/users/andrewkaufman/repos","events_url":"https://api.github.com/users/andrewkaufman/events{/privacy}","received_events_url":"https://api.github.com/users/andrewkaufman/received_events","type":"User","site_admin":false},"html_url":"https://github.com/andrewkaufman/gaffer","description":"My day-to-day development. See ImageEngine/gaffer for official code","fork":true,"url":"https://api.github.com/repos/andrewkaufman/gaffer","forks_url":"https://api.github.com/repos/andrewkaufman/gaffer/forks","keys_url":"https://api.github.com/repos/andrewkaufman/gaffer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/andrewkaufman/gaffer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/andrewkaufman/gaffer/teams","hooks_url":"https://api.github.com/repos/andrewkaufman/gaffer/hooks","issue_events_url":"https://api.github.com/repos/andrewkaufman/gaffer/issues/events{/number}","events_url":"https://api.github.com/repos/andrewkaufman/gaffer/events","assignees_url":"https://api.github.com/repos/andrewkaufman/gaffer/assignees{/user}","branches_url":"https://api.github.com/repos/andrewkaufman/gaffer/branches{/branch}","tags_url":"https://api.github.com/repos/andrewkaufman/gaffer/tags","blobs_url":"https://api.github.com/repos/andrewkaufman/gaffer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/andrewkaufman/gaffer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/andrewkaufman/gaffer/git/refs{/sha}","trees_url":"https://api.github.com/repos/andrewkaufman/gaffer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/andrewkaufman/gaffer/statuses/{sha}","languages_url":"https://api.github.com/repos/andrewkaufman/gaffer/languages","stargazers_url":"https://api.github.com/repos/andrewkaufman/gaffer/stargazers","contributors_url":"https://api.github.com/repos/andrewkaufman/gaffer/contributors","subscribers_url":"https://api.github.com/repos/andrewkaufman/gaffer/subscribers","subscription_url":"https://api.github.com/repos/andrewkaufman/gaffer/subscription","commits_url":"https://api.github.com/repos/andrewkaufman/gaffer/commits{/sha}","git_commits_url":"https://api.github.com/repos/andrewkaufman/gaffer/git/commits{/sha}","comments_url":"https://api.github.com/repos/andrewkaufman/gaffer/comments{/number}","issue_comment_url":"https://api.github.com/repos/andrewkaufman/gaffer/issues/comments{/number}","contents_url":"https://api.github.com/repos/andrewkaufman/gaffer/contents/{+path}","compare_url":"https://api.github.com/repos/andrewkaufman/gaffer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/andrewkaufman/gaffer/merges","archive_url":"https://api.github.com/repos/andrewkaufman/gaffer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/andrewkaufman/gaffer/downloads","issues_url":"https://api.github.com/repos/andrewkaufman/gaffer/issues{/number}","pulls_url":"https://api.github.com/repos/andrewkaufman/gaffer/pulls{/number}","milestones_url":"https://api.github.com/repos/andrewkaufman/gaffer/milestones{/number}","notifications_url":"https://api.github.com/repos/andrewkaufman/gaffer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/andrewkaufman/gaffer/labels{/name}","releases_url":"https://api.github.com/repos/andrewkaufman/gaffer/releases{/id}","deployments_url":"https://api.github.com/repos/andrewkaufman/gaffer/deployments","created_at":"2013-03-27T00:19:17Z","updated_at":"2018-11-13T18:25:21Z","pushed_at":"2018-12-07T23:09:37Z","git_url":"git://github.com/andrewkaufman/gaffer.git","ssh_url":"git@github.com:andrewkaufman/gaffer.git","clone_url":"https://github.com/andrewkaufman/gaffer.git","svn_url":"https://github.com/andrewkaufman/gaffer","homepage":"","size":36329,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GafferHQ:master","ref":"master","sha":"5c404fb56167f9d6aeb8ac3284fb0867d750c437","user":{"login":"GafferHQ","id":20556043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTU2MDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20556043?v=4","gravatar_id":"","url":"https://api.github.com/users/GafferHQ","html_url":"https://github.com/GafferHQ","followers_url":"https://api.github.com/users/GafferHQ/followers","following_url":"https://api.github.com/users/GafferHQ/following{/other_user}","gists_url":"https://api.github.com/users/GafferHQ/gists{/gist_id}","starred_url":"https://api.github.com/users/GafferHQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GafferHQ/subscriptions","organizations_url":"https://api.github.com/users/GafferHQ/orgs","repos_url":"https://api.github.com/users/GafferHQ/repos","events_url":"https://api.github.com/users/GafferHQ/events{/privacy}","received_events_url":"https://api.github.com/users/GafferHQ/received_events","type":"Organization","site_admin":false},"repo":{"id":9043124,"node_id":"MDEwOlJlcG9zaXRvcnk5MDQzMTI0","name":"gaffer","full_name":"GafferHQ/gaffer","private":false,"owner":{"login":"GafferHQ","id":20556043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTU2MDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20556043?v=4","gravatar_id":"","url":"https://api.github.com/users/GafferHQ","html_url":"https://github.com/GafferHQ","followers_url":"https://api.github.com/users/GafferHQ/followers","following_url":"https://api.github.com/users/GafferHQ/following{/other_user}","gists_url":"https://api.github.com/users/GafferHQ/gists{/gist_id}","starred_url":"https://api.github.com/users/GafferHQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GafferHQ/subscriptions","organizations_url":"https://api.github.com/users/GafferHQ/orgs","repos_url":"https://api.github.com/users/GafferHQ/repos","events_url":"https://api.github.com/users/GafferHQ/events{/privacy}","received_events_url":"https://api.github.com/users/GafferHQ/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/GafferHQ/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/GafferHQ/gaffer","forks_url":"https://api.github.com/repos/GafferHQ/gaffer/forks","keys_url":"https://api.github.com/repos/GafferHQ/gaffer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GafferHQ/gaffer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GafferHQ/gaffer/teams","hooks_url":"https://api.github.com/repos/GafferHQ/gaffer/hooks","issue_events_url":"https://api.github.com/repos/GafferHQ/gaffer/issues/events{/number}","events_url":"https://api.github.com/repos/GafferHQ/gaffer/events","assignees_url":"https://api.github.com/repos/GafferHQ/gaffer/assignees{/user}","branches_url":"https://api.github.com/repos/GafferHQ/gaffer/branches{/branch}","tags_url":"https://api.github.com/repos/GafferHQ/gaffer/tags","blobs_url":"https://api.github.com/repos/GafferHQ/gaffer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GafferHQ/gaffer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GafferHQ/gaffer/git/refs{/sha}","trees_url":"https://api.github.com/repos/GafferHQ/gaffer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GafferHQ/gaffer/statuses/{sha}","languages_url":"https://api.github.com/repos/GafferHQ/gaffer/languages","stargazers_url":"https://api.github.com/repos/GafferHQ/gaffer/stargazers","contributors_url":"https://api.github.com/repos/GafferHQ/gaffer/contributors","subscribers_url":"https://api.github.com/repos/GafferHQ/gaffer/subscribers","subscription_url":"https://api.github.com/repos/GafferHQ/gaffer/subscription","commits_url":"https://api.github.com/repos/GafferHQ/gaffer/commits{/sha}","git_commits_url":"https://api.github.com/repos/GafferHQ/gaffer/git/commits{/sha}","comments_url":"https://api.github.com/repos/GafferHQ/gaffer/comments{/number}","issue_comment_url":"https://api.github.com/repos/GafferHQ/gaffer/issues/comments{/number}","contents_url":"https://api.github.com/repos/GafferHQ/gaffer/contents/{+path}","compare_url":"https://api.github.com/repos/GafferHQ/gaffer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GafferHQ/gaffer/merges","archive_url":"https://api.github.com/repos/GafferHQ/gaffer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GafferHQ/gaffer/downloads","issues_url":"https://api.github.com/repos/GafferHQ/gaffer/issues{/number}","pulls_url":"https://api.github.com/repos/GafferHQ/gaffer/pulls{/number}","milestones_url":"https://api.github.com/repos/GafferHQ/gaffer/milestones{/number}","notifications_url":"https://api.github.com/repos/GafferHQ/gaffer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GafferHQ/gaffer/labels{/name}","releases_url":"https://api.github.com/repos/GafferHQ/gaffer/releases{/id}","deployments_url":"https://api.github.com/repos/GafferHQ/gaffer/deployments","created_at":"2013-03-27T00:04:53Z","updated_at":"2018-12-11T09:12:37Z","pushed_at":"2018-12-11T09:20:45Z","git_url":"git://github.com/GafferHQ/gaffer.git","ssh_url":"git@github.com:GafferHQ/gaffer.git","clone_url":"https://github.com/GafferHQ/gaffer.git","svn_url":"https://github.com/GafferHQ/gaffer","homepage":"http://www.gafferhq.org","size":37412,"stargazers_count":420,"watchers_count":420,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":128,"mirror_url":null,"archived":false,"open_issues_count":261,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":128,"open_issues":261,"watchers":420,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933"},"html":{"href":"https://github.com/GafferHQ/gaffer/pull/2933"},"issue":{"href":"https://api.github.com/repos/GafferHQ/gaffer/issues/2933"},"comments":{"href":"https://api.github.com/repos/GafferHQ/gaffer/issues/2933/comments"},"review_comments":{"href":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933/comments"},"review_comment":{"href":"https://api.github.com/repos/GafferHQ/gaffer/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GafferHQ/gaffer/pulls/2933/commits"},"statuses":{"href":"https://api.github.com/repos/GafferHQ/gaffer/statuses/e4d7fbe98f2ec4de16f83121afea74e117379520"}},"author_association":"MEMBER","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"johnhaddon","id":1133871,"node_id":"MDQ6VXNlcjExMzM4NzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1133871?v=4","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},"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"johnhaddon"}}