o
    i/                  	   @  s  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 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 d
dlmZ d
dlmZ edZ ej!dkrgddini Z"ed Z#	 edoi e"G dd dZ$eG dd dZ%e%dd Z&	 e$dgde&ee'ed f dZ(	 e$dgddedZ)	 e$dgdZ*	 e$d egdd!d"Z+	 e$d#d$gdd%Z,	 e$d&gdd%Z-	 e$d'gdd(e
dZ.	 e$d)gdde'dZ/	 e$d*gdd+edZ0	 e$d,gdd-ed. dZ1	 e$d/gdde'dZ2	 e$d0gdde'dZ3	 e$d1gdd2e'dZ4	 e$d3gdd4edZ5	 e$d5d6gdde'dZ6	 e$d7gdd8e#dZ7	 e$d9gde8 e8e9 dZ:	 e$d:gde8 e8e9 dZ;	 e$d;d<gdd=e<dZ=	 e$d>gdej!dd? d@ke'dZ>	 e$dAgdd2e'dZ?	 e$dBgdde9dZ@	 e$dCgdde'dZA	 e$dDgdd2e'dZB	 i dEe@dFe(dGe)dHe*dIe+dJe,dKe-dLe=dMe.dNe/dOe0dPe1dQe2dRe3dSe4dTe5dUe6e7e:e;e>e?eAeBdVZCeG dWdX dXZDdpdadbZEdqdddeZFdrdhdiZGdsdmdnZHdS )t    )annotationsN)	dataclass)cached_property)Path)AnyCallableLiteralTypeVarUnion)OTEL_SERVICE_NAME)get_args
get_origin)LogfireConfigError   )config)	LevelName)ConsoleColorsValues)read_toml_fileT)   
   slotsT)offallfailuremetricsc                   @  sD   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
< dS )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!    r(   r(   e/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/logfire/_internal/config_params.pyr      s   
 r   c                   @  s   e Zd ZU dZded< dS )_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(   r)   r*   *   s   
 r*   c                   C  s
   dt jvS )NPYTEST_VERSION)osenvironr(   r(   r(   r)   <lambda>4   s   
 r/   LOGFIRE_SEND_TO_LOGFIREzif-token-present)r   r   r    r!   LOGFIRE_MIN_LEVEL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indentedr=   !LOGFIRE_CONSOLE_INCLUDE_TIMESTAMPLOGFIRE_CONSOLE_INCLUDE_TAGS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_CONFIGLOGFIRE_BASE_URLLOGFIRE_DISTRIBUTED_TRACINGLOGFIRE_HTTPX_CAPTURE_ALLbase_urlsend_to_logfire	min_leveltokenservice_nameservice_versionenvironmenttrace_sample_ratedata_dirconsoleconsole_colorsconsole_span_styleconsole_include_timestampconsole_include_tags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_tracinghttpx_capture_allc                   @  sN   e Zd ZU dZded< 	 edddd	ZddddZedd Z	dddZ
dS )ParamManagerz)Manage parameters for a Logfire instance.dict[str, Any]config_from_fileN
config_dirPath | Nonereturnc                 C  s(   t |p	tdp	d}t|}t|dS )NLOGFIRE_CONFIG_DIR.)rm   )r   r-   getenv_load_config_from_filerk   )clsrn   rm   r(   r(   r)   create   s   
zParamManager.createnamer'   runtimer   c                 C  s   |dur
|dkr
|S t | }|jD ]}t|}|r$| |||j  S q|jr:| j|}|dur:| |||jS t	|j
trK| |j
 ||jS | |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.
        Nr4   )CONFIG_PARAMSr   r-   rs   _castr!   r   rm   get
isinstancer    r*   r+   )selfrw   rx   paramenv_varvaluer(   r(   r)   
load_param   s   

zParamManager.load_paramc                 C  s"   t j| d| d| ddS )Nrd   re   rf   )recordincludeexclude)r   PydanticPluginr   )r}   r(   r(   r)   pydantic_plugin   s
   zParamManager.pydantic_pluginr   r!   type[T]T | Nonec              	   C  s   |t u r|S t|tu rt|||S t|tu rAt|D ]}z
| |||W   S  ty1   Y qw td| dt| d||tu rJt	||S |t
u rRt
|S |tu rZt|S t|tu rkt|t fkrkt|S td| )N	Expected z to be an instance of one of , got zUnexpected type )r'   r   r   _check_literalr
   r   rz   r   r   _check_boolfloatr   set_extract_set_of_strRuntimeError)r}   r   rw   r!   argr(   r(   r)   rz      s*   
zParamManager._cast)N)rn   ro   rp   rk   )rw   r'   rx   r   rp   r   r   r   rw   r'   r!   r   rp   r   )r"   r#   r$   r%   r&   classmethodrv   r   r   r   rz   r(   r(   r(   r)   rk      s   
 $
rk   r   r   rw   r'   r!   r   rp   r   c                 C  s:   | d u rd S t |}| |vrtd| d| d| | S )Nr   z to be one of r   )r   r   )r   rw   r!   literalsr(   r(   r)   r      s   r   bool | Nonec                 C  sX   | d u rd S t | tr| S t | tr"|  dv rdS |  dv r"dS td| d| )N)1truetT)0falsefFr   z to be a boolean, got )r|   r   r'   lowerr   )r   rw   r(   r(   r)   r      s   

r   str | set[str]set[str]c                 C  s$   t | trtttj| dS | S )N,)r|   r'   r   mapstripsplit)r   r(   r(   r)   r      s   $r   rn   r   rl   c              
   C  s\   | d }|  s
i S zt|}|di di W S  ty- } ztd| |d }~ww )Nzpyproject.tomltoollogfirezInvalid config file: )existsr   r{   	Exceptionr   )rn   config_filedataexcr(   r(   r)   rt      s   rt   r(   r   )r   r   rw   r'   rp   r   )r   r   rp   r   )rn   r   rp   rl   )I
__future__r   _annotationsr-   sysdataclassesr   	functoolsr   pathlibr   typingr   r   r   r	   r
   'opentelemetry.sdk.environment_variablesr   typing_extensionsr   r   logfire.exceptionsr   r4   r   	constantsr   exporters.consoler   utilsr   r   version_info
slots_truePydanticPluginRecordValuesr   r*   _send_to_logfire_defaultr   SEND_TO_LOGFIRE	MIN_LEVELTOKENSERVICE_NAMESERVICE_VERSIONENVIRONMENTCREDENTIALS_DIRCONSOLECONSOLE_COLORSCONSOLE_SPAN_STYLECONSOLE_INCLUDE_TIMESTAMPCONSOLE_INCLUDE_TAGS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_TRACINGHTTPX_CAPTURE_ALLry   rk   r   r   r   rt   r(   r(   r(   r)   <module>   s    	 	

O
	
