{"action":"closed","number":9,"pull_request":{"url":"https://api.github.com/repos/karissa/datpy/pulls/9","id":41959697,"html_url":"https://github.com/karissa/datpy/pull/9","diff_url":"https://github.com/karissa/datpy/pull/9.diff","patch_url":"https://github.com/karissa/datpy/pull/9.patch","issue_url":"https://api.github.com/repos/karissa/datpy/issues/9","number":9,"state":"closed","locked":false,"title":"Python3 Support (fixes #4)","user":{"login":"joehand","id":684965,"avatar_url":"https://avatars.githubusercontent.com/u/684965?v=3","gravatar_id":"","url":"https://api.github.com/users/joehand","html_url":"https://github.com/joehand","followers_url":"https://api.github.com/users/joehand/followers","following_url":"https://api.github.com/users/joehand/following{/other_user}","gists_url":"https://api.github.com/users/joehand/gists{/gist_id}","starred_url":"https://api.github.com/users/joehand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joehand/subscriptions","organizations_url":"https://api.github.com/users/joehand/orgs","repos_url":"https://api.github.com/users/joehand/repos","events_url":"https://api.github.com/users/joehand/events{/privacy}","received_events_url":"https://api.github.com/users/joehand/received_events","type":"User","site_admin":false},"body":"Fixes errors in Python 3 (issue #4). The main issue is `stdout` and `stdin` are byte strings, not regular strings. We need to encode before passing to stdin and decode after getting data from stdout. \r\n\r\nAll tests pass in Python 2.\r\n\r\n***Pickle Test Failing in Python 3***: Unfortunately, things are a bit more complicated w/ Python 3 and reading the pickle file. We can't decode the stdout byte string because it is a pickle file, so we get a `UnicodeDecodeError`. To fix that, we'd have to add this into `stream_out`:\r\n```python\r\ntry:\r\n  line = line.decode()\r\nexcept UnicodeDecodeError:\r\n  line = pickle.loads(line)\r\n  parse = True # avoid creating string later, since we want object\r\n```\r\nOr potentially create a separate read function for pickle files. Neither of these seem like good solutions though. So, not quite sure what to do there and open to suggestions.","created_at":"2015-08-08T20:11:34Z","updated_at":"2015-08-12T09:20:35Z","closed_at":"2015-08-12T09:20:35Z","merged_at":null,"merge_commit_sha":"2e0e7199144b32917f41c8207c3fe0d0a3e6a0fb","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/karissa/datpy/pulls/9/commits","review_comments_url":"https://api.github.com/repos/karissa/datpy/pulls/9/comments","review_comment_url":"https://api.github.com/repos/karissa/datpy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/karissa/datpy/issues/9/comments","statuses_url":"https://api.github.com/repos/karissa/datpy/statuses/2c7826945ae8a9e3d8ef45ab4d4b838b66a1815e","head":{"label":"joehand:python3","ref":"python3","sha":"2c7826945ae8a9e3d8ef45ab4d4b838b66a1815e","user":{"login":"joehand","id":684965,"avatar_url":"https://avatars.githubusercontent.com/u/684965?v=3","gravatar_id":"","url":"https://api.github.com/users/joehand","html_url":"https://github.com/joehand","followers_url":"https://api.github.com/users/joehand/followers","following_url":"https://api.github.com/users/joehand/following{/other_user}","gists_url":"https://api.github.com/users/joehand/gists{/gist_id}","starred_url":"https://api.github.com/users/joehand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joehand/subscriptions","organizations_url":"https://api.github.com/users/joehand/orgs","repos_url":"https://api.github.com/users/joehand/repos","events_url":"https://api.github.com/users/joehand/events{/privacy}","received_events_url":"https://api.github.com/users/joehand/received_events","type":"User","site_admin":false},"repo":{"id":39535367,"name":"datpy","full_name":"joehand/datpy","owner":{"login":"joehand","id":684965,"avatar_url":"https://avatars.githubusercontent.com/u/684965?v=3","gravatar_id":"","url":"https://api.github.com/users/joehand","html_url":"https://github.com/joehand","followers_url":"https://api.github.com/users/joehand/followers","following_url":"https://api.github.com/users/joehand/following{/other_user}","gists_url":"https://api.github.com/users/joehand/gists{/gist_id}","starred_url":"https://api.github.com/users/joehand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joehand/subscriptions","organizations_url":"https://api.github.com/users/joehand/orgs","repos_url":"https://api.github.com/users/joehand/repos","events_url":"https://api.github.com/users/joehand/events{/privacy}","received_events_url":"https://api.github.com/users/joehand/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/joehand/datpy","description":"Python dough for making Dat-flavored data science pies","fork":true,"url":"https://api.github.com/repos/joehand/datpy","forks_url":"https://api.github.com/repos/joehand/datpy/forks","keys_url":"https://api.github.com/repos/joehand/datpy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/joehand/datpy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/joehand/datpy/teams","hooks_url":"https://api.github.com/repos/joehand/datpy/hooks","issue_events_url":"https://api.github.com/repos/joehand/datpy/issues/events{/number}","events_url":"https://api.github.com/repos/joehand/datpy/events","assignees_url":"https://api.github.com/repos/joehand/datpy/assignees{/user}","branches_url":"https://api.github.com/repos/joehand/datpy/branches{/branch}","tags_url":"https://api.github.com/repos/joehand/datpy/tags","blobs_url":"https://api.github.com/repos/joehand/datpy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/joehand/datpy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/joehand/datpy/git/refs{/sha}","trees_url":"https://api.github.com/repos/joehand/datpy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/joehand/datpy/statuses/{sha}","languages_url":"https://api.github.com/repos/joehand/datpy/languages","stargazers_url":"https://api.github.com/repos/joehand/datpy/stargazers","contributors_url":"https://api.github.com/repos/joehand/datpy/contributors","subscribers_url":"https://api.github.com/repos/joehand/datpy/subscribers","subscription_url":"https://api.github.com/repos/joehand/datpy/subscription","commits_url":"https://api.github.com/repos/joehand/datpy/commits{/sha}","git_commits_url":"https://api.github.com/repos/joehand/datpy/git/commits{/sha}","comments_url":"https://api.github.com/repos/joehand/datpy/comments{/number}","issue_comment_url":"https://api.github.com/repos/joehand/datpy/issues/comments{/number}","contents_url":"https://api.github.com/repos/joehand/datpy/contents/{+path}","compare_url":"https://api.github.com/repos/joehand/datpy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/joehand/datpy/merges","archive_url":"https://api.github.com/repos/joehand/datpy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/joehand/datpy/downloads","issues_url":"https://api.github.com/repos/joehand/datpy/issues{/number}","pulls_url":"https://api.github.com/repos/joehand/datpy/pulls{/number}","milestones_url":"https://api.github.com/repos/joehand/datpy/milestones{/number}","notifications_url":"https://api.github.com/repos/joehand/datpy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/joehand/datpy/labels{/name}","releases_url":"https://api.github.com/repos/joehand/datpy/releases{/id}","created_at":"2015-07-22T23:36:08Z","updated_at":"2015-07-22T23:36:08Z","pushed_at":"2015-08-08T19:59:30Z","git_url":"git://github.com/joehand/datpy.git","ssh_url":"git@github.com:joehand/datpy.git","clone_url":"https://github.com/joehand/datpy.git","svn_url":"https://github.com/joehand/datpy","homepage":"http://dat-data.com","size":234,"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":"karissa:master","ref":"master","sha":"0e3cf38db4d76d5b7ab79bb873b01e2d222a99f8","user":{"login":"karissa","id":633012,"avatar_url":"https://avatars.githubusercontent.com/u/633012?v=3","gravatar_id":"","url":"https://api.github.com/users/karissa","html_url":"https://github.com/karissa","followers_url":"https://api.github.com/users/karissa/followers","following_url":"https://api.github.com/users/karissa/following{/other_user}","gists_url":"https://api.github.com/users/karissa/gists{/gist_id}","starred_url":"https://api.github.com/users/karissa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karissa/subscriptions","organizations_url":"https://api.github.com/users/karissa/orgs","repos_url":"https://api.github.com/users/karissa/repos","events_url":"https://api.github.com/users/karissa/events{/privacy}","received_events_url":"https://api.github.com/users/karissa/received_events","type":"User","site_admin":false},"repo":{"id":32905737,"name":"datpy","full_name":"karissa/datpy","owner":{"login":"karissa","id":633012,"avatar_url":"https://avatars.githubusercontent.com/u/633012?v=3","gravatar_id":"","url":"https://api.github.com/users/karissa","html_url":"https://github.com/karissa","followers_url":"https://api.github.com/users/karissa/followers","following_url":"https://api.github.com/users/karissa/following{/other_user}","gists_url":"https://api.github.com/users/karissa/gists{/gist_id}","starred_url":"https://api.github.com/users/karissa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karissa/subscriptions","organizations_url":"https://api.github.com/users/karissa/orgs","repos_url":"https://api.github.com/users/karissa/repos","events_url":"https://api.github.com/users/karissa/events{/privacy}","received_events_url":"https://api.github.com/users/karissa/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/karissa/datpy","description":"Python dough for making Dat-flavored data science pies","fork":false,"url":"https://api.github.com/repos/karissa/datpy","forks_url":"https://api.github.com/repos/karissa/datpy/forks","keys_url":"https://api.github.com/repos/karissa/datpy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/karissa/datpy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/karissa/datpy/teams","hooks_url":"https://api.github.com/repos/karissa/datpy/hooks","issue_events_url":"https://api.github.com/repos/karissa/datpy/issues/events{/number}","events_url":"https://api.github.com/repos/karissa/datpy/events","assignees_url":"https://api.github.com/repos/karissa/datpy/assignees{/user}","branches_url":"https://api.github.com/repos/karissa/datpy/branches{/branch}","tags_url":"https://api.github.com/repos/karissa/datpy/tags","blobs_url":"https://api.github.com/repos/karissa/datpy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/karissa/datpy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/karissa/datpy/git/refs{/sha}","trees_url":"https://api.github.com/repos/karissa/datpy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/karissa/datpy/statuses/{sha}","languages_url":"https://api.github.com/repos/karissa/datpy/languages","stargazers_url":"https://api.github.com/repos/karissa/datpy/stargazers","contributors_url":"https://api.github.com/repos/karissa/datpy/contributors","subscribers_url":"https://api.github.com/repos/karissa/datpy/subscribers","subscription_url":"https://api.github.com/repos/karissa/datpy/subscription","commits_url":"https://api.github.com/repos/karissa/datpy/commits{/sha}","git_commits_url":"https://api.github.com/repos/karissa/datpy/git/commits{/sha}","comments_url":"https://api.github.com/repos/karissa/datpy/comments{/number}","issue_comment_url":"https://api.github.com/repos/karissa/datpy/issues/comments{/number}","contents_url":"https://api.github.com/repos/karissa/datpy/contents/{+path}","compare_url":"https://api.github.com/repos/karissa/datpy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/karissa/datpy/merges","archive_url":"https://api.github.com/repos/karissa/datpy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/karissa/datpy/downloads","issues_url":"https://api.github.com/repos/karissa/datpy/issues{/number}","pulls_url":"https://api.github.com/repos/karissa/datpy/pulls{/number}","milestones_url":"https://api.github.com/repos/karissa/datpy/milestones{/number}","notifications_url":"https://api.github.com/repos/karissa/datpy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/karissa/datpy/labels{/name}","releases_url":"https://api.github.com/repos/karissa/datpy/releases{/id}","created_at":"2015-03-26T03:34:18Z","updated_at":"2015-08-12T08:27:01Z","pushed_at":"2015-08-12T09:19:56Z","git_url":"git://github.com/karissa/datpy.git","ssh_url":"git@github.com:karissa/datpy.git","clone_url":"https://github.com/karissa/datpy.git","svn_url":"https://github.com/karissa/datpy","homepage":"http://dat-data.com","size":358,"stargazers_count":15,"watchers_count":15,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":4,"forks":2,"open_issues":4,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/karissa/datpy/pulls/9"},"html":{"href":"https://github.com/karissa/datpy/pull/9"},"issue":{"href":"https://api.github.com/repos/karissa/datpy/issues/9"},"comments":{"href":"https://api.github.com/repos/karissa/datpy/issues/9/comments"},"review_comments":{"href":"https://api.github.com/repos/karissa/datpy/pulls/9/comments"},"review_comment":{"href":"https://api.github.com/repos/karissa/datpy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/karissa/datpy/pulls/9/commits"},"statuses":{"href":"https://api.github.com/repos/karissa/datpy/statuses/2c7826945ae8a9e3d8ef45ab4d4b838b66a1815e"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":2,"review_comments":0,"commits":4,"additions":25,"deletions":15,"changed_files":2}}