ó
    ^v(jm  ã                   ó–  • S r SSKrSSKJs  Jr  SSKJr  SSK	r	SSK
JrJrJrJrJrJrJr  / SQr\	R&                  " SS9S\	R(                  S	\4S
 j5       rS rS rS rS rS rS rS\	R(                  4S jrS\	R(                  4S jrS\	R(                  4S jrS\	R(                  4S jrS\	R(                  4S jr S\	R(                  4S jr!\	RD                  RG                  S/ SQ5      S\	R(                  S\$4S j5       r%\	RD                  RG                  S/ SQ5      S\	R(                  S\$4S j5       r&S\	R(                  4S jr'S r(g)a  Tests for the consolidated quber.settings package (QUE-228).

The autouse fixture chdirs into an empty temp dir so the suite never reads
the developer's real ``.env``; env presence is simulated with
``monkeypatch.setenv`` (no import-time env gates, per project conventions).
é    N)ÚPath)Ú
DBSettingsÚEmbeddingSettingsÚLLMSettingsÚObservabilitySettingsÚS3CacheSettingsÚSettingsÚget_settings)ÚQUBER_LLM_MODELÚANTHROPIC_MODELÚANTHROPIC_API_KEYÚANTHROPIC_AUTH_TOKENÚOPENAI_API_KEYÚQUBER_LLM_BACKENDÚQUBER_UNIFIER_BACKENDÚQUBER_CLASSIFIER_BACKENDÚQUBER_DETECTOR_BACKENDÚQUBER_GRID_LOCATOR_BACKENDÚQUBER_COMPLETENESS_BACKENDÚPOSTGRES_USERÚPOSTGRES_PASSWORDÚPOSTGRES_HOSTÚPOSTGRES_PORTÚPOSTGRES_DBÚQUBER_S3_CACHE_DIRÚQUBER_S3_CACHE_TTLÚQUBER_S3_REGIONÚ
AWS_REGIONÚEMBEDDING_PROVIDERÚEMBEDDING_DEVICEÚPYDANTIC_LOGFIRE_TOKENÚLOGFIRE_TOKENÚQUBER_ENABLE_LOGFIREÚTRACE_TO_LANGSMITHÚCC_LANGSMITH_API_KEYÚCC_LANGSMITH_PROJECTÚCC_LANGSMITH_DEBUGÚQUBER_LOG_LEVELÚQUBER_MAX_CONCURRENT_TABLEST)ÚautouseÚmonkeypatchÚtmp_pathc              #   óÄ   #   • [          H  nU R                  USS9  M     U R                  U5        [        R                  " 5         S v •  [        R                  " 5         g 7f)NF)Úraising)ÚMANAGED_VARSÚdelenvÚchdirr
   Úcache_clear)r+   r,   Úvars      Ú-/home/mande/repo/quber/tests/test_settings.pyÚisolated_envr5   ;   sM   é € ÷ ˆØ×Ñ˜3¨ÐÓ.ñ à×Ñ�hÔÜ×ÒÔÛ	Ü×ÒÕùs   ‚AA c                  óÜ  • [        5       n U R                  nS o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS o!UL o3(       dº  [        R                  " SU4S	X45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS
o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS
o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS
o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                   nS
o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R"                  nS
o!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R$                  nSo!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )N©Úis)z-%(py2)s
{%(py2)s = %(py0)s.model
} is %(py5)sÚs©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7)z9%(py2)s
{%(py2)s = %(py0)s.anthropic_api_key
} is %(py5)s)z<%(py2)s
{%(py2)s = %(py0)s.anthropic_auth_token
} is %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.openai_api_key
} is %(py5)sÚapi©ú==)z3%(py2)s
{%(py2)s = %(py0)s.llm_backend
} == %(py5)s©z7%(py2)s
{%(py2)s = %(py0)s.unifier_backend
} == %(py5)s)z:%(py2)s
{%(py2)s = %(py0)s.classifier_backend
} == %(py5)s)z8%(py2)s
{%(py2)s = %(py0)s.detector_backend
} == %(py5)s)z<%(py2)s
{%(py2)s = %(py0)s.grid_locator_backend
} == %(py5)sÚtext)z<%(py2)s
{%(py2)s = %(py0)s.completeness_backend
} == %(py5)s)r   ÚmodelÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚanthropic_api_keyÚanthropic_auth_tokenÚopenai_api_keyÚllm_backendÚunifier_backendÚclassifier_backendÚdetector_backendÚgrid_locator_backendÚcompleteness_backend©r9   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s         r4   Útest_llm_defaultsr]   J   s~  € Ü‹€AØ�7‰7Ð�dÐ�dˆ?×××Òˆ7×××××Õˆ1×××Ñˆ1××Õˆ7××Ó�d××××××ÓØ×ÑÐ& $Ð& $Ð&×&×&×&Ò&Ð×&×&×&×&×&Õ&ˆ1×&×&×&Ñ&ˆ1×&×&Õ&Ð×&×&Ó& $×&×&×&×&×&×&Ó&Ø×!Ñ!Ð) TÐ) TÐ)×)×)×)Ò)Ð!×)×)×)×)×)Õ)ˆ1×)×)×)Ñ)ˆ1×)×)Õ)Ð!×)×)Ó) T×)×)×)×)×)×)Ó)Ø×ÑÐ#˜tÐ#˜tÐ#×#×#×#Ò#Ð×#×#×#×#×#Õ#ˆ1×#×#×#Ñ#ˆ1×#×#Õ#Ð×#×#Ó#˜t×#×#×#×#×#×#Ó#Ø�=‰=Ð!˜EÐ!˜EÑ!×!×!×!Ò!ˆ=×!×!×!×!×!Õ!ˆ1×!×!×!Ñ!ˆ1×!×!Õ!ˆ=×!×!Ó!˜E×!×!×!×!×!×!Ó!Ø×ÑÐ% Ð% Ñ%×%×%×%Ò%Ð×%×%×%×%×%Õ%ˆ1×%×%×%Ñ%ˆ1×%×%Õ%Ð×%×%Ó% ×%×%×%×%×%×%Ó%Ø×ÑÐ( 5Ð( 5Ñ(×(×(×(Ò(Ð×(×(×(×(×(Õ(ˆ1×(×(×(Ñ(ˆ1×(×(Õ(Ð×(×(Ó( 5×(×(×(×(×(×(Ó(Ø×ÑÐ& Ð& Ñ&×&×&×&Ò&Ð×&×&×&×&×&Õ&ˆ1×&×&×&Ñ&ˆ1×&×&Õ&Ð×&×&Ó& ×&×&×&×&×&×&Ó&Ø×!Ñ!Ð* UÐ* UÑ*×*×*×*Ò*Ð!×*×*×*×*×*Õ*ˆ1×*×*×*Ñ*ˆ1×*×*Õ*Ð!×*×*Ó* U×*×*×*×*×*×*Ó*à×!Ñ!Ð+ VÐ+ VÑ+×+×+×+Ò+Ð!×+×+×+×+×+Õ+ˆ1×+×+×+Ñ+ˆ1×+×+Õ+Ð!×+×+Ó+ V×+×+×+×+×+×+Ô+ó    c                  óŠ  • [        5       n U R                  U R                  U R                  U R                  U R
                  4nSo!U:H  o3(       do  [        R                  " SU4SX45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )N)ÚquberÚ	quber_devÚ	localhosti8  Ú	quber_ragrA   )z%(py1)s == %(py4)s)Úpy1Úpy4zassert %(py6)sÚpy6)r   ÚuserÚpasswordÚhostÚportÚdbrF   rG   rK   rL   rM   )r9   Ú@py_assert0rZ   Ú@py_assert2Ú@py_format5Ú@py_format7s         r4   Útest_db_defaults_match_legacyrp   Y   s¯   € Ü‹€AØ�F‰F�A—J‘J §¡¨¯©°·±Ð5ð ð :ð ð :ñ ÷ ó ïé ôÐ5÷ ñ ïé ðÐ5÷ ð ïé ðð :÷ ÷ ÷ ñ ïé ÷÷ ð r^   c                  óJ  • [        5       n U R                  nSn[        U5      o1U:H  oD(       Gd"  [        R                  " SU4SX45      S[
        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=p#U R                  nS	nS
o‡U-  o‘U	:H  oD(       dÏ  [        R                  " SU4SX45      S[
        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=n=p‰U R                  nS oqUL oD(       dº  [        R                  " SU4SX45      S[
        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=pGg )Nz	.cache/s3rA   )zO%(py2)s
{%(py2)s = %(py0)s.cache_dir
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r9   r   )r;   r<   re   rf   Úpy8zassert %(py10)sÚpy10é   i€Q )z?%(py2)s
{%(py2)s = %(py0)s.ttl_seconds
} == (%(py5)s * %(py7)s))r;   r<   r=   r?   r7   )z.%(py2)s
{%(py2)s = %(py0)s.region
} is %(py5)sr:   r>   r?   )r   Ú	cache_dirr   rF   rG   rH   rI   rJ   rK   rL   rM   Úttl_secondsÚregion)r9   rX   Ú@py_assert5Ú@py_assert7rZ   Ú@py_format9Ú@py_format11rY   Ú@py_assert6Ú@py_assert8r[   r\   s               r4   Ú#test_s3_cache_defaults_match_legacyr~   d   s§  € ÜÓ€AØ�;‰;Ð+˜{Ð+œ$˜{Ó+Ð+Ð+Ñ+×+×+×+Ó+ˆ;×+×+×+×+×+Õ+ˆ1×+×+×+Ñ+ˆ1×+×+Õ+ˆ;×+×+×+×+×+Ô+œ$×+×+×+Ñ+œ$×+×+Õ+˜{×+×+Ó+Ð+×+×+×+×+×+×+Õ+Ø�=‰=Ð%˜AÐ% Ð% ™IÐ%˜IÑ%×%×%×%Ò%ˆ=×%×%×%×%×%Õ%ˆ1×%×%×%Ñ%ˆ1×%×%Õ%ˆ=×%×%Ó%˜A×%×%Ó% ×%×%×%×%×%×%×%Ø�8‰8Ð�tÐ�tÐ×××Òˆ8×××××Õˆ1×××Ñˆ1××Õˆ8××Ó�t××××××Ôr^   c                  ót  • [        5       n U R                  nSo!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nSo!U:H  o3(       dº  [        R                  " SU4S	X45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )
NÚlocalrA   )z0%(py2)s
{%(py2)s = %(py0)s.provider
} == %(py5)sr9   r:   r>   r?   Úcuda)z.%(py2)s
{%(py2)s = %(py0)s.device
} == %(py5)s)r   ÚproviderrF   rG   rH   rI   rJ   rK   rL   rM   ÚdevicerW   s         r4   Útest_embedding_defaultsr„   k   sè   € ÜÓ€AØ�:‰:Ð ˜Ð ˜Ñ × × × Ò ˆ:× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ:× × Ó ˜× × × × × × Ó Ø�8‰8Ð�vÐ�vÑ×××Òˆ8×××××Õˆ1×××Ñˆ1××Õˆ8××Ó�v××××××Ôr^   c                  ó"
  • [        5       n U R                  nS o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nSo!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS	o!UL o3(       dº  [        R                  " SU4S
X45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nSo!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nS	o!UL o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )Nr7   )z5%(py2)s
{%(py2)s = %(py0)s.logfire_token
} is %(py5)sr9   r:   r>   r?   T)z6%(py2)s
{%(py2)s = %(py0)s.enable_logfire
} is %(py5)sF)z:%(py2)s
{%(py2)s = %(py0)s.trace_to_langsmith
} is %(py5)s)z9%(py2)s
{%(py2)s = %(py0)s.langsmith_api_key
} is %(py5)sÚdefaultrA   )z9%(py2)s
{%(py2)s = %(py0)s.langsmith_project
} == %(py5)s)z7%(py2)s
{%(py2)s = %(py0)s.langsmith_debug
} is %(py5)s)r   Úlogfire_tokenrF   rG   rH   rI   rJ   rK   rL   rM   Úenable_logfireÚtrace_to_langsmithÚlangsmith_api_keyÚlangsmith_projectÚlangsmith_debugrW   s         r4   Útest_observability_defaultsr�   q   s¸  € ÜÓ€AØ�?‰?Ð"˜dÐ"˜dÐ"×"×"×"Ò"ˆ?×"×"×"×"×"Õ"ˆ1×"×"×"Ñ"ˆ1×"×"Õ"ˆ?×"×"Ó"˜d×"×"×"×"×"×"Ó"Ø×ÑÐ#˜tÐ#˜tÐ#×#×#×#Ò#Ð×#×#×#×#×#Õ#ˆ1×#×#×#Ñ#ˆ1×#×#Õ#Ð×#×#Ó#˜t×#×#×#×#×#×#Ó#Ø×ÑÐ( 5Ð( 5Ð(×(×(×(Ò(Ð×(×(×(×(×(Õ(ˆ1×(×(×(Ñ(ˆ1×(×(Õ(Ð×(×(Ó( 5×(×(×(×(×(×(Ó(Ø×ÑÐ& $Ð& $Ð&×&×&×&Ò&Ð×&×&×&×&×&Õ&ˆ1×&×&×&Ñ&ˆ1×&×&Õ&Ð×&×&Ó& $×&×&×&×&×&×&Ó&Ø×ÑÐ+ )Ð+ )Ñ+×+×+×+Ò+Ð×+×+×+×+×+Õ+ˆ1×+×+×+Ñ+ˆ1×+×+Õ+Ð×+×+Ó+ )×+×+×+×+×+×+Ó+Ø×ÑÐ% Ð% Ð%×%×%×%Ò%Ð×%×%×%×%×%Õ%ˆ1×%×%×%Ñ%ˆ1×%×%Õ%Ð×%×%Ó% ×%×%×%×%×%×%Ô%r^   c                  ót  • [        5       n U R                  nSo!U:H  o3(       dº  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2U R                  nSo!U:H  o3(       dº  [        R                  " SU4S	X45      S[        R
                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=p2g )
