
    g,              	         d dl mZ d dl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mZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d
dlmZ d
dlmZmZ d
dlmZ d
dl m!Z!  ed      Z"ejF                  dk\  rddini Z$ed   Z%	  edYi e$ G d d             Z&e G d d             Z' e'd       Z(	  e&dgde(ee)ed   f         Z*	  e&dg      Z+	  e&degdd       Z,	  e&d!d"gd#      Z-	  e&d$gd#      Z.	  e&d%gdd&e
      Z/	  e&d'gdde)      Z0	  e&d(gdd)e      Z1	  e&d*gdd+ed,         Z2	  e&d-gdde)      Z3	  e&d.gdd/e)      Z4	  e&d0gdd1e      Z5	  e&d2d3gdde)      Z6	  e&d4gdd5e%      Z7	  e&d6gd e8       ee9         Z:	  e&d7gd e8       ee9         Z;	  e&d8d9gdd:e<      Z=	  e&d;gdejF                  dd< d=k\  e)      Z>	  e&d>gdd/e)      Z?	  e&d?gde       Z@	  e&d@gdde)      ZA	 i dAe@dBe*dCe+dDe,dEe-dFe.dGe=dHe/dIe0dJe1dKe2dLe3dMe4dNe5dOe6dPe7dQe:e;e>e?eAdRZBe G dS dT             ZCdZdUZDd[dVZEd\dWZFd]dXZGy)^    )annotationsN)	dataclass)cached_property)Path)AnyCallableLiteralSetTypeVarUnion)OTEL_SERVICE_NAME)get_args
get_origin)LogfireConfigError   )config)LOGFIRE_BASE_URL	LevelName)ConsoleColorsValues)read_toml_fileT)   
   slotsT)offallfailuremetricsc                  L    e Zd ZU dZded<   	 dZded<   	 dZded	<   	 eZded
<   y)ConfigParamz:A parameter that can be configured for a Logfire instance.z	list[str]env_varsFboolallow_file_configNr   defaulttp)	__name__
__module____qualname____doc____annotations__r#   r$   strr%        T/var/www/openai/venv/lib/python3.12/site-packages/logfire/_internal/config_params.pyr    r       s5    D;#t#>GS3BM r-   r    c                      e Zd ZU dZded<   y)_DefaultCallbackzA default value that is computed at runtime.

    A good example is when we want to check if we are running under pytest and set a default value based on that.
    zCallable[[], Any]callbackN)r&   r'   r(   r)   r*   r,   r-   r.   r0   r0   *   s    
  r-   r0   c                 &    dt         j                  vS )NPYTEST_VERSION)osenvironr,   r-   r.   <lambda>r6   4   s    4DBJJ4Vr-   LOGFIRE_SEND_TO_LOGFIREzif-token-present)r!   r#   r$   r%   LOGFIRE_TOKEN)r!   LOGFIRE_SERVICE_NAME )r!   r#   r$   LOGFIRE_SERVICE_VERSIONOTEL_SERVICE_VERSION)r!   r#   LOGFIRE_ENVIRONMENTLOGFIRE_CREDENTIALS_DIRz.logfireLOGFIRE_CONSOLELOGFIRE_CONSOLE_COLORSautoLOGFIRE_CONSOLE_SPAN_STYLEshow-parents)simpleindentedrC   !LOGFIRE_CONSOLE_INCLUDE_TIMESTAMPLOGFIRE_CONSOLE_VERBOSEFLOGFIRE_CONSOLE_MIN_LOG_LEVELinfo!LOGFIRE_CONSOLE_SHOW_PROJECT_LINKLOGFIRE_SHOW_SUMMARYLOGFIRE_PYDANTIC_PLUGIN_RECORDr   LOGFIRE_PYDANTIC_PLUGIN_INCLUDELOGFIRE_PYDANTIC_PLUGIN_EXCLUDELOGFIRE_TRACE_SAMPLE_RATEOTEL_TRACES_SAMPLER_ARGg      ?LOGFIRE_INSPECT_ARGUMENTS   )r      LOGFIRE_IGNORE_NO_CONFIGr   LOGFIRE_DISTRIBUTED_TRACINGbase_urlsend_to_logfiretokenservice_nameservice_versionenvironmenttrace_sample_ratedata_dirconsoleconsole_colorsconsole_span_styleconsole_include_timestampconsole_verboseconsole_min_log_levelconsole_show_project_linkpydantic_plugin_recordpydantic_plugin_include)pydantic_plugin_excludeinspect_argumentsignore_no_configdistributed_tracingc                  T    e Zd ZU dZded<   	 ed	d
d       Zd	ddZed        Z	ddZ
y)ParamManagerz)Manage parameters for a Logfire instance.dict[str, Any]config_from_fileNc                |    t        |xs t        j                  d      xs d      }t        |      }t	        |      S )NLOGFIRE_CONFIG_DIR.)rn   )r   r4   getenv_load_config_from_filerl   )cls
config_dirrn   s      r.   createzParamManager.create   s7    *N		2F(GN3O
1*=-=>>r-   c                "   ||S t         |   }|j                  D ]8  }t        j                  |      }|s| j	                  |||j
                        c S  |j                  r:| j                  j                  |      }|| j	                  |||j
                        S t        |j                  t              r5| j	                  |j                  j                         ||j
                        S | j	                  |j                  ||j
                        S )a  Load a parameter given its name.

        The parameter is loaded in the following order:
        1. From the runtime argument, if provided.
        2. From the environment variables.
        3. From the config file, if allowed.

        If none of the above is found, the default value is returned.

        Args:
            name: Name of the parameter.
            runtime: Value provided at runtime.

        Returns:
            The value of the parameter.
        )CONFIG_PARAMSr!   r4   rr   _castr%   r#   rn   get
