3131from google .auth .credentials import AnonymousCredentials
3232import google .api_core .client_options
3333from google .cloud .client import ClientWithProject
34+ from typing import Optional
3435
3536
3637from google .cloud .spanner_admin_database_v1 import DatabaseAdminClient
4546from google .cloud .spanner_admin_instance_v1 import ListInstancesRequest
4647from google .cloud .spanner_v1 import __version__
4748from google .cloud .spanner_v1 import ExecuteSqlRequest
49+ from google .cloud .spanner_v1 import DefaultTransactionOptions
4850from google .cloud .spanner_v1 ._helpers import _merge_query_options
4951from google .cloud .spanner_v1 ._helpers import _metadata_with_prefix
5052from google .cloud .spanner_v1 .instance import Instance
@@ -161,11 +163,10 @@ class Client(ClientWithProject):
161163 or you can use the environment variable `SPANNER_ENABLE_EXTENDED_TRACING=<boolean>`
162164 to control it.
163165
164- :type default_transaction_options: :class:`~google.cloud.spanner_v1.TransactionOptions `
166+ :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
165167 or :class:`dict`
166- :param default_transaction_options: (Optional) Default options to use for all read/write transactions.
167- Any fields other than `isolation_level` will be ignored.
168-
168+ :param default_transaction_options: (Optional) Default options to use for all transactions.
169+
169170 :raises: :class:`ValueError <exceptions.ValueError>` if both ``read_only``
170171 and ``admin`` are :data:`True`
171172 """
@@ -187,7 +188,7 @@ def __init__(
187188 route_to_leader_enabled = True ,
188189 directed_read_options = None ,
189190 observability_options = None ,
190- default_transaction_options = None ,
191+ default_transaction_options : Optional [ DefaultTransactionOptions ] = None ,
191192 ):
192193 self ._emulator_host = _get_spanner_emulator_host ()
193194
@@ -249,6 +250,11 @@ def __init__(
249250 self ._route_to_leader_enabled = route_to_leader_enabled
250251 self ._directed_read_options = directed_read_options
251252 self ._observability_options = observability_options
253+ if default_transaction_options is None :
254+ default_transaction_options = DefaultTransactionOptions ()
255+ elif not isinstance (default_transaction_options , DefaultTransactionOptions ):
256+ raise TypeError ("default_transaction_options must be an instance of DefaultTransactionOptions" )
257+
252258 self ._default_transaction_options = default_transaction_options
253259
254260 @property
@@ -345,9 +351,9 @@ def default_transaction_options(self):
345351 """Getter for default_transaction_options.
346352
347353 :rtype:
348- :class:`~google.cloud.spanner_v1.TransactionOptions `
354+ :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
349355 or :class:`dict`
350- :returns: The default transaction options that are used by this client for all read/write transactions.
356+ :returns: The default transaction options that are used by this client for all transactions.
351357 """
352358 return self ._default_transaction_options
353359
@@ -498,11 +504,15 @@ def directed_read_options(self, directed_read_options):
498504 self ._directed_read_options = directed_read_options
499505
500506 @default_transaction_options .setter
501- def default_transaction_options (self , default_transaction_options ):
507+ def default_transaction_options (self , default_transaction_options : DefaultTransactionOptions ):
502508 """Sets default_transaction_options for the client
503- :type default_transaction_options: :class:`~google.cloud.spanner_v1.TransactionOptions `
509+ :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
504510 or :class:`dict`
505- :param default_transaction_options: Default options to use for all read/write transactions.
506- Any fields other than `isolation_level` will be ignored.
511+ :param default_transaction_options: Default options to use for transactions.
507512 """
513+ if default_transaction_options is None :
514+ default_transaction_options = DefaultTransactionOptions ()
515+ elif not isinstance (default_transaction_options , DefaultTransactionOptions ):
516+ raise TypeError ("default_transaction_options must be an instance of DefaultTransactionOptions" )
517+
508518 self ._default_transaction_options = default_transaction_options
0 commit comments