def new_span()

in skywalking/trace/context.py [0:0]


    def new_span(self, parent: Optional[Span], SpanType: type, **kwargs) -> Span:  # noqa
        finished = parent and not parent.depth
        context = SpanContext() if finished else self
        span = SpanType(context=context,
                        sid=context._sid.next(),
                        pid=parent.sid if parent and not finished else -1,
                        **kwargs)

        # if parent finished and segment was archived before this child starts then we need to refer to parent
        if finished:
            carrier = Carrier(
                trace_id=str(parent.context.segment.related_traces[0]),
                segment_id=str(parent.context.segment.segment_id),
                span_id=str(parent.sid),
                service=config.agent_name,
                service_instance=config.agent_instance_name,
                endpoint=parent.op,
                client_address=parent.peer,
                correlation=parent.context._correlation,
            )

            Span.extract(span, carrier)

        return span