
    uYf                     ~    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
  ee      Z G d	 d
e      Zy)    )List)Mapping)Optional)Union   )
get_logger)cachedmethod)normalize_header_namec                   Z    e Zd ZdZd
dZd Z e       d        Zed        Z	d Z
d Zd	 Zy)
HttpConfigz
    Configuration object that expose an API to set and retrieve both global and integration specific settings
    related to the http context.
    Nc                     |r-|j                         D ci c]  \  }}t        |      | c}}ni | _        d | _        y c c}}w N)itemsr
   _header_tagstrace_query_string)selfheader_tagskvs       U/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/ddtrace/settings/http.py__init__zHttpConfig.__init__   s@    ]h[EVEVEXYTQ215q8Ynp"& Zs   ?c                 F    i | _         | j                  j                          y r   )r   _header_tag_name
invalidater   s    r   _resetzHttpConfig._reset   s    ((*    c                     | j                   sy t        |      }t        j                  d|| j                   j	                                | j                   j                  |      S )Nz,Checking header '%s' tracing in whitelist %s)r   r
   logdebugkeysget)r   header_namenormalized_header_names      r   r   zHttpConfig._header_tag_name   sU       !6{!C		@BXZ^ZkZkZpZpZrs  $$%;<<r   c                 2    t        | j                        dkD  S )Nr   )lenr   r   s    r   is_header_tracing_configuredz'HttpConfig.is_header_tracing_configured'   s     4$$%))r   c                     |syt        |t              r|gn|}|D ],  }t        |      }|s| j                  j	                  |d       . | j
                  j                          | S )a  
        Registers a set of headers to be traced at global level or integration level.
        :param whitelist: the case-insensitive list of traced headers
        :type whitelist: list of str or str
        :return: self
        :rtype: HttpConfig
        N )
isinstancestrr
   r   
setdefaultr   r   )r   	whitelistwhitelist_entryr$   s       r   trace_headerszHttpConfig.trace_headers,   sp     #-i#=YK9	( 	EO%:?%K") (()?D	E 	((*r   c                 (    | j                  |      duS )z
        Returns whether or not the current header should be traced.
        :param header_name: the header name
        :type header_name: str
        :rtype: bool
        N)r   )r   r#   s     r   header_is_tracedzHttpConfig.header_is_tracedF   s     $$[1==r   c                     dj                  | j                  j                  | j                  j	                         | j
                        S )Nz,<{} traced_headers={} trace_query_string={}>)format	__class____name__r   r!   r   r   s    r   __repr__zHttpConfig.__repr__P   s;    =DDNN##T%6%6%;%;%=t?V?V
 	
r   r   )r5   
__module____qualname____doc__r   r   r	   r   propertyr'   r/   r1   r6    r   r   r   r      sJ    
'
+ ^= = * *4>
r   r   N)typingr   r   r   r   internal.loggerr   internal.utils.cacher	   internal.utils.httpr
   r5   r   objectr   r;   r   r   <module>rA      s4        ( / 7 E
 E
r   