From 8df859677eef8fe48bd25be22aad235027bfcbea Mon Sep 17 00:00:00 2001 From: Danny Hermes Date: Thu, 8 Jan 2015 16:25:39 -0800 Subject: [PATCH] Adding umbrella datastore.set_defaults(). This will be the most common auth / setup path for typical users. --- README.rst | 3 +- .../_components/datastore-getting-started.rst | 3 +- docs/index.rst | 3 +- gcloud/datastore/__init__.py | 23 ++++++++++++-- gcloud/datastore/connection.py | 5 ++- gcloud/datastore/demo/__init__.py | 3 +- gcloud/datastore/test___init__.py | 31 +++++++++++++++++++ gcloud/datastore/transaction.py | 3 +- regression/clear_datastore.py | 3 +- regression/datastore.py | 3 +- regression/populate_datastore.py | 3 +- 11 files changed, 62 insertions(+), 21 deletions(-) diff --git a/README.rst b/README.rst index cbef6a8be88b..1d0d6a564369 100644 --- a/README.rst +++ b/README.rst @@ -65,8 +65,7 @@ with the Cloud Datastore using this Client Library. .. code:: python from gcloud import datastore - datastore.set_default_connection() - datastore.set_default_dataset_id() + datastore.set_defaults() # Then do other things... from gcloud.datastore.entity import Entity from gcloud.datastore.key import Key diff --git a/docs/_components/datastore-getting-started.rst b/docs/_components/datastore-getting-started.rst index 68e9da1abcca..a20aa3a84781 100644 --- a/docs/_components/datastore-getting-started.rst +++ b/docs/_components/datastore-getting-started.rst @@ -38,8 +38,7 @@ Add some data to your dataset Open a Python console and... >>> from gcloud import datastore - >>> datastore.set_default_connection() - >>> datastore.set_default_dataset_id('') + >>> datastore.set_defaults() >>> from gcloud.datastore.query import Query >>> list(Query(kind='Person').fetch()) [] diff --git a/docs/index.rst b/docs/index.rst index fa65bc41e4e3..0c85bc31093d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -29,8 +29,7 @@ Cloud Datastore .. code-block:: python from gcloud import datastore - datastore.set_default_connection() - datastore.set_default_dataset_id('') + datastore.set_defaults() from gcloud.datastore.entity import Entity from gcloud.datastore.key import Key diff --git a/gcloud/datastore/__init__.py b/gcloud/datastore/__init__.py index 3f32da37ed64..44948b1a6ea6 100644 --- a/gcloud/datastore/__init__.py +++ b/gcloud/datastore/__init__.py @@ -21,8 +21,7 @@ >>> from gcloud.datastore.key import Key >>> from gcloud.datastore.query import Query ->>> datastore.set_default_connection() ->>> datastore.set_default_dataset_id() +>>> datastore.set_defaults() >>> key = Key('EntityKind', 1234) >>> entity = Entity(key) @@ -95,6 +94,26 @@ def set_default_connection(connection=None): _implicit_environ.CONNECTION = connection +def set_defaults(dataset_id=None, connection=None): + """Set defaults either explicitly or implicitly as fall-back. + + Uses the arguments to call the individual default methods + - set_default_dataset_id + - set_default_connection + + In the future we will likely enable methods like + - set_default_namespace + + :type dataset_id: string + :param dataset_id: Optional. The dataset ID to use as default. + + :type connection: :class:`gcloud.datastore.connection.Connection` + :param connection: A connection provided to be the default. + """ + set_default_dataset_id(dataset_id=dataset_id) + set_default_connection(connection=connection) + + def get_connection(): """Shortcut method to establish a connection to the Cloud Datastore. diff --git a/gcloud/datastore/connection.py b/gcloud/datastore/connection.py index 672ebefe94eb..f7478abbc3c2 100644 --- a/gcloud/datastore/connection.py +++ b/gcloud/datastore/connection.py @@ -170,7 +170,7 @@ def lookup(self, dataset_id, key_pbs, >>> from gcloud import datastore >>> from gcloud.datastore.key import Key - >>> datastore.set_default_connection() + >>> datastore.set_defaults() >>> key = Key('MyKind', 1234, dataset_id='dataset-id') >>> datastore.get(key) @@ -263,8 +263,7 @@ def run_query(self, dataset_id, query_pb, namespace=None, eventual=False): >>> from gcloud import datastore >>> from gcloud.datastore.query import Query - >>> datastore.set_default_connection() - >>> datastore.set_default_dataset_id() + >>> datastore.set_defaults() >>> query = Query(kind='MyKind') >>> query.add_filter('property', '=', 'val') diff --git a/gcloud/datastore/demo/__init__.py b/gcloud/datastore/demo/__init__.py index 18d28f69440b..bf0b92d9c998 100644 --- a/gcloud/datastore/demo/__init__.py +++ b/gcloud/datastore/demo/__init__.py @@ -23,5 +23,4 @@ def initialize(): - datastore.set_default_connection() - datastore.set_default_dataset_id(DATASET_ID) + datastore.set_defaults(dataset_id=DATASET_ID) diff --git a/gcloud/datastore/test___init__.py b/gcloud/datastore/test___init__.py index 2fe6c001edcc..7c836b1d7c0a 100644 --- a/gcloud/datastore/test___init__.py +++ b/gcloud/datastore/test___init__.py @@ -116,6 +116,37 @@ def test_set_implicit(self): self.assertEqual(_implicit_environ.CONNECTION, fake_cnxn) +class Test_set_defaults(unittest2.TestCase): + + def _callFUT(self, dataset_id=None, connection=None): + from gcloud.datastore import set_defaults + return set_defaults(dataset_id=dataset_id, connection=connection) + + def test_it(self): + from gcloud._testing import _Monkey + from gcloud import datastore + + DATASET_ID = object() + CONNECTION = object() + + SET_DATASET_CALLED = [] + + def call_set_dataset(dataset_id=None): + SET_DATASET_CALLED.append(dataset_id) + + SET_CONNECTION_CALLED = [] + + def call_set_connection(connection=None): + SET_CONNECTION_CALLED.append(connection) + + with _Monkey(datastore, set_default_dataset_id=call_set_dataset, + set_default_connection=call_set_connection): + self._callFUT(dataset_id=DATASET_ID, connection=CONNECTION) + + self.assertEqual(SET_DATASET_CALLED, [DATASET_ID]) + self.assertEqual(SET_CONNECTION_CALLED, [CONNECTION]) + + class Test_get_connection(unittest2.TestCase): def _callFUT(self): diff --git a/gcloud/datastore/transaction.py b/gcloud/datastore/transaction.py index a67d4827fc26..55eb82e39142 100644 --- a/gcloud/datastore/transaction.py +++ b/gcloud/datastore/transaction.py @@ -30,8 +30,7 @@ class Transaction(Batch): >>> from gcloud import datastore >>> from gcloud.datastore.transaction import Transaction - >>> datastore.set_default_connection() - >>> datastore.set_default_dataset_id() + >>> datastore.set_defaults() >>> with Transaction() ... entity1.save() diff --git a/regression/clear_datastore.py b/regression/clear_datastore.py index 3a8223231a34..ad79924c29f9 100644 --- a/regression/clear_datastore.py +++ b/regression/clear_datastore.py @@ -23,8 +23,7 @@ datastore._DATASET_ENV_VAR_NAME = 'GCLOUD_TESTS_DATASET_ID' -datastore.set_default_dataset_id() -datastore.set_default_connection() +datastore.set_defaults() FETCH_MAX = 20 diff --git a/regression/datastore.py b/regression/datastore.py index f105486180c3..2a1f00b5c373 100644 --- a/regression/datastore.py +++ b/regression/datastore.py @@ -27,8 +27,7 @@ datastore._DATASET_ENV_VAR_NAME = 'GCLOUD_TESTS_DATASET_ID' -datastore.set_default_dataset_id() -datastore.set_default_connection() +datastore.set_defaults() class TestDatastore(unittest2.TestCase): diff --git a/regression/populate_datastore.py b/regression/populate_datastore.py index c04f39ce155e..d6939e672049 100644 --- a/regression/populate_datastore.py +++ b/regression/populate_datastore.py @@ -23,8 +23,7 @@ datastore._DATASET_ENV_VAR_NAME = 'GCLOUD_TESTS_DATASET_ID' -datastore.set_default_dataset_id() -datastore.set_default_connection() +datastore.set_defaults() ANCESTOR = ('Book', 'GoT')