code: def begin_transaction(self, transaction_type, trace_parent=None):
          
          if trace_parent:
              is_sampled = bool(trace_parent.trace_options.recorded)
          else:
              is_sampled = self._sample_rate == 1.0 or self._sample_rate > random.random()
          transaction = Transaction(self, transaction_type, trace_parent=trace_parent, is_sampled=is_sampled)
          if trace_parent is None:
              transaction.trace_parent = TraceParent(
                  constants.TRACE_CONTEXT_VERSION,
                  "%032x" % random.getrandbits(128),
                  transaction.id,
                  TracingOptions(recorded=is_sampled),
              )
          execution_context.set_transaction(transaction)
          return transaction
docs: Start a new transactions and bind it in a thread-local variable
  
          :returns the Transaction object