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
@@ -165,11 +167,10 @@ class Client(ClientWithProject):
165167 or you can use the environment variable `SPANNER_ENABLE_END_TO_END_TRACING=<boolean>`
166168 to control it.
167169
168- :type default_transaction_options: :class:`~google.cloud.spanner_v1.TransactionOptions `
170+ :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
169171 or :class:`dict`
170- :param default_transaction_options: (Optional) Default options to use for all read/write transactions.
171- Any fields other than `isolation_level` will be ignored.
172-
172+ :param default_transaction_options: (Optional) Default options to use for all transactions.
173+
173174 :raises: :class:`ValueError <exceptions.ValueError>` if both ``read_only``
174175 and ``admin`` are :data:`True`
175176 """
@@ -191,7 +192,7 @@ def __init__(
191192 route_to_leader_enabled = True ,
192193 directed_read_options = None ,
193194 observability_options = None ,
194- default_transaction_options = None ,
195+ default_transaction_options : Optional [ DefaultTransactionOptions ] = None ,
195196 ):
196197 self ._emulator_host = _get_spanner_emulator_host ()
197198
@@ -253,6 +254,11 @@ def __init__(
253254 self ._route_to_leader_enabled = route_to_leader_enabled
254255 self ._directed_read_options = directed_read_options
255256 self ._observability_options = observability_options
257+ if default_transaction_options is None :
258+ default_transaction_options = DefaultTransactionOptions ()
259+ elif not isinstance (default_transaction_options , DefaultTransactionOptions ):
260+ raise TypeError ("default_transaction_options must be an instance of DefaultTransactionOptions" )
261+
256262 self ._default_transaction_options = default_transaction_options
257263
258264 @property
@@ -349,9 +355,9 @@ def default_transaction_options(self):
349355 """Getter for default_transaction_options.
350356
351357 :rtype:
352- :class:`~google.cloud.spanner_v1.TransactionOptions `
358+ :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
353359 or :class:`dict`
354- :returns: The default transaction options that are used by this client for all read/write transactions.
360+ :returns: The default transaction options that are used by this client for all transactions.
355361 """
356362 return self ._default_transaction_options
357363
@@ -502,11 +508,15 @@ def directed_read_options(self, directed_read_options):
502508 self ._directed_read_options = directed_read_options
503509
504510 @default_transaction_options .setter
505- def default_transaction_options (self , default_transaction_options ):
511+ def default_transaction_options (self , default_transaction_options : DefaultTransactionOptions ):
506512 """Sets default_transaction_options for the client
507- :type default_transaction_options: :class:`~google.cloud.spanner_v1.TransactionOptions `
513+ :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions `
508514 or :class:`dict`
509- :param default_transaction_options: Default options to use for all read/write transactions.
510- Any fields other than `isolation_level` will be ignored.
515+ :param default_transaction_options: Default options to use for transactions.
511516 """
517+ if default_transaction_options is None :
518+ default_transaction_options = DefaultTransactionOptions ()
519+ elif not isinstance (default_transaction_options , DefaultTransactionOptions ):
520+ raise TypeError ("default_transaction_options must be an instance of DefaultTransactionOptions" )
521+
512522 self ._default_transaction_options = default_transaction_options
0 commit comments