def _get_current_context(self):
<EOL>if self._is_local_root_span:<EOL><INDENT>if self.sample_rate is not None:<EOL><INDENT>if self.zipkin_attrs_override andnot self.zipkin_attrs_override.is_sampled:<EOL><INDENT>return True, create_attrs_for_span(<EOL>sample_rate=self.sample_rate,<EOL>trace_id=self.zipkin_attrs_override.trace_id,<EOL>)<EOL><DEDENT>elif not self.zipkin_attrs_override:<EOL><INDENT>return True, create_attrs_for_span(<EOL>sample_rate=self.sample_rate,<EOL>use_128bit_trace_id=self.use_128bit_trace_id,<EOL>)<EOL><DEDENT><DEDENT>if self.firehose_handler and not self.zipkin_attrs_override:<EOL><INDENT>return True, create_attrs_for_span(<EOL>sample_rate=<NUM_LIT:0.0>,<EOL>use_128bit_trace_id=self.use_128bit_trace_id,<EOL>)<EOL><DEDENT>return False, self.zipkin_attrs_override<EOL><DEDENT>else:<EOL><INDENT>existing_zipkin_attrs = self.get_tracer().get_zipkin_attrs()<EOL>if existing_zipkin_attrs:<EOL><INDENT>return False, ZipkinAttrs(<EOL>trace_id=existing_zipkin_attrs.trace_id,<EOL>span_id=generate_random_64bit_string(),<EOL>parent_span_id=existing_zipkin_attrs.span_id,<EOL>flags=existing_zipkin_attrs.flags,<EOL>is_sampled=existing_zipkin_attrs.is_sampled,<EOL>)<EOL><DEDENT><DEDENT>return False, None<EOL>
Returns the current ZipkinAttrs and generates new ones if needed.

        :returns: (report_root_timestamp, zipkin_attrs)
        :rtype: (bool, ZipkinAttrs)