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,6 +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
170+     :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions` 
171+         or :class:`dict` 
172+     :param default_transaction_options: (Optional) Default options to use for all transactions. 
173+ 
168174    :raises: :class:`ValueError <exceptions.ValueError>` if both ``read_only`` 
169175             and ``admin`` are :data:`True` 
170176    """ 
@@ -186,6 +192,7 @@ def __init__(
186192        route_to_leader_enabled = True ,
187193        directed_read_options = None ,
188194        observability_options = None ,
195+         default_transaction_options : Optional [DefaultTransactionOptions ] =  None ,
189196    ):
190197        self ._emulator_host  =  _get_spanner_emulator_host ()
191198
@@ -247,6 +254,13 @@ def __init__(
247254        self ._route_to_leader_enabled  =  route_to_leader_enabled 
248255        self ._directed_read_options  =  directed_read_options 
249256        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 (
261+                 "default_transaction_options must be an instance of DefaultTransactionOptions" 
262+             )
263+         self ._default_transaction_options  =  default_transaction_options 
250264
251265    @property  
252266    def  credentials (self ):
@@ -337,6 +351,17 @@ def observability_options(self):
337351        """ 
338352        return  self ._observability_options 
339353
354+     @property  
355+     def  default_transaction_options (self ):
356+         """Getter for default_transaction_options. 
357+ 
358+         :rtype: 
359+             :class:`~google.cloud.spanner_v1.DefaultTransactionOptions` 
360+             or :class:`dict` 
361+         :returns: The default transaction options that are used by this client for all transactions. 
362+         """ 
363+         return  self ._default_transaction_options 
364+ 
340365    @property  
341366    def  directed_read_options (self ):
342367        """Getter for directed_read_options. 
@@ -482,3 +507,21 @@ def directed_read_options(self, directed_read_options):
482507            or regions should be used for non-transactional reads or queries. 
483508        """ 
484509        self ._directed_read_options  =  directed_read_options 
510+ 
511+     @default_transaction_options .setter  
512+     def  default_transaction_options (
513+         self , default_transaction_options : DefaultTransactionOptions 
514+     ):
515+         """Sets default_transaction_options for the client 
516+         :type default_transaction_options: :class:`~google.cloud.spanner_v1.DefaultTransactionOptions` 
517+             or :class:`dict` 
518+         :param default_transaction_options: Default options to use for transactions. 
519+         """ 
520+         if  default_transaction_options  is  None :
521+             default_transaction_options  =  DefaultTransactionOptions ()
522+         elif  not  isinstance (default_transaction_options , DefaultTransactionOptions ):
523+             raise  TypeError (
524+                 "default_transaction_options must be an instance of DefaultTransactionOptions" 
525+             )
526+ 
527+         self ._default_transaction_options  =  default_transaction_options 
0 commit comments