isinstancer$   r0   r1   )selfnameruntimeparamenv_varvalues         r.   
load_paramzParamManager.load_param   s    " Nd#~~GIIg&Ezz%uxx88	 & ""))--d3E zz%uxx88emm%56::emm446ehhGGzz%--uxx88r-   c                    t        j                  | j                  d      | j                  d      | j                  d            S )Nre   rf   rg   )recordincludeexclude)r   PydanticPluginr   )r|   s    r.   pydantic_pluginzParamManager.pydantic_plugin   s<    $$??#;<OO$=>OO$=>
 	
r-   c                   |t         u r|S t        |      t        u rt        |||      S t        |      t        u rBt        |      D ]  }	 | j                  |||      c S  t        d| dt        |       d|      |t        u rt        ||      S |t        u rt        |      S |t        u rt        |      S t        |      t        u rt        |      t         fk(  rt        |      S t        d|       # t        $ r Y w xY w)N	Expected z to be an instance of one of , got zUnexpected type )r+   r   r	   _check_literalr   r   ry   r   r"   _check_boolfloatr   set_extract_set_of_strRuntimeError)r|   r   r}   r%   args        r.   ry   zParamManager._cast   s   9Lb>W$!%r22b>U"|::eT377 $
 %y6ST\]_T`Saaghmgp%qrr:ud++;<:;b>S Xb\cV%;&u---bT233 * s   	C33	C?>C?)N)ru   zPath | Nonereturnrl   )r}   r+   r~   r   r   r   r   r   r}   r+   r%   ztype[T]r   zT | None)r&   r'   r(   r)   r*   classmethodrv   r   r   r   ry   r,   r-   r.   rl   rl      s?    3$$-? ?
"9H 
 
4r-   rl   c                R    | y t        |      }| |vrt        d| d| d|       | S )Nr   z to be one of r   )r   r   )r   r}   r%   literalss       r.   r   r      s@    }|HH 9TF.
&QVPY!Z[[Lr-   c                    | y t        | t              r| S t        | t              r&| j                         dv ry| j                         dv ryt	        d| d|       )N)1truetT)0falsefFr   z to be a boolean, got )r{   r"   r+   lowerr   )r   r}   s     r.   r   r      s`    }%%;;=..;;=//
y.DUIN
OOr-   c                    t        | t              r2t        t        t        j                  | j                  d                  S | S )N,)r{   r+   r   mapstripsplit)r   s    r.   r   r      s0    4>uc4J3s399ekk#./0UPUUr-   c                    | dz  }|j                         si S 	 t        |      }|j                  di       j                  di       S # t        $ r}t	        d|       |d }~ww xY w)Nzpyproject.tomltoollogfirezInvalid config file: )existsr   rz   	Exceptionr   )ru   config_filedataexcs       r.   rs   rs      ss    //K	Qk*xx#''	266 Q #8!FGSPQs   ,A 	A#AA#r,   r   )r   r   r}   r+   r   zbool | None)r   zstr | set[str]r   zset[str])ru   r   r   rm   )H
__future__r   _annotationsr4   sysdataclassesr   	functoolsr   pathlibr   typingr   r   r	   r
   r   r   'opentelemetry.sdk.environment_variablesr   typing_extensionsr   r   logfire.exceptionsr   r:   r   	constantsr   r   exporters.consoler   utilsr   r   version_info
slots_truePydanticPluginRecordValuesr    r0   _send_to_logfire_defaultr"   SEND_TO_LOGFIRETOKENSERVICE_NAMESERVICE_VERSIONENVIRONMENTCREDENTIALS_DIRCONSOLECONSOLE_COLORSCONSOLE_SPAN_STYLECONSOLE_INCLUDE_TIMESTAMPCONSOLE_VERBOSECONSOLE_MIN_LOG_LEVELCONSOLE_SHOW_PROJECT_LINKPYDANTIC_PLUGIN_RECORDr   r+   PYDANTIC_PLUGIN_INCLUDEPYDANTIC_PLUGIN_EXCLUDEr   TRACE_SAMPLE_RATEINSPECT_ARGUMENTSIGNORE_NO_CONFIGBASE_URLDISTRIBUTED_TRACINGrx   rl   r   r   r   rs   r,   r-   r.   <module>r      s   2 	 
 ! %  > > E 2 1  2 2 !CL # 0 0G ;gt_
$%GH  A Z
! 
! 
!       ,,VW  H (A'BVZd|  BG  HL  NU  Vh  Ni  Hi  Bj  k 'o./  %;=N$Ocgqst e(ACY'Znrs o$9#:dS @(A'BVZdnswx :
 12dTX]a
b 5'?&@TXbh  nA  B + +G*H\`jx  ~E  Fj  ~k  l  (2U1Vjnx|  BF  G  6(A'BVZdinrs 4#.M-Nbfpv  |E  F  /'2UWm1n  CG  QU  Z^  _  5$/O.Pdhrw  }W  X  .%0Q/Rfjtwty  B  CF  G  H  V%0Q/Rfjtwty  B  CF  G  H  X*EG`)auy  DG  LQ  R  $*E)FZ^hkhxhxy{z{h|  AH  iH  MQ  R  \)C(DX\fkptu  ^!3 4Vfg J!,I+J^blpuyz  \ U L	
  ; *  w n ,  !:  2  !:  4!" 6#$  7*(.+2 L4 L4 L4^
PVQr-   