ó
    Ð]jÝ7  ã                  óê  • S SK Jr  S SKrS SKJs  Jr  S SK	r	S SK
r
S SKJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJr  S SKJr  S S	KJrJr  S S
KJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  \" S5      r(\
RR                  S:¼  a  SS0O0 r*\S   r+ \" Sb0 \*D6 " S S5      5       r,\ " S S5      5       r-\-" S 5      r. \," S/S\.\\/\S   4   S9r0 \," S/SS\#S9r1 \," S/\2\3   S9r4 \," S /S!9r5 \," S"\/SS#S$9r6 \," S%S&/SS'9r7 \," S(/SS'9r8 \," S)/SS*\S9r9 \," S+/SS\/S9r: \," S,/SS-\%S9r; \," S./SS/\S0   S9r< \," S1/SS\/S9r= \," S2/SS\/S9r> \," S3/SS4\/S9r? \," S5/SS6\#S9r@ \," S7S8/SS\/S9rA \," S9/SS:\+S9rB \," S;/S\C" 5       \C\3   S9rD \," S</S\C" 5       \C\3   S9rE \," S=S>/SS?\FS9rG \," S@/S\
RR                  SSA SB:¬  \/S9rH \," SC/SS4\/S9rI \," SD/SS\3S9rJ \," SE/SS\/S9rK \," SF/SS4\/S9rL \," SG/SS4\/S9rM 0 SH\J_SI\0_SJ\1_SK\4_SL\5_SM\6_SN\7_SO\8_SP\G_SQ\9_SR\:_SS\;_ST\<_SU\=_SV\>_SW\?_SX\@_\A\B\D\E\H\I\K\L\MSY.	ErN\ " SZ S[5      5       rOScS\ jrPSdS] jrQSeS^ jrRSfS_ jrSSgS` jrTShSa jrUg)ié    )ÚannotationsN)ÚSequence)Ú	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                  óT   • \ rS rSr% SrS\S'    SrS\S'    SrS	\S
'    \r	S	\S'   Sr
g)ÚConfigParamé   z:A parameter that can be configured for a Logfire instance.z	list[str]Úenv_varsFÚboolÚallow_file_configNr   ÚdefaultÚtp© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r#   r$   Ústrr%   Ú__static_attributes__r&   ó    Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/config_params.pyr   r      s5   ‡ áDàÓØ;Ø#Ð�tÓ#Ø>Ø€GˆSÓØ3Ø€BˆƒMÚ r/   r   c                  ó$   • \ rS rSr% SrS\S'   Srg)Ú_DefaultCallbacké+   zœA 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]Úcallbackr&   N)r'   r(   r)   r*   r+   r,   r.   r&   r/   r0   r2   r2   +   s   ‡ ñð
  Ör/   r2   c                 ó(   • S[         R                  ;  $ )NÚPYTEST_VERSION)ÚosÚenvironr&   r/   r0   Ú<lambda>r9   5   s   € Ð4DÌBÏJÉJÒ4Vr/   ÚLOGFIRE_SEND_TO_LOGFIREzif-token-present)r!   r#   r$   r%   ÚLOGFIRE_MIN_LEVELÚLOGFIRE_TOKEN)r!   r%   ÚLOGFIRE_API_KEY)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ÚindentedrH   Ú!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Ú"LOGFIRE_AIOHTTP_CLIENT_CAPTURE_ALLÚbase_urlÚsend_to_logfireÚ	min_levelÚtokenÚapi_keyÚ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_allÚaiohttp_client_capture_allc                  óf   • \ rS rSr% SrS\S'    \SSS jj5       rSSS jjr\	S 5       r
SS	 jrS
rg)ÚParamManageré•   z)Manage parameters for a Logfire instance.údict[str, Any]Úconfig_from_fileNc                óŒ   • [        U=(       d    [        R                  " S5      =(       d    S5      n[        U5      n[	        US9$ )NÚLOGFIRE_CONFIG_DIRÚ.)r}   )r   r7   ÚgetenvÚ_load_config_from_filerz   )ÚclsÚ
config_dirr}   s      r0   ÚcreateÚParamManager.createœ   s7   € ä˜*×N¬¯	ª	Ð2FÓ(G×NÈ3ÓOˆ
Ü1°*Ó=ÐÜÐ-=Ñ>Ð>r/   c                óN  • Ub  US:w  a  U$ [         U   nUR                   H>  n[        R                  " U5      nU(       d  M"  U R	                  XQUR
                  5      s  $    UR                  (       a:  U R                  R                  U5      nUb  U R	                  XQUR
                  5      $ [        UR                  [        5      (       a4  U R	                  UR                  R                  5       XR
                  5      $ U R	                  UR                  XR
                  5      $ )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.
r?   )ÚCONFIG_PARAMSr!   r7   r�   Ú_castr%   r#   r}   ÚgetÚ
isinstancer$   r2   r4   )ÚselfÚnameÚruntimeÚparamÚenv_varÚvalues         r0   Ú
load_paramÚParamManager.load_param¢   sÞ   € ð" Ñ 7¨b£=ØˆNä˜dÑ#ˆØ—~”~ˆGÜ—I’I˜gÓ&ˆEçˆuØ—z‘z %¨u¯x©xÓ8Ò8ñ	 &ð ×"×"Ø×)Ñ)×-Ñ-¨dÓ3ˆEØÑ Ø—z‘z %¨u¯x©xÓ8Ð8ä�e—m‘mÔ%5×6Ñ6Ø—:‘:˜eŸm™m×4Ñ4Ó6¸¿h¹hÓGÐGØ�z‰z˜%Ÿ-™-¨¯x©xÓ8Ð8r/   c                óˆ   • [         R                  " U R                  S5      U R                  S5      U R                  S5      S9$ )Nrq   rr   rs   )ÚrecordÚincludeÚexclude)r   ÚPydanticPluginr’   )rŒ   s    r0   Úpydantic_pluginÚParamManager.pydantic_pluginÆ   s<   € ä×$Ò$Ø—?‘?Ð#;Ó<Ø—O‘OÐ$=Ó>Ø—O‘OÐ$=Ó>ñ
ð 	
r/   c                óx  • U[         L a  U$ [        U5      [        L a  [        XU5      $ [        U5      [        L aC  [        U5       H  n U R                  XU5      s  $    [        SU S[        U5       SU< 35      eU[        L a  [        X5      $ U[        L a  [        U5      $ U[        L a  [        U5      $ [        U5      [        L a  [        U5      [         4:X  a  [        U5      $ [        U5      [        L a  [        U5      [         4:X  a  [        U5      $ [!        SU 35      e! [         a     Mñ  f = f)Nú	Expected z to be an instance of one of ú, got zUnexpected type )r-   r   r
   Ú_check_literalr   r   r‰   r   r"   Ú_check_boolÚfloatr   ÚsetÚ_extract_set_of_strÚlistÚextract_list_of_strÚRuntimeError)rŒ   r‘   r�   r%   Úargs        r0   r‰   ÚParamManager._castÎ   s&  € Ø”Š9ØˆLÜ�b‹>œWÒ$Ü! %¨rÓ2Ð2Ü�b‹>œUÒ"Ü –|�ðØŸ:™: e°3Ó7Ò7ñ $ô
 % y°°Ð6SÔT\Ð]_ÓT`ÐSaÐagÐhmÑgpÐ%qÓrÐrØ”Š:Ü˜uÓ+Ð+Ø”Š;Ü˜“<ÐØ”Š:Ü˜“;ÐÜ�b‹>œSÒ ¤X¨b£\´c°VÓ%;Ü& uÓ-Ð-Ü�b‹>œTÒ!¤h¨r£l´s°fÓ&<Ü& uÓ-Ð-ÜÐ-¨b¨TÐ2Ó3Ð3øô *ó Úðús   ÁD+Ä+