NÚINFOrA   )z1%(py2)s
{%(py2)s = %(py0)s.log_level
} == %(py5)sr9   r:   r>   r?   rt   )z=%(py2)s
{%(py2)s = %(py0)s.max_concurrent_tables
} == %(py5)s)r	   Ú	log_levelrF   rG   rH   rI   rJ   rK   rL   rM   Úmax_concurrent_tablesrW   s         r4   Útest_root_defaultsr’   {   së   € Ü‹
€AØ�;‰;Ð ˜&Ð ˜&Ñ × × × Ò ˆ;× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ;× × Ó ˜&× × × × × × Ó Ø×"Ñ"Ð' aÐ' aÑ'×'×'×'Ò'Ð"×'×'×'×'×'Õ'ˆ1×'×'×'Ñ'ˆ1×'×'Õ'Ð"×'×'Ó' a×'×'×'×'×'×'Ô'r^   c                 ó`  • U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        [        5       nUR                  nSo2U:H  oD(       dº  [        R                  " S	U4S
X#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [        R                  " S	U4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [        R                  " S	U4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [        R                  " S	U4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCg )Nr   zclaude-haiku-4-5-20251001r   zsk-flatr   z
oauth-flatr   ÚmockrA   )z-%(py2)s
{%(py2)s = %(py0)s.model
} == %(py5)sr9   r:   r>   r?   )z9%(py2)s
{%(py2)s = %(py0)s.anthropic_api_key
} == %(py5)s)z<%(py2)s
{%(py2)s = %(py0)s.anthropic_auth_token
} == %(py5)srC   )Úsetenvr   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rR   ©r+   r9   rX   rY   rZ   r[   r\   s          r4   Ú test_flat_env_names_populate_llmr—   „   s  € Ø×ÑÐ(Ð*EÔFØ×ÑÐ*¨IÔ6Ø×ÑÐ-¨|Ô<Ø×ÑÐ.°Ô7Ü‹€AØ�7‰7Ð1Ð1Ð1Ð1Ñ1×1×1×1Ò1ˆ7×1×1×1×1×1Õ1ˆ1×1×1×1Ñ1ˆ1×1×1Õ1ˆ7×1×1Ó1Ð1×1×1×1×1×1×1Ó1Ø×ÑÐ+ )Ð+ )Ñ+×+×+×+Ò+Ð×+×+×+×+×+Õ+ˆ1×+×+×+Ñ+ˆ1×+×+Õ+Ð×+×+Ó+ )×+×+×+×+×+×+Ó+Ø×!Ñ!Ð1 \Ð1 \Ñ1×1×1×1Ò1Ð!×1×1×1×1×1Õ1ˆ1×1×1×1Ñ1ˆ1×1×1Õ1Ð!×1×1Ó1 \×1×1×1×1×1×1Ó1Ø×ÑÐ& Ð& Ñ&×&×&×&Ò&Ð×&×&×&×&×&Õ&ˆ1×&×&×&Ñ&ˆ1×&×&Õ&Ð×&×&Ó& ×&×&×&×&×&×&Ô&r^   c                 ó¼  • U R                  SS5        U R                  SS5        [        5       nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCg )Nr   Úur   Ú6543rA   )z,%(py2)s
{%(py2)s = %(py0)s.user
} == %(py5)sr9   r:   r>   r?   i�  )z,%(py2)s
{%(py2)s = %(py0)s.port
} == %(py5)s)r•   r   rg   rF   rG   rH   rI   rJ   rK   rL   rM   rj   r–   s          r4   Útest_flat_env_names_populate_dbr›   �   s  € Ø×Ñ�¨Ô,Ø×Ñ�¨Ô/Ü‹€AØ�6‰6Ð�SÐ�S‰=×××Òˆ6×××××Õˆ1×××Ñˆ1××Õˆ6××Ó�S××××××ÓØ�6‰6Ð�TÐ�T‰>×××Òˆ6×××××Õˆ1×××Ñˆ1××Õˆ6××Ó�T××××××Ôr^   c                 ó&  • U R                  SS5        [        5       oR                  nSo2U:H  oD(       d×  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pCg )	Nr"   ú	lf-legacyrA   ©zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s()
}.logfire_token
} == %(py7)sr   ©r;   r<   re   r?   úassert %(py9)sÚpy9©r•   r   r‡   rF   rG   rH   rI   rJ   rK   rL   rM   ©r+   rX   rZ   r|   rx   r\   Ú@py_format10s          r4   Útest_logfire_legacy_aliasr¥   ›   s™   € Ø×Ñ�¨Ô4Ü Ó"Ð?×0Ñ0Ð?°KÐ?°KÑ?×?×?×?Ò?Ð0×?×?×?×?×?Õ?Ô ×?×?×?Ñ?Ô ×?×?Õ?Ð"×?×?Ó?Ð0×?×?Ó?°K×?×?×?×?×?×?Ö?r^   c                 óJ  • U R                  SS5        U R                  SS5        [        5       oR                  nSo2U:H  oD(       d×  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=n=pCg )Nr"   r�   r!   zlf-canonicalrA   rž   r   rŸ   r    r¡   r¢   r£   s          r4   Ú'test_logfire_canonical_wins_over_legacyr§       sª   € Ø×Ñ�¨Ô4Ø×ÑÐ/°Ô@Ü Ó"ÐB×0Ñ0ÐB°NÐB°NÑB×B×B×BÒBÐ0×B×B×B×B×BÕBÔ ×B×B×BÑBÔ ×B×BÕBÐ"×B×BÓBÐ0×B×BÓB°N×B×B×B×B×B×BÖBr^   c                 ó&  • U R                  SS5        [        5       oR                  nSo2U:H  oD(       d×  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pCg )	Nr   zclaude-legacyrA   )zD%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s()
}.model
} == %(py7)sr   rŸ   r    r¡   )r•   r   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r£   s          r4   Ú/test_anthropic_model_legacy_alias_for_llm_modelr©   ¦   s–   € Ø×ÑÐ(¨/Ô:Ü‹=Ð1×ÑÐ1 /Ð1 /Ñ1×1×1×1Ò1Ð×1×1×1×1×1Õ1Œ;×1×1×1Ñ1Œ;×1×1Õ1ˆ=×1×1Ó1Ð×1×1Ó1 /×1×1×1×1×1×1Ö1r^   c                 ó&  • U R                  SS5        [        5       oR                  nSo2U:H  oD(       d×  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pCg )	Nr   z	us-east-1rA   )zE%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s()
}.region
} == %(py7)sr   rŸ   r    r¡   )r•   r   rw   rF   rG   rH   rI   rJ   rK   rL   rM   r£   s          r4   Ú#test_aws_region_alias_for_s3_regionr«   «   s—   € Ø×Ñ�| [Ô1ÜÓÐ2×#Ñ#Ð2 {Ð2 {Ñ2×2×2×2Ò2Ð#×2×2×2×2×2Õ2Œ?×2×2×2Ñ2Œ?×2×2Õ2Ð×2×2Ó2Ð#×2×2Ó2 {×2×2×2×2×2×2Ö2r^   Útoken)Ú1ÚtrueÚyesÚonÚTRUEÚOnÚYesc                 ó$  • U R                  SU5        [        5       o"R                  nSoCUL oU(       d×  [        R                  " SU4SX445      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTg )	Nr$   Tr7   ©zQ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s()
}.trace_to_langsmith
} is %(py7)sr   rŸ   r    r¡   ©r•   r   r‰   rF   rG   rH   rI   rJ   rK   rL   rM   ©r+   r¬   rX   rZ   r|   rx   r\   r¤   s           r4   Ú%test_trace_to_langsmith_truthy_tokensr¸   ³   sš   € à×ÑÐ+¨UÔ3Ü Ó"Ð=×5Ñ5Ð=¸Ð=¸Ð=×=×=×=Ò=Ð5×=×=×=×=×=Õ=Ô ×=×=×=Ñ=Ô ×=×=Õ=Ð"×=×=Ó=Ð5×=×=Ó=¸×=×=×=×=×=×=Ö=r^   )Ú0ÚfalseÚnoÚoffÚ c                 ó$  • U R                  SU5        [        5       o"R                  nSoCUL oU(       d×  [        R                  " SU4SX445      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTg )	Nr$   Fr7   rµ   r   rŸ   r    r¡   r¶   r·   s           r4   Ú%test_trace_to_langsmith_falsey_tokensr¿   ¹   sš   € à×ÑÐ+¨UÔ3Ü Ó"Ð>×5Ñ5Ð>¸Ð>¸Ð>×>×>×>Ò>Ð5×>×>×>×>×>Õ>Ô ×>×>×>Ñ>Ô ×>×>Õ>Ð"×>×>Ó>Ð5×>×>Ó>¸×>×>×>×>×>×>Ö>r^   c                 ó  • U R                  SS5        U R                  SS5        [        5       nUR                  o"R                  nSoCU:H  oU(       dÏ  [        R
                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=n=pTUR                  o"R                  nSoCU:H  oU(       dÏ  [        R
                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=n=pTUR                  n[        U[        5      oU(       Gd@  SS[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S.-  n	[        [        R                  " U	5      5      eS =p…g )Nr   zsk-rootr   Úrag2rA   )zR%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.llm
}.anthropic_api_key
} == %(py7)sr9   rŸ   r    r¡   )zB%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.db
}.db
} == %(py7)szNassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.obs
}, %(py4)s)
}Ú
isinstancer   )r;   rd   Úpy3re   rf   )r•   r	   ÚllmrN   rF   rG   rH   rI   rJ   rK   rL   rM   rk   ÚobsrÂ   r   )
r+   r9   rX   rZ   r|   rx   r\   r¤   rm   ro   s
             r4   Útest_root_nests_all_groupsrÆ   Â   sÛ  € Ø×ÑÐ*¨IÔ6Ø×Ñ�} fÔ-Ü‹
