{"action":"opened","number":42,"pull_request":{"url":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42","id":198565954,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4NTY1OTU0","html_url":"https://github.com/Squarespace/pgbedrock/pull/42","diff_url":"https://github.com/Squarespace/pgbedrock/pull/42.diff","patch_url":"https://github.com/Squarespace/pgbedrock/pull/42.patch","issue_url":"https://api.github.com/repos/Squarespace/pgbedrock/issues/42","number":42,"state":"open","locked":false,"title":"Zcm/class for object quoting","user":{"login":"zcmarine","id":20845885,"node_id":"MDQ6VXNlcjIwODQ1ODg1","avatar_url":"https://avatars1.githubusercontent.com/u/20845885?v=4","gravatar_id":"","url":"https://api.github.com/users/zcmarine","html_url":"https://github.com/zcmarine","followers_url":"https://api.github.com/users/zcmarine/followers","following_url":"https://api.github.com/users/zcmarine/following{/other_user}","gists_url":"https://api.github.com/users/zcmarine/gists{/gist_id}","starred_url":"https://api.github.com/users/zcmarine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcmarine/subscriptions","organizations_url":"https://api.github.com/users/zcmarine/orgs","repos_url":"https://api.github.com/users/zcmarine/repos","events_url":"https://api.github.com/users/zcmarine/events{/privacy}","received_events_url":"https://api.github.com/users/zcmarine/received_events","type":"User","site_admin":false},"body":"This is the worst PR I've ever made. To try to justify this ugly mess so I don't feel so lousy: the choice was between one huge, incomprehensible PR (this) and 48 tiny PRs that were comprehensible and would leave the repo in a good place. My reasons for going this route were:\r\n\r\n- This PR represents the \"atomic\" change we're looking for: moving from not using ObjectName instances to using them everywhere. Each of the 48 intermediate commits would all leave the repo in a weird half-and-half state, though admittedly the tests pass at each commit.\r\n- 48 PRs would have resulted in a LOT of back-and-forth and a ton of time. Given that I leave for several months of vacation in a few days, I was pushing for speed over proper process.\r\n- Everything in this PR is changing plumbing. Basically, where we were using strings before use an instance of a class. While on the one hand it may have been a way to get people to know the plumbing of pgbedrock, it's also a way to burn a lot of goodwill and kill people's interest in reviewing PRs. Rather than having people review plumbing, I'd prefer to talk about features and non-trivial changes.\r\n- Although it's possible that I may have screwed something up with my changes to the plumbing, we have 96% test coverage and I've tested this against Squarespace's relatively complex use case, so I feel pretty good about the fact that the changes I made didn't break anything. And if they do (which would suck), we have prior docker images and pypi versions available.\r\n\r\nWith the above given as an attempt to exonerate myself from guilt (which I still feel), I think it'd be useful to discuss this PR in person and see if there's anything else that would be useful to do for due diligence. Actually reviewing the medley of changes seems like a bad use of time.","created_at":"2018-07-02T03:42:37Z","updated_at":"2018-07-02T03:42:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42/commits","review_comments_url":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42/comments","review_comment_url":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Squarespace/pgbedrock/issues/42/comments","statuses_url":"https://api.github.com/repos/Squarespace/pgbedrock/statuses/d2a10af49be12cbc95fbe99c60f1921069792e94","head":{"label":"zcmarine:zcm/class_for_object_quoting","ref":"zcm/class_for_object_quoting","sha":"d2a10af49be12cbc95fbe99c60f1921069792e94","user":{"login":"zcmarine","id":20845885,"node_id":"MDQ6VXNlcjIwODQ1ODg1","avatar_url":"https://avatars1.githubusercontent.com/u/20845885?v=4","gravatar_id":"","url":"https://api.github.com/users/zcmarine","html_url":"https://github.com/zcmarine","followers_url":"https://api.github.com/users/zcmarine/followers","following_url":"https://api.github.com/users/zcmarine/following{/other_user}","gists_url":"https://api.github.com/users/zcmarine/gists{/gist_id}","starred_url":"https://api.github.com/users/zcmarine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcmarine/subscriptions","organizations_url":"https://api.github.com/users/zcmarine/orgs","repos_url":"https://api.github.com/users/zcmarine/repos","events_url":"https://api.github.com/users/zcmarine/events{/privacy}","received_events_url":"https://api.github.com/users/zcmarine/received_events","type":"User","site_admin":false},"repo":{"id":136758225,"node_id":"MDEwOlJlcG9zaXRvcnkxMzY3NTgyMjU=","name":"pgbedrock","full_name":"zcmarine/pgbedrock","owner":{"login":"zcmarine","id":20845885,"node_id":"MDQ6VXNlcjIwODQ1ODg1","avatar_url":"https://avatars1.githubusercontent.com/u/20845885?v=4","gravatar_id":"","url":"https://api.github.com/users/zcmarine","html_url":"https://github.com/zcmarine","followers_url":"https://api.github.com/users/zcmarine/followers","following_url":"https://api.github.com/users/zcmarine/following{/other_user}","gists_url":"https://api.github.com/users/zcmarine/gists{/gist_id}","starred_url":"https://api.github.com/users/zcmarine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcmarine/subscriptions","organizations_url":"https://api.github.com/users/zcmarine/orgs","repos_url":"https://api.github.com/users/zcmarine/repos","events_url":"https://api.github.com/users/zcmarine/events{/privacy}","received_events_url":"https://api.github.com/users/zcmarine/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zcmarine/pgbedrock","description":"Manage a Postgres cluster's roles, role memberships, schema ownership, and privileges","fork":true,"url":"https://api.github.com/repos/zcmarine/pgbedrock","forks_url":"https://api.github.com/repos/zcmarine/pgbedrock/forks","keys_url":"https://api.github.com/repos/zcmarine/pgbedrock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zcmarine/pgbedrock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zcmarine/pgbedrock/teams","hooks_url":"https://api.github.com/repos/zcmarine/pgbedrock/hooks","issue_events_url":"https://api.github.com/repos/zcmarine/pgbedrock/issues/events{/number}","events_url":"https://api.github.com/repos/zcmarine/pgbedrock/events","assignees_url":"https://api.github.com/repos/zcmarine/pgbedrock/assignees{/user}","branches_url":"https://api.github.com/repos/zcmarine/pgbedrock/branches{/branch}","tags_url":"https://api.github.com/repos/zcmarine/pgbedrock/tags","blobs_url":"https://api.github.com/repos/zcmarine/pgbedrock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zcmarine/pgbedrock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zcmarine/pgbedrock/git/refs{/sha}","trees_url":"https://api.github.com/repos/zcmarine/pgbedrock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zcmarine/pgbedrock/statuses/{sha}","languages_url":"https://api.github.com/repos/zcmarine/pgbedrock/languages","stargazers_url":"https://api.github.com/repos/zcmarine/pgbedrock/stargazers","contributors_url":"https://api.github.com/repos/zcmarine/pgbedrock/contributors","subscribers_url":"https://api.github.com/repos/zcmarine/pgbedrock/subscribers","subscription_url":"https://api.github.com/repos/zcmarine/pgbedrock/subscription","commits_url":"https://api.github.com/repos/zcmarine/pgbedrock/commits{/sha}","git_commits_url":"https://api.github.com/repos/zcmarine/pgbedrock/git/commits{/sha}","comments_url":"https://api.github.com/repos/zcmarine/pgbedrock/comments{/number}","issue_comment_url":"https://api.github.com/repos/zcmarine/pgbedrock/issues/comments{/number}","contents_url":"https://api.github.com/repos/zcmarine/pgbedrock/contents/{+path}","compare_url":"https://api.github.com/repos/zcmarine/pgbedrock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zcmarine/pgbedrock/merges","archive_url":"https://api.github.com/repos/zcmarine/pgbedrock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zcmarine/pgbedrock/downloads","issues_url":"https://api.github.com/repos/zcmarine/pgbedrock/issues{/number}","pulls_url":"https://api.github.com/repos/zcmarine/pgbedrock/pulls{/number}","milestones_url":"https://api.github.com/repos/zcmarine/pgbedrock/milestones{/number}","notifications_url":"https://api.github.com/repos/zcmarine/pgbedrock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zcmarine/pgbedrock/labels{/name}","releases_url":"https://api.github.com/repos/zcmarine/pgbedrock/releases{/id}","deployments_url":"https://api.github.com/repos/zcmarine/pgbedrock/deployments","created_at":"2018-06-09T21:08:34Z","updated_at":"2018-06-09T21:08:36Z","pushed_at":"2018-07-02T03:27:56Z","git_url":"git://github.com/zcmarine/pgbedrock.git","ssh_url":"git@github.com:zcmarine/pgbedrock.git","clone_url":"https://github.com/zcmarine/pgbedrock.git","svn_url":"https://github.com/zcmarine/pgbedrock","homepage":"https://pgbedrock.readthedocs.io/en/latest/","size":290,"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":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Squarespace:master","ref":"master","sha":"327a6bde0d84b0354392618f68d961196f131262","user":{"login":"Squarespace","id":722929,"node_id":"MDEyOk9yZ2FuaXphdGlvbjcyMjkyOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/722929?v=4","gravatar_id":"","url":"https://api.github.com/users/Squarespace","html_url":"https://github.com/Squarespace","followers_url":"https://api.github.com/users/Squarespace/followers","following_url":"https://api.github.com/users/Squarespace/following{/other_user}","gists_url":"https://api.github.com/users/Squarespace/gists{/gist_id}","starred_url":"https://api.github.com/users/Squarespace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Squarespace/subscriptions","organizations_url":"https://api.github.com/users/Squarespace/orgs","repos_url":"https://api.github.com/users/Squarespace/repos","events_url":"https://api.github.com/users/Squarespace/events{/privacy}","received_events_url":"https://api.github.com/users/Squarespace/received_events","type":"Organization","site_admin":false},"repo":{"id":119732865,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk3MzI4NjU=","name":"pgbedrock","full_name":"Squarespace/pgbedrock","owner":{"login":"Squarespace","id":722929,"node_id":"MDEyOk9yZ2FuaXphdGlvbjcyMjkyOQ==","avatar_url":"https://avatars0.githubusercontent.com/u/722929?v=4","gravatar_id":"","url":"https://api.github.com/users/Squarespace","html_url":"https://github.com/Squarespace","followers_url":"https://api.github.com/users/Squarespace/followers","following_url":"https://api.github.com/users/Squarespace/following{/other_user}","gists_url":"https://api.github.com/users/Squarespace/gists{/gist_id}","starred_url":"https://api.github.com/users/Squarespace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Squarespace/subscriptions","organizations_url":"https://api.github.com/users/Squarespace/orgs","repos_url":"https://api.github.com/users/Squarespace/repos","events_url":"https://api.github.com/users/Squarespace/events{/privacy}","received_events_url":"https://api.github.com/users/Squarespace/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Squarespace/pgbedrock","description":"Manage a Postgres cluster's roles, role memberships, schema ownership, and privileges","fork":false,"url":"https://api.github.com/repos/Squarespace/pgbedrock","forks_url":"https://api.github.com/repos/Squarespace/pgbedrock/forks","keys_url":"https://api.github.com/repos/Squarespace/pgbedrock/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Squarespace/pgbedrock/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Squarespace/pgbedrock/teams","hooks_url":"https://api.github.com/repos/Squarespace/pgbedrock/hooks","issue_events_url":"https://api.github.com/repos/Squarespace/pgbedrock/issues/events{/number}","events_url":"https://api.github.com/repos/Squarespace/pgbedrock/events","assignees_url":"https://api.github.com/repos/Squarespace/pgbedrock/assignees{/user}","branches_url":"https://api.github.com/repos/Squarespace/pgbedrock/branches{/branch}","tags_url":"https://api.github.com/repos/Squarespace/pgbedrock/tags","blobs_url":"https://api.github.com/repos/Squarespace/pgbedrock/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Squarespace/pgbedrock/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Squarespace/pgbedrock/git/refs{/sha}","trees_url":"https://api.github.com/repos/Squarespace/pgbedrock/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Squarespace/pgbedrock/statuses/{sha}","languages_url":"https://api.github.com/repos/Squarespace/pgbedrock/languages","stargazers_url":"https://api.github.com/repos/Squarespace/pgbedrock/stargazers","contributors_url":"https://api.github.com/repos/Squarespace/pgbedrock/contributors","subscribers_url":"https://api.github.com/repos/Squarespace/pgbedrock/subscribers","subscription_url":"https://api.github.com/repos/Squarespace/pgbedrock/subscription","commits_url":"https://api.github.com/repos/Squarespace/pgbedrock/commits{/sha}","git_commits_url":"https://api.github.com/repos/Squarespace/pgbedrock/git/commits{/sha}","comments_url":"https://api.github.com/repos/Squarespace/pgbedrock/comments{/number}","issue_comment_url":"https://api.github.com/repos/Squarespace/pgbedrock/issues/comments{/number}","contents_url":"https://api.github.com/repos/Squarespace/pgbedrock/contents/{+path}","compare_url":"https://api.github.com/repos/Squarespace/pgbedrock/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Squarespace/pgbedrock/merges","archive_url":"https://api.github.com/repos/Squarespace/pgbedrock/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Squarespace/pgbedrock/downloads","issues_url":"https://api.github.com/repos/Squarespace/pgbedrock/issues{/number}","pulls_url":"https://api.github.com/repos/Squarespace/pgbedrock/pulls{/number}","milestones_url":"https://api.github.com/repos/Squarespace/pgbedrock/milestones{/number}","notifications_url":"https://api.github.com/repos/Squarespace/pgbedrock/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Squarespace/pgbedrock/labels{/name}","releases_url":"https://api.github.com/repos/Squarespace/pgbedrock/releases{/id}","deployments_url":"https://api.github.com/repos/Squarespace/pgbedrock/deployments","created_at":"2018-01-31T19:27:25Z","updated_at":"2018-06-29T19:26:39Z","pushed_at":"2018-07-01T17:34:42Z","git_url":"git://github.com/Squarespace/pgbedrock.git","ssh_url":"git@github.com:Squarespace/pgbedrock.git","clone_url":"https://github.com/Squarespace/pgbedrock.git","svn_url":"https://github.com/Squarespace/pgbedrock","homepage":"https://pgbedrock.readthedocs.io/en/latest/","size":160,"stargazers_count":151,"watchers_count":151,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"archived":false,"open_issues_count":15,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":9,"open_issues":15,"watchers":151,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42"},"html":{"href":"https://github.com/Squarespace/pgbedrock/pull/42"},"issue":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/issues/42"},"comments":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/issues/42/comments"},"review_comments":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42/comments"},"review_comment":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/pulls/42/commits"},"statuses":{"href":"https://api.github.com/repos/Squarespace/pgbedrock/statuses/d2a10af49be12cbc95fbe99c60f1921069792e94"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":49,"additions":1193,"deletions":579,"changed_files":12}}
{"actor":{"display_login":"zcmarine"}}