D9Ä8D9r&   )N)r„   zPath | NoneÚreturnrz   )r�   r-   rŽ   r   r¨   r   ©r‘   r   r�   r-   r%   ztype[T]r¨   zT | None)r'   r(   r)   r*   r+   r,   Úclassmethodr…   r’   r   r™   r‰   r.   r&   r/   r0   rz   rz   •   s?   ‡ á3à$Ó$Ø-àõ?ó ð?ö
"9ðH ñ
ó ð
÷4r/   rz   c                óX   • U c  g [        U5      nX;  a  [        SU SU SU < 35      eU $ )Nrœ   z to be one of r�   )r   r   )r‘   r�   r%   Úliteralss       r0   rž   rž   ç   s>   € Ø�}ØÜ˜‹|€HØÓÜ  9¨T¨F°.ÀÀ
È&ÐQVÑPYÐ!ZÓ[Ð[Ø€Lr/   c                óÚ   • U c  g [        U [        5      (       a  U $ [        U [        5      (       a*  U R                  5       S;   a  gU R                  5       S;   a  g[	        SU SU < 35      e)N)Ú1ÚtrueÚtT)Ú0ÚfalseÚfFrœ   z to be a boolean, got )r‹   r"   r-   Úlowerr   )r‘   r�   s     r0   rŸ   rŸ   ð   sf   € Ø�}ØÜ�%œ×ÑØˆÜ�%œ×ÑØ�;‰;‹=Ð.Ó.ØØ�;‰;‹=Ð/Ó/ØÜ
˜y¨¨Ð.DÀUÁIÐNÓ
OÐOr/   c                ó”   • [        U [        5      (       a2  [        [        [        R                  U R                  S5      5      5      $ U $ )NÚ,)r‹   r-   r¡   ÚmapÚstripÚsplit)r‘   s    r0   r¢   r¢   ý   s3   € Ü4>¸uÄc×4JÑ4JŒ3Œs”3—9‘9˜eŸk™k¨#Ó.Ó/Ó0ÐUÐPUÐUr/   c                ó(  • [        U [        5      (       aP  U R                  S5       Vs/ s H)  oR                  5       (       d  M  UR                  5       PM+     nnU(       a  U$ S$ U (       a  U  Vs/ s H  o3(       d  M  UPM     sn$ S$ s  snf s  snf )zÞExtract a list of strings from a string, sequence, or None.

If value is a comma-separated string, split it into a list of non-empty trimmed strings.
If value is a sequence, convert to list.
If value is None, return None.
r¶   N)r‹   r-   r¹   r¸   )r‘   r°   ÚtokensÚvs       r0   r¤   r¤     sr   € ô �%œ×ÑØ%*§[¡[°Ô%5ÓCÒ%5 ¿¹¿“)�!—'‘'–)Ñ%5ˆÐCÞˆvÐ) TÐ)Þ&+‘uÓ"’u�!£�A‘uÑ"Ð5°Ð5ùò Dùâ"s   ©B
ÁB
Á1
BÁ?Bc                ój   • U (       d  g[        U 5      nUb  U(       d  g[        U5      S:X  a  US   $ U$ )zåNormalize a token value to str (single token), list[str] (multiple tokens), or None.

If there's exactly one token, return it as a string.
If there are multiple tokens, return them as a list.
If there are no tokens, return None.
Nr   r   )r¤   Úlen)r‘   r»   s     r0   Únormalize_tokenr¿     s9   € ö àä  Ó'€FØ�~žVØÜ
ˆ6ƒ{�aÓØ�a‰yÐØ€Mr/   c                óØ   • U S-  nUR                  5       (       d  0 $  [        U5      nUR                  S0 5      R                  S0 5      $ ! [         a  n[	        SU 35      UeS nAff = f)Nzpyproject.tomlÚtoolÚlogfirezInvalid config file: )Úexistsr   rŠ   Ú	Exceptionr   )r„   Úconfig_fileÚdataÚexcs       r0   r‚   r‚   !  sv   € ØÐ/Ñ/€KØ×Ñ×ÑØˆ	ðQÜ˜kÓ*ˆØ�x‰x˜ Ó#×'Ñ'¨	°2Ó6Ð6øÜó QÜ Ð#8¸¸Ð!FÓGÈSÐ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])r‘   zstr | Sequence[str]r¨   zlist[str] | None)r‘   zstr | Sequence[str] | Noner¨   zstr | list[str] | None)r„   r   r¨   r|   )VÚ
__future__r   Ú_annotationsÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr7   ÚsysÚcollections.abcr   Údataclassesr   Ú	functoolsr   Úpathlibr   Útypingr   r	   r
   r   r   Ú'opentelemetry.sdk.environment_variablesr   Útyping_extensionsr   r   Úlogfire.exceptionsr   r?   r   Ú	constantsr   Úexporters.consoler   Úutilsr   r   Úversion_infoÚ
slots_trueÚPydanticPluginRecordValuesr   r2   Ú_send_to_logfire_defaultr"   ÚSEND_TO_LOGFIREÚ	MIN_LEVELr£   r-   ÚTOKENÚAPI_KEYÚ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¡   ÚPYDANTIC_PLUGIN_INCLUDEÚPYDANTIC_PLUGIN_EXCLUDEr    ÚTRACE_SAMPLE_RATEÚINSPECT_ARGUMENTSÚIGNORE_NO_CONFIGÚBASE_URLÚDISTRIBUTED_TRACINGÚHTTPX_CAPTURE_ALLÚAIOHTTP_CLIENT_CAPTURE_ALLrˆ   rz   rž   rŸ   r¢   r¤   r¿   r‚   r&   r/   r0   Ú<module>rú      sq  ðÝ 2ç  „ ƒ	Û 
Ý $Ý !Ý %Ý ß 9Õ 9å Eß 2å 1å Ý  Ý 2Ý !áˆCƒL€à #× 0Ñ 0°GÓ ;ˆg�t‰_À€
à$Ð%GÑHÐ Ø Añ ÑˆZÑ÷
!ð 
!ó ð
!ð ÷ ð  ó ð ñ ,Ñ,VÓWÐ Ø Hñ Ð(AÐ'BÐVZÐd|ð  BGð  HLð  NUð  Vhñ  Nið  Hiñ  Bjñ  k€Ø 'ÙÐ"5Ð!6È$ÐX\ÐajÑk€	Ø eÙ˜oÐ.°4¸±9Ñ=€ð VÙ
Ð 1Ð2Ñ
3€Ø XÙÐ%;Ð=NÐ$OÐcgÐqsÑt€ð eÙÐ(AÐCYÐ'ZÐnrÑs€ð oÙÐ$9Ð#:ÈdÑS€ð @ÙÐ(AÐ'BÐVZÐdnÐswÑx€Ø :Ù
Ð 1Ð2ÀdÐTXÐ]aÑ
b€Ø 5ÙÐ'?Ð&@ÐTXÐbhð  nAñ  B€Ø +Ù Ð+GÐ*HÐ\`Ðjxð  ~Eð  Fjñ  ~kñ  lÐ ðñ (Ð2UÐ1VÐjnÐx|ð  BFñ  GÐ Ø 6Ù"Ð-KÐ,LÐ`dÐnrÐw{Ñ|Ð Ø -ÙÐ(AÐ'BÐVZÐdiÐnrÑs€Ø 4Ù#Ð.MÐ-NÐbfÐpvð  |Eñ  FÐ Ø /Ù'Ð2UÐWmÐ1nð  CGð  QUð  Z^ñ  _Ð Ø 5Ù$Ð/OÐ.PÐdhÐrwð  }Wñ  XÐ Ø .Ù%Ð0QÐ/RÐfjÑtwÓtyð  Bð  CFñ  Gñ  HÐ Ø VÙ%Ð0QÐ/RÐfjÑtwÓtyð  Bð  CFñ  Gñ  HÐ Ø XÙÐ*EÐG`Ð)aÐuyð  DGð  LQñ  RÐ Ø $ÙÐ*EÐ)FÐZ^Ðhk×hxÑhxÐy{Ðz{Ðh|ð  AHñ  iHð  MQñ  RÐ Ø \ÙÐ)CÐ(DÐX\ÐfkÐptÑuÐ Ø ^ÙÐ!3Ð 4ÈÐVZÐ_bÑc€Ø JÙ!Ð,IÐ+JÐ^bÐlpÐuyÑzÐ Ø \ñ  Ð*EÐ)FÐZ^ÐhmÐrvÑwÐ Ø nÙ(Ð3WÐ2XÐlpÐzð  EIñ  JÐ Ø wðØ�ðà�ðð �ðð ˆUð	ð
 ˆwðð �Lðð �ðð �;ðð Ð*ðð �ðð ˆwðð �nðð Ð,ðð  Ð!:ðð Ð0ðð  �ð!ð" Ð2ð#ð$ ";Ø4Ø6Ø6Ø*Ø(Ø.à*Ø"<ò7€ð> ÷N4ð N4ó ðN4ôbô
PôVô
6ôõ&Qr/   