{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/1536","repository_url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/1536/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/1536/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/1536/events","html_url":"https://github.com/GoogleCloudPlatform/gcloud-python/pull/1536","id":136504631,"number":1536,"title":"Adding remaining HappyBase table helpers.","user":{"login":"dhermes","id":520669,"avatar_url":"https://avatars.githubusercontent.com/u/520669?v=3","gravatar_id":"","url":"https://api.github.com/users/dhermes","html_url":"https://github.com/dhermes","followers_url":"https://api.github.com/users/dhermes/followers","following_url":"https://api.github.com/users/dhermes/following{/other_user}","gists_url":"https://api.github.com/users/dhermes/gists{/gist_id}","starred_url":"https://api.github.com/users/dhermes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dhermes/subscriptions","organizations_url":"https://api.github.com/users/dhermes/orgs","repos_url":"https://api.github.com/users/dhermes/repos","events_url":"https://api.github.com/users/dhermes/events{/privacy}","received_events_url":"https://api.github.com/users/dhermes/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/labels/bigtable","name":"bigtable","color":"0052cc"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/labels/cla:%20yes","name":"cla: yes","color":"009800"}],"state":"closed","locked":false,"assignee":{"login":"jonparrott","id":250995,"avatar_url":"https://avatars.githubusercontent.com/u/250995?v=3","gravatar_id":"","url":"https://api.github.com/users/jonparrott","html_url":"https://github.com/jonparrott","followers_url":"https://api.github.com/users/jonparrott/followers","following_url":"https://api.github.com/users/jonparrott/following{/other_user}","gists_url":"https://api.github.com/users/jonparrott/gists{/gist_id}","starred_url":"https://api.github.com/users/jonparrott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonparrott/subscriptions","organizations_url":"https://api.github.com/users/jonparrott/orgs","repos_url":"https://api.github.com/users/jonparrott/repos","events_url":"https://api.github.com/users/jonparrott/events{/privacy}","received_events_url":"https://api.github.com/users/jonparrott/received_events","type":"User","site_admin":false},"milestone":null,"comments":3,"created_at":"2016-02-25T20:38:57Z","updated_at":"2016-02-25T23:26:10Z","closed_at":"2016-02-25T23:21:44Z","pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/pulls/1536","html_url":"https://github.com/GoogleCloudPlatform/gcloud-python/pull/1536","diff_url":"https://github.com/GoogleCloudPlatform/gcloud-python/pull/1536.diff","patch_url":"https://github.com/GoogleCloudPlatform/gcloud-python/pull/1536.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/comments/189033194","html_url":"https://github.com/GoogleCloudPlatform/gcloud-python/pull/1536#issuecomment-189033194","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/gcloud-python/issues/1536","id":189033194,"user":{"login":"jonparrott","id":250995,"avatar_url":"https://avatars.githubusercontent.com/u/250995?v=3","gravatar_id":"","url":"https://api.github.com/users/jonparrott","html_url":"https://github.com/jonparrott","followers_url":"https://api.github.com/users/jonparrott/followers","following_url":"https://api.github.com/users/jonparrott/following{/other_user}","gists_url":"https://api.github.com/users/jonparrott/gists{/gist_id}","starred_url":"https://api.github.com/users/jonparrott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonparrott/subscriptions","organizations_url":"https://api.github.com/users/jonparrott/orgs","repos_url":"https://api.github.com/users/jonparrott/repos","events_url":"https://api.github.com/users/jonparrott/events{/privacy}","received_events_url":"https://api.github.com/users/jonparrott/received_events","type":"User","site_admin":false},"created_at":"2016-02-25T23:26:10Z","updated_at":"2016-02-25T23:26:10Z","body":"In general it's just a question of where you draw the \"API boundary\" - at the module level or at the package level. If you draw it at the package level, then what we're doing now is fine. If you draw it at the module level, then importing private members from other modules is a no-no, because you're overstepping the boundary. IMO, if a module's private function is useful outside of that module it should either be public or moved into a shared dependency.\r\n\r\n/opinion /rant"}}