
    g                    b    d dl mZ d dlmZ d dlmZ d dlmZ ddlm	Z	 ddl
mZ  G d	 d
e      Zy)    )annotations)Sequence)ReadableSpan)SpanExportResult   )ATTRIBUTES_SPAN_TYPE_KEY   )WrapperSpanExporterc                  $     e Zd ZdZd fdZ xZS )RemovePendingSpansExporterzhAn exporter that filters out pending spans if the corresponding final span is already in the same batch.c                   g }i }|D ]  }|j                   xs i }|j                  t              }|dk(  r9|j                  }|r\|j                  |j
                  f}|j                  ||       f|dk(  r,|j                  }|r|j                  |j
                  f}|||<   |j                  |        |j                  |j                                t        	| 1  |      S )Npending_spanspan)
attributesgetr   parenttrace_idspan_id
setdefaultcontextappendextendvaluessuperexport)
selfspansresultspans_by_idr   r   	span_typer   key	__class__s
            _/var/www/openai/venv/lib/python3.12/site-packages/logfire/_internal/exporters/remove_pending.pyr   z!RemovePendingSpansExporter.export   s    %'
 <>D.BJ"'?@IN*++"++W__=C**35f$,,"++W__=C'+K$ MM$' * 	k((*+w~f%%    )r   zSequence[ReadableSpan]returnr   )__name__
__module____qualname____doc__r   __classcell__)r"   s   @r#   r   r      s    r& &r$   r   N)
__future__r   typingr   opentelemetry.sdk.tracer   opentelemetry.sdk.trace.exportr   	constantsr   wrapperr
   r    r$   r#   <module>r2      s$    "  0 ; 0 (!&!4 !&r$   