Skip to content

Low-level transport objects should not be public @property-s #3090

Closed
@dhermes

Description

The majority (11 of 12) low-level API @property-s that we use are surfaced publicly on the client. This is not intended, right?

$ git grep -B 1 -n 'def .*api(self' -- '*/google/*'
error_reporting/google/cloud/error_reporting/client.py-146-    @property
error_reporting/google/cloud/error_reporting/client.py:147:    def report_errors_api(self):
--
logging/google/cloud/logging/client.py-110-    @property
logging/google/cloud/logging/client.py:111:    def logging_api(self):
--
logging/google/cloud/logging/client.py-125-    @property
logging/google/cloud/logging/client.py:126:    def sinks_api(self):
--
logging/google/cloud/logging/client.py-139-    @property
logging/google/cloud/logging/client.py:140:    def metrics_api(self):
--
pubsub/google/cloud/pubsub/client.py-92-    @property
pubsub/google/cloud/pubsub/client.py:93:    def publisher_api(self):
--
pubsub/google/cloud/pubsub/client.py-108-    @property
pubsub/google/cloud/pubsub/client.py:109:    def subscriber_api(self):
--
pubsub/google/cloud/pubsub/client.py-124-    @property
pubsub/google/cloud/pubsub/client.py:125:    def iam_policy_api(self):
--
spanner/google/cloud/spanner/client.py-152-    @property
spanner/google/cloud/spanner/client.py:153:    def instance_admin_api(self):
--
spanner/google/cloud/spanner/client.py-162-    @property
spanner/google/cloud/spanner/client.py:163:    def database_admin_api(self):
--
spanner/google/cloud/spanner/database.py-179-    @property
spanner/google/cloud/spanner/database.py:180:    def spanner_api(self):
--
speech/google/cloud/speech/client.py-103-    @property
speech/google/cloud/speech/client.py:104:    def speech_api(self):
--
vision/google/cloud/vision/client.py-99-    @property
vision/google/cloud/vision/client.py:100:    def _vision_api(self):
$
$ git log -1 --pretty=%H  # Current commit checked out
1b482f06fa3a36e3cdeedf5b6810048ed67c727a

Other than vision, the non-GAPIC APIs that happen to use gRPC do not surface the properties publicly:

datastore/google/cloud/datastore/_http.py:252:            self._datastore_api = _DatastoreAPIOverGRPC(self, secure=secure)
datastore/google/cloud/datastore/_http.py:254:            self._datastore_api = _DatastoreAPIOverHttp(self)
bigtable/google/cloud/bigtable/client.py:284:    def _instance_stub(self):
bigtable/google/cloud/bigtable/client.py:298:    def _operations_stub(self):
bigtable/google/cloud/bigtable/client.py:312:    def _table_stub(self):

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions