code: def _make_txn_selector(self):
          
          if self._transaction_id is not None:
              return TransactionSelector(id=self._transaction_id)
  
          if self._read_timestamp:
              key = "read_timestamp"
              value = _datetime_to_pb_timestamp(self._read_timestamp)
          elif self._min_read_timestamp:
              key = "min_read_timestamp"
              value = _datetime_to_pb_timestamp(self._min_read_timestamp)
          elif self._max_staleness:
              key = "max_staleness"
              value = _timedelta_to_duration_pb(self._max_staleness)
          elif self._exact_staleness:
              key = "exact_staleness"
              value = _timedelta_to_duration_pb(self._exact_staleness)
          else:
              key = "strong"
              value = True
  
          options = TransactionOptions(
              read_only=TransactionOptions.ReadOnly(**{key: value})
          )
  
          if self._multi_use:
              return TransactionSelector(begin=options)
          else:
              return TransactionSelector(single_use=options)
docs: Helper for :meth:`read`.