€AØ�5‰5Ð/×"Ñ"Ð/ iÐ/ iÑ/×/×/×/Ò/Ð"×/×/×/×/×/Õ/ˆ1×/×/×/Ñ/ˆ1×/×/Õ/ˆ5×/×/Ó/Ð"×/×/Ó/ i×/×/×/×/×/×/Õ/Ø�4‰4Ð�7‰7Ð�fÐ�fÑ×××Òˆ7×××××Õˆ1×××Ñˆ1××Õˆ4××Óˆ7××Ó�f××××××ÕØ—e‘eÐ3Œ:�eÔ2Ó3Ð3Ö3×3×3×3×3×3Ñ3Œ:×3×3×3Ñ3Œ:×3×3×3×3×3Ö3�a×3×3×3Ñ3�a×3×3Õ3�e×3×3×3×3×3Ô3Ô2×3×3×3Ñ3Ô2×3×3Õ3Ð3×3×3×3×3×3Ó3r^   c                  ót  • [        5       n [        5       oUL o"(       Gd  [        R                  " SU4SX45      S[        R                  " 5       ;   d  [        R
                  " [         5      (       a  [        R                  " [         5      OS[        R                  " U 5      S[        R                  " 5       ;   d  [        R
                  " [         5      (       a  [        R                  " [         5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n =p!g )Nr7   )z@%(py2)s
{%(py2)s = %(py0)s()
} is %(py6)s
{%(py6)s = %(py4)s()
}r
   )r;   r<   re   rf   zassert %(py8)srr   )	r
   rF   rG   rH   rI   rJ   rK   rL   rM   )rX   rx   rZ   ro   rz   s        r4   Útest_get_settings_is_cachedrÈ   Ë   s“   € Ü‹>Ð+œ\›^Ð+˜^Ð+×+×+×+Ó+ˆ>×+×+×+×+×+Õ+Œ<×+×+×+Ñ+Œ<×+×+Õ+ˆ>×+×+×+×+×+Ô+œ\×+×+×+Ñ+œ\×+×+Õ+˜^×+×+×+×+×+×+Ô+r^   ))Ú__doc__ÚbuiltinsrH   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterF   Úpathlibr   ÚpytestÚquber.settingsr   r   r   r   r   r	   r
   r/   ÚfixtureÚMonkeyPatchr5   r]   rp   r~   r„   r�   r’   r—   r›   r¥   r§   r©   r«   ÚmarkÚparametrizeÚstrr¸   r¿   rÆ   rÈ   © r^   r4   Ú<module>r×      s|  ðñ÷ „ Õ ã ÷÷ ñ ò €ðF ‡‚˜Ñð˜f×0Ñ0ð ¸Dó ó ðò,òòòò&ò(ð	'°&×2DÑ2Dô 	'ð°×1CÑ1Cô ð@¨6×+=Ñ+=ô @ð
C¸×9KÑ9Kô Cð2À×ASÑASô 2ð
3°V×5GÑ5Gô 3ð ‡�×Ñ˜Ò"QÓRð>°v×7IÑ7Ið >ÐRUó >ó Sð>ð
 ‡�×Ñ˜Ò"AÓBð?°v×7IÑ7Ið ?ÐRUó ?ó Cð?ð4¨F×,>Ñ,>ô 4ó,r^   