o
    i2                     @   s0  U d dl mZ d dl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 d dlmZ d dlmZ daejejeeef  ed	< eeZG d
d deZe Zdeeeef fddZdedeeef fddZdeeeef fddZdeeef deeef fddZdeeef ddfddZdS )    N)_filter_sensitive_info)
COMMIT_SHA)MAIN_PACKAGE)REPOSITORY_URL)
get_logger)DDConfig)formats_GITMETADATA_TAGSc                   @   s`   e Zd ZdZejedddZejedddZ	ejedddZ
ejedddZejed	ddZd
S )GitMetadataConfigddtrace_git_metadata_enabledT)defaultgit_repository_url git_commit_shamain_packagetagsN)__name__
__module____qualname__
__prefix__r   varboolenabledstrrepository_url
commit_shar   r    r   r   P/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/gitmetadata.pyr
      s    r
   returnc                  C   sf   t j} t j}t j}tt j}| s|td} |s|t	d}t
| }t|tkr.d||fS |||fS )zs
    Get git metadata from environment variables.
    Returns tuple (repository_url, commit_sha, main_package)
    r   )configr   r   r   r   parse_tags_strr   getr   r   r   typer   )r   r   r   r   filtered_git_urlr   r   r   _get_tags_from_env*   s   

r%   r   c                 C   s   | sdS zSd}t | dpg D ]}|d}t|dkr,|d dkr,|d  } nq|rUd|v rU|d\}}|d	d }t|}t|tkrPd|fW S ||fW S W dS  t j	yb   Y dS w )
z
    Extracts git metadata from python package's metadata field Project-URL:
    e.g: Project-URL: source_code_link, https://github.com/user/repo#gitcommitsha&someoptions
    Returns tuple (repository_url, commit_sha)
    )r   r   r   zProject-URLz,    r   source_code_link#&)
importlib_metadatametadataget_allsplitlenstripr   r#   r   PackageNotFoundError)r   r'   valcapt_valr   r   r$   r   r   r   _get_tags_from_packageA   s*   


r3   c                  C   s   z1t durt W S tjr-t \} }}|r%| r|s%t|\}}| s!|} |s%|}| ||fa t W S da t W S  tyB   tjddd Y dS w )zT
    Returns git metadata tags tuple (repository_url, commit_sha, main_package)
    N)r   r   r   zgit tags failedT)exc_info)r	   r    r   r%   r3   	Exceptionlogdebug)r   r   r   pkg_repository_urlpkg_commit_shar   r   r   get_git_tags^   s&   
r:   r   c                 C   s(   |  td |  td |  td | S )z(
    Cleanup tags from git metadata
    N)popr   r   r   )r   r   r   r   
clean_tagsy   s   r<   c                 C   s@   t |  t \}}}|r|| t< |r|| t< |r|| t< d S d S )N)r<   r:   r   r   r   )r   r   r   r   r   r   r   add_tags   s   r=   ) importlib.metadatar+   r*   typingddtrace.ext.cir   ddtrace.ext.gitr   r   r   ddtrace.internal.loggerr   ddtrace.internal.settings._corer   ddtrace.internal.utilsr   r	   OptionalTupler   __annotations__r   r6   r
   r    tupler%   r3   r:   dictr<   r=   r   r   r   r   <module>   s$    "