+
    5mj.  c                     ^ RI Ht ^ RIt^ RIHu Ht ^ RIt^ RI	t	^ RI
t
^ RIHt ^ RIt^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ R	IHtHtH t H!t!H"t" R
 R lt#]PH                  ! RR7      R R l4       t%R R lt&R R lt'R R lt(R R lt)R R lt*R R lt+R R lt,R R lt-R  R! lt.R" R# lt/R$ R% lt0R& R' lt1R( R) lt2R* R+ lt3R, R- lt4R. R/ lt5R0 R1 lt6R2 R3 lt7R4 R5 lt8R6 R7 lt9R8 R9 lt: ! R: R;4      t;RRR< R= llt<R> R? lt=R@ RA lt>RB RC lt?RD RE lt@RF RG ltARH RI ltBRJ RK ltCRL RM ltDRN RO ltERP RQ ltFR# )S    )annotationsN)PathAccount
AccountRef)pin_account_uuidpinned_account_uuid)ClaudeHealthClientTokenIdentity)ClaudeOAuthAuthErrorClaudeOAuthLoggedOutErrorClaudeOAuthTransportErrorUsageReading)AccountSnapshotExtraUsageSummaryHealthStatus
NamedLimitSpendSummaryc                    V ^8  d   QhRRRR/# )   homer   returnr    )formats   "j/home/user/overdeck-private-tests/workstation-ai-broad2/modules/systray/tests/test_claude_health_client.py__annotate__r      s      4 G     c                6    \        \        R R4      RV RRR4      # )claudeaviAviavi@example.commaxacct_123r   )r   s   &r   _accountr%      s(    8U# r   T)autousec               $    V ^8  d   QhRRRRRR/# r   monkeypatchpytest.MonkeyPatchtmp_pathr   r   Noner   )r   s   "r   r   r   )   s#      ); t PT r   c                d   a R  V3R llpV P                  RV4       V P                  RR 4       R# )c               $    V ^8  d   QhRRRRRR/# )r   selfobjectpathr   r   
str | Noner   )r   s   "r   r   -_default_owner_identity.<locals>.__annotate__*   s!     ! !F !$ !: !r   c                P   <  VP                  S4       R#   \         d     R # i ; i)Ntest-owner-uuid)relative_to
ValueError)r/   r1   r+   s   &&r   fake_account_uuid_for6_default_owner_identity.<locals>.fake_account_uuid_for*   s/    	X& !  		s    %%9claude_health_client.ClaudeTokenIdentity.account_uuid_for7claude_health_client.ClaudeTokenIdentity.identify_tokenc                    \        R R4      # )r5   Nr
   )r/   _tokens   &&r   <lambda>)_default_owner_identity.<locals>.<lambda>7   s    ]+<dCr   N)setattr)r)   r+   r8   s   &f r   _default_owner_identityrA   (   s9    ! ! C ACr   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   ;   s0     kI kI#kIkI 
kIr   c                  a" VR ,          pVP                  4        VR,          P                  \        P                  ! RR^xRR/RRRcRR/RR	R
R^7RRRRRR/RR	RR^XRRRR/RRRR^
RRRR/RRRR^2RR RR!/R"R#/4      R$R%7       . o"R& V"3R' llpV P	                  R(V4       V P	                  R)R* 4       \        4       P                  \        V4      4      p\        P                  p^dp^ pR+pR,p	R-p
R#p\        RR.^dR+R4      \        RR/^ R,R4      \        RR
^7R0R4      3pRpR1pRpRp\        VVVVR27      pRpR3pR pR!p\        VVVVR47      p\        VVVVV	V
VVVVR57
      pVV8H  pV'       Eg   \        P                  ! RdV3ReVV34      / R6R7\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MR7bR8R9\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MR9bR:R;\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MR;bR<\        P&                  ! V4      bR=\        P&                  ! V4      bR>\        P&                  ! V4      bR?\        P&                  ! V4      bR@\        P&                  ! V	4      bRA\        P&                  ! V
4      bRB\        P&                  ! V4      bRC\        P&                  ! V4      bRDRE\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MREbRF\        P&                  ! V4      bRG\        P&                  ! V4      bRH\        P&                  ! V4      bRI\        P&                  ! V4      bRJ\        P&                  ! V4      bRKRL\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MRLRM\        P&                  ! V4      RN\        P&                  ! V4      RO\        P&                  ! V4      RP\        P&                  ! V4      RQ\        P&                  ! V4      RR\        P&                  ! V4      /C,          pRSRTV/,          p\)        \        P*                  ! V4      4      hR#;p;p;p;p;p;p	;p
;p;p;p;p;p;p;p;p;p;p;p;pp\-        S"4      p^pVV8H  qU'       Eg   \        P                  ! RdV3RfVV34      R6RU\         P"                  ! 4       9   g!   \        P$                  ! \,        4      '       d   \        P&                  ! \,        4      MRURVRW\         P"                  ! 4       9   g   \        P$                  ! S"4      '       d   \        P&                  ! S"4      MRWR:\        P&                  ! V4      RX\        P&                  ! V4      /,          pRYRZV/,          p\)        \        P*                  ! V4      4      hR#;p;ppS"^ ,          R[,          p. RgOp VV 8H  pV'       gz   \        P                  ! RdV3RhVV 34      RV\        P&                  ! V4      R\\        P&                  ! V 4      /,          p!R]RXV!/,          p\)        \        P*                  ! V4      4      hR#;p;pp S"^ ,          R^,          pR1p VV 8H  pV'       gz   \        P                  ! RdV3RhVV 34      RV\        P&                  ! V4      R\\        P&                  ! V 4      /,          p!R]RXV!/,          p\)        \        P*                  ! V4      4      hR#;p;pp S"^ ,          R_,          R`,          p\/        V4      pVV8g  pV'       Eg   \        P                  ! RiV3RjVV34      RV\        P&                  ! V4      R:Ra\         P"                  ! 4       9   g!   \        P$                  ! \.        4      '       d   \        P&                  ! \.        4      MRaR\Rb\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MRbRX\        P&                  ! V4      /,          pRYRZV/,          p\)        \        P*                  ! V4      4      hR#;p;ppR## )kCLAUDE_HOMErate-limits-cache.json	five_hourpct	resets_at2026-07-01T12:00:00Z	seven_dayALjburst_windowgroupburstz2026-07-02T00:00:00ZactiveTignoredokinactive_windowotheri@LjFextra_usageusedg      @limitunithoursdisplayz3.5 / 10 hoursspendamountg     (@currencyUSDz$12.25 / $50unknownNutf-8encodingc               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# r   cmdz	list[str]checkboolcapture_outputtextenvzdict[str, str]timeoutfloatr    subprocess.CompletedProcess[str]r   )r   s   "r   r   Utest_fetch_returns_ok_snapshot_from_auth_status_and_limit_cache.<locals>.__annotate__l   sP     
 

 
 	

 
 
 
 
*
r   c                  < SP                  R V RVRV/4       \        P                  ! V ^ \        P                  ! RRRRRR/4      R	,           R
R7      # )rd   ri   rj   loggedInT
authMethodz	claude.aiapiProvider
firstParty
 args
returncodestdoutstderr)append
subprocessCompletedProcessjsondumps)rd   re   rg   rh   ri   rj   	run_callss   &$$$$$r   fake_runQtest_fetch_returns_ok_snapshot_from_auth_status_and_limit_cache.<locals>.fake_runl   sh     	%eS)WEF**:: +!<  
 	
r   #claude_health_client.subprocess.runclaude_health_client.time.timec                     R #    @TAr   r   r   r   r>   Qtest_fetch_returns_ok_snapshot_from_auth_status_and_limit_cache.<locals>.<lambda>       /r      P@A   `Ar   primary	secondaryg   jA      $@rU   rV   rW   rY   g      I@r[   rV   r\   rY   )
statusprimary_used_pctsecondary_used_pctprimary_reset_atsecondary_reset_at
checked_atdetailnamed_limitsrT   rZ   py0snapshotpy2r   py3r   py5py7py9py11py13py15py17py19py20r   py22py24py26py28py30py31r   py33py35py37py39py41py43zassert %(py45)spy45lenpy1r   py6assert %(py8)spy8rd   py4assert %(py6)srj   ri   CLAUDE_CONFIG_DIRstraccount_home==)a  %(py0)s == %(py43)s
{%(py43)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.OK
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, primary_reset_at=%(py11)s, secondary_reset_at=%(py13)s, checked_at=%(py15)s, detail=%(py17)s, named_limits=%(py19)s, extra_usage=%(py30)s
{%(py30)s = %(py20)s(used=%(py22)s, limit=%(py24)s, unit=%(py26)s, display=%(py28)s)
}, spend=%(py41)s
{%(py41)s = %(py31)s(amount=%(py33)s, limit=%(py35)s, currency=%(py37)s, display=%(py39)s)
})
}z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   authr   z--jsonz%(py1)s == %(py4)s!=)z0%(py1)s != %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
})mkdir
write_textr}   r~   r@   r	   fetchr%   r   OKr   r   r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   r   )#r)   r+   r   r   r   @py_assert4@py_assert6@py_assert8@py_assert10@py_assert12@py_assert14@py_assert16@py_assert18@py_assert21@py_assert23@py_assert25@py_assert27@py_assert29@py_assert32@py_assert34@py_assert36@py_assert38@py_assert40@py_assert42@py_assert1@py_format44@py_format46@py_assert2@py_assert5@py_format7@py_format9@py_assert0@py_assert3@py_format5r   s#   &&                                @r   ?test_fetch_returns_ok_snapshot_from_auth_status_and_limit_cacher   ;   s    m+L,,88

3!7 2 W2!7dt! "W2e	$ CRG/	  eR~	 4E#%	
L O 9 (R *,I
 
0 =xH8:QR!#))(<*@AH   &	
 ( #  {IsL$G{KL$G~wL$G
    !" %# &$	
( )* +, -. #/& "	
'%'"



' 8    2 38   2 3 2 38  2 38  2 3 2 3  2 3  2 3 2 3 2 3 2 3 2 3 2 3  2 3 &	 2 3
 ( 2 3 # 2 3  2 3
 2 3 2 3 & 2 3 & 2 3  2 3  2 3  ! 2 3" %# 2 3
 2 3 2 3& ' 2 3& ' 2 3( ) 2 3* + 2 3, - 2 3. #/ 2 3&
' 2 3      2 3      4 y>Q>Q>Q33yy>QQ<H"HH"HHHHHH"HHHHHHH"HHHHHHHHHQ<	"*d*"d*****"d***"***d********Q<23Hs<7HH37HHHHHH37HHHH3HHHHHHsHHHHsHHHHHHH<HHHH<HHH7HHHHHHHHHr   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r      s&     : :#:: 
:r   c                	  a VR ,          oSP                  4        SR,          P                  RRR7       SR,          P                  RRR7       SR,          P                  RRR7       R	 V3R
 llpV P                  RV4       V P                  RR 4       V P                  RR 4       \        4       P	                  \        S4      4      pVP                  p\        P                  qTV8H  qf'       Eg   \        P                  ! R+V3R,WE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;reRpSV,          qfP"                  q! 4       q'       * q'       g   RRR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /,          p\        \        P                   ! V4      4      hR;p;p;p	;r\$        P&                  pRp	SV	,          qP(                  pRq! VR7      q! V4      pRRR /R!R"/ //pVV8H  pV'       Eg   \        P                  ! R+V3R-VV34      RR#\        P                  ! 4       9   g!   \        P                  ! \$        4      '       d   \        P                  ! \$        4      MR#R\        P                  ! V4      R$R\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V	4      R\        P                  ! V4      R%\        P                  ! V4      R&\        P                  ! V4      R'\        P                  ! V4      R(\        P                  ! V4      /	,          pR)R*V/,          p\        \        P                   ! V4      4      hR;p;p	;p
;p;p;p;p;ppR# ).rD   .credentials.jsonzB{"claudeAiOauth":{"accessToken":"token","refreshToken":"refresh"}}r_   r`   zclaude.jsonzK{"oauthAccount":{"emailAddress":"avi@example.com"},"projects":{"/repo":{}}}rE   z{"five_hour":{"percent":10}}c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# rc   r   )r   s   "r   r   _test_fetch_does_not_leave_claude_cli_generated_dot_config_in_account_home.<locals>.__annotate__   sP     
 

 
 	

 
 
 
 
*
r   c               ~  < \        VR ,          4      pVS
8g  qw'       g   \        P                  ! RV3RVS
34      RR\        P                  ! 4       9   g   \        P
                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g   \        P
                  ! S
4      '       d   \        P                  ! S
4      MR/,          pRRV/,          p	\        \        P                  ! V	4      4      hRpVR	,          P                  R
RR7       \        P                  ! V ^ RRR7      # )r   r   
config_dirr   r   rt   assert %(py4)sr   N.claude.jsonz.{"firstStartTime":"now","migrationVersion":13}r_   r`   .{"loggedIn": true, "authMethod": "claude.ai"}
ru   r   )z%(py0)s != %(py2)s)r   r   r   r   r   r   r   r   r   r   r{   r|   )rd   re   rg   rh   ri   rj   r   r   @py_format3r   r   s   &$$$$$    r   r   [test_fetch_does_not_leave_claude_cli_generated_dot_config_in_account_home.<locals>.fake_run   s     #123
\)))))z\))))))z))))z)))))))\))))\))))))))	n	$00< 	1 	
 **D	
 	
r   r   z9claude_health_client.ClaudeOAuthSession.get_usage_readingc                $    \        R R^
//RR7      # )rF   percent
fake-tokenpayloadaccess_token)r   )_selfs   &r   r>   [test_fetch_does_not_leave_claude_cli_generated_dot_config_in_account_home.<locals>.<lambda>   s    l 9b/2%
r   r   c                     R # r   r   r   r   r   r>   r     r   r   r   r   r   r   r   r   r   r   Nr   zQassert not %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}r   r   r   oauthAccountemailAddressr"   projectsz/repor}   r   py10py12py14r   assert %(py19)sr   r   zF%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.OK
}z%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py12)s
{%(py12)s = %(py8)s
{%(py8)s = (%(py3)s / %(py5)s).read_text
}(encoding=%(py10)s)
})
} == %(py17)s)r   r   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   existsr}   loads	read_text)r)   r+   r   r   r   r   r   r   r   r   r   r   @py_assert7@py_assert9@py_assert11@py_assert13r   @py_assert15@py_format18@py_format20r   s   &&                  @r   Itest_fetch_does_not_leave_claude_cli_generated_dot_config_in_account_homer     s    m+L''33L 4  M!--U .  ,,88& 9 

 
, =xHC	
 8:QR!#))(<*@AH??-loo-o-----?------8----8---?------l----l---o---------7~-75575777777777777777777~777577777777777:: m |m3 >>  >P :PQ ):;WbMV Q V    Q V     4   4   :     |   |   m   >      P   Q    V         r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r      s+     X X#XX 
Xr   c                  a VR ,          oSP                  4        R R lp ! V3R lR4      pV P                  RV4       V P                  RV4       V P                  RR 4       \        4       P                  \	        S4      4      p\
        P                  p^@p^pR	pR
p	Rp
\        RR^@R	R4      \        RR^R
R4      3pRpRpRpRp\        VVVVR7      pRp\        VVVVV	V
VVVR7	      pVV8H  pV'       Eg   \        P                  ! RDV3REVV34      / RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRbRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRbRR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRbR\        P                  ! V4      bR\        P                  ! V4      bR \        P                  ! V4      bR!\        P                  ! V4      bR"\        P                  ! V	4      bR#\        P                  ! V
4      bR$\        P                  ! V4      bR%R&\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MR&bR'\        P                  ! V4      bR(\        P                  ! V4      bR)\        P                  ! V4      bR*\        P                  ! V4      bR+\        P                  ! V4      bR,\        P                  ! V4      bR-\        P                  ! V4      /C,          pR.R/V/,          p\!        \        P"                  ! V4      4      hR;p;p;p;p;p;p	;p
;p;p;p;p;p;p;pp\$        P&                  pR0pSV,          qfP(                  pR1pV! VR27      pV! V4      pRR3^@R4R5/RR3^R4R6/R7R8^R9^R:RR;R//pVV8H  pV'       Eg   \        P                  ! RDV3RFVV34      RR<\        P                  ! 4       9   g!   \        P                  ! \$        4      '       d   \        P                  ! \$        4      MR<R\        P                  ! V4      RR=\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MR=R\        P                  ! V4      R>\        P                  ! V4      R?\        P                  ! V4      R@\        P                  ! V4      RA\        P                  ! V4      R$\        P                  ! V4      /	,          pRBRCV/,          p\!        \        P"                  ! V4      4      hR;p;p;p;p;p;p;p;ppR# )GrD   c               $    V ^8  d   QhRRRRRR/# r   _r0   __r   rl   r   )r   s   "r   r   Ytest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.__annotate__   "     
 
V 
6 
.N 
r   c                 :    \         P                  ! . RO^ RRR7      # r   r   rt   ru   r   r{   r|   r  r  s   *,r   r   Utest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.fake_run   !    **7D	
 	
r   c                  F   < ] tR t^tR	R V 3R llltR R ltR R ltRtR# )
Xtest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.FakeSessionNc          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r   credentials_pathr   timeout_secsrk   	read_onlyrf   allow_rotationr   r,   r   )r   s   "r   r   etest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.FakeSession.__annotate__   s<     		( 		("		(  		( 			(
 !		( 		(r   c           	     	  < R pSV,          qqV8H  q'       g   \         P                  ! RV3RW34      RR\        P                  ! 4       9   g   \         P                  ! V4      '       d   \         P
                  ! V4      MRRR\        P                  ! 4       9   g   \         P                  ! S4      '       d   \         P
                  ! S4      MRR\         P
                  ! V4      /,          p	RRV	/,          p
\        \         P                  ! V
4      4      hR;p;rgR	qV8H  q'       g   \         P                  ! RV3RW+34      RR
\        P                  ! 4       9   g   \         P                  ! V4      '       d   \         P
                  ! V4      MR
R\         P
                  ! V4      /,          pRRV/,          p	\        \         P                  ! V	4      4      hR;rR# )r   r   r*  r   r   r   assert %(py7)sr   Nr   r+  r   assert %(py5)sr   r   z%(py0)s == (%(py2)s / %(py4)s)z%(py0)s == %(py3)sr   r   r   r   r   r   r   r   )r/   r*  r+  r,  r-  rotation_backup_pathr   r   r   @py_format6@py_format8r   @py_format4r   s   &&&&&&       r   __init__atest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.FakeSession.__init__   s     7JI|6I'II'IIIIII#IIIIII#IIII#IIIIIII|IIII|III6IIIIIIIII#''4'''''<''''''<''''<'''4''''''''r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r.         	U 	U| 	Ur   c                	8    \        V P                  4       R R7      # r   r   r   	get_usager/   s   &r   get_usage_readingjtest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.FakeSession.get_usage_reading      (8|TTr   c                   V ^8  d   QhRR/# r   r   dict[str, object]r   )r   s   "r   r   r.    s     	 	0 	r   c                	2    R R^@RR/RR^RR/RR^R^R	R
RR//# )rF   r   rH   rI   rJ   rK   rT   rU   rV   rW   rX   rY   2 / 5 hoursr   rB  s   &r   rA  btest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.FakeSession.get_usage  sQ    r!7 r AQG}	  r   r         @FFN__name__
__module____qualname____firstlineno__r9  rC  rA  __static_attributes__r   s   r   FakeSessionr'     s    		( 		(	U	 	r   rU  r   'claude_health_client.ClaudeOAuthSessionr   c                     R # r   r   r   r   r   r>   Utest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthy.<locals>.<lambda>  r   r   r   r   r   rF   r   TrJ   r          @rM  rX   rJ  r   N	r   r   r   r   r   r   r   rT   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   py18r   r   r   r   r   r   r   py32zassert %(py34)spy34rE   r_   r`   r   rH   rI   rK   rT   rU   rV   rW   rY   r}   r   r   r  r  r	  r
  r   r   )ah  %(py0)s == %(py32)s
{%(py32)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.OK
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, primary_reset_at=%(py11)s, secondary_reset_at=%(py13)s, checked_at=%(py15)s, named_limits=%(py17)s, extra_usage=%(py28)s
{%(py28)s = %(py18)s(used=%(py20)s, limit=%(py22)s, unit=%(py24)s, display=%(py26)s)
}, spend=%(py30)s)
}r  )r   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r  r  )r)   r+   r   rU  r   r   r   r   r   r   r   r   @py_assert19r   r   r   r   r   @py_assert31r   @py_format33@py_format35r  r  r  r  r  r  r  r   s   &&                           @r   Ctest_fetch_reads_live_usage_and_persists_cache_when_auth_is_healthyrb     s    m+L
 B =xHA;O8:QR!#))(<*@AH   &	
 ( # {Ir<F{K\4H
    " &!	
" #%'"

 # 8    $ %8   $ % $ %8  $ %8  $ % $ %  $ %  $ % $ % $ % $ % $ % $ %  $ % &	 $ %
 ( $ % # $ %
 $ % $ % & $ % & $ %  $ %  $ %  $ % " $ %
 $ %" # $ %      $ %     & :: &> |&>> II SZ ISZ[ :[\ r/
 	r
 	AQG}	
a \ a    \ a     4   4   :     |   |   &>   I   SZ   [   \    a         r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   A  s&     . .#.. 
.r   c           	       aa VR ,          pVP                  4        \        R4      o^ oV P                  \        R\	        R 4      4        ! VV3R lR4      pV P                  RV4       V P                  RR 4       \        4       pVP                  \        V4      4      pVP                  \        V4      4      pVP                  p^qV8H  q'       g   \        P                  ! RV	3RWx34      RR	\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR	R
\        P                  ! V4      R\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;rVP                  p^qV8H  q'       g   \        P                  ! RV	3RWx34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;r^pSV8H  qw'       g   \        P                  ! RV3RSV34      RR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;r|R# )rD   _auth_statusc                "    \         P                  # Nr   r   _path_creds_timeouts   &&&r   r>   Itest_fetch_reads_live_usage_on_every_successful_refresh.<locals>.<lambda>M      \__r   c                  H   < ] tR tRtR
R R lltR R ltR V V3R lltR	tR# )Otest_fetch_reads_live_usage_on_every_successful_refresh.<locals>.HealthySessioniP  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# 
r   _credentials_pathr   r+  rk   r,  rf   r-  r   r,   r   )r   s   "r   r   \test_fetch_reads_live_usage_on_every_successful_refresh.<locals>.HealthySession.__annotate__Q  <     	 	#	  	 		
 !	 	r   c                	    R # rg  r   r/   rs  r+  r,  r-  r5  s   &&&&&&r   r9  Xtest_fetch_reads_live_usage_on_every_successful_refresh.<locals>.HealthySession.__init__Q       r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   rt  [  r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  atest_fetch_reads_live_usage_on_every_successful_refresh.<locals>.HealthySession.get_usage_reading[  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   rt  ^       	 	0 	r   c                	<   < S^,          oRR\        S4      /RR^"//# )   rF   utilizationrJ   next)r/   usage_callsusage_valuess   &r   rA  Ytest_fetch_reads_live_usage_on_every_successful_refresh.<locals>.HealthySession.get_usage^  s0    1KmT,-?@mR0 r   r   rL  rN  )r  r  s   r   HealthySessionrp  P  s    		U	 	r   r  rV  r   c                     R # r   r   r   r   r   r>   rm  g  r   r   r   firstr   r   r0  r   Nsecondr  r   r1  )      r   z8%(py2)s
{%(py2)s = %(py0)s.primary_used_pct
} == %(py5)sr3  )r   iterr@   r	   staticmethodr   r%   r   r   r   r   r   r   r   r   r   )r)   r+   r   r  clientr  r  r   r   r   r6  r7  r   r8  r  r  s   &&            @@r   7test_fetch_reads_live_usage_on_every_successful_refreshr  A  s    m+L>LKDE , A>R8:QR!FLL,/0E\\(<01F!!'R'R'''''!''''''5''''5'''!'''R''''''''""(b(b((((("((((((6((((6((("(((b((((((((;!;!;;!r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   s  s&     *! *!#*!*! 
*!r   c                  a
a VR ,          pVP                  4        R.o
. o ! V3R lR4      pV P                  \        R\        R 4      4       V P                  RV4       V P                  RV
3R l4       \        4       pVP	                  \        V4      4       R	S
^ &   VP	                  \        V4      4       \        S4      p^qeV8H  qw'       Eg   \        P                  ! RV3RWV34      R
R\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rvR# )rD        @@c                  F   < ] tR tRtR
R V 3R llltR R ltR R ltR	tR# )@test_fetch_floors_a_zero_retry_after.<locals>.RateLimitedSessioni|  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# r)  r   )r   s   "r   r   Mtest_fetch_floors_a_zero_retry_after.<locals>.RateLimitedSession.__annotate__}  <     	1 	1"	1  	1 		1
 !	1 	1r   c                	*   < SP                  V4       R # rg  rz   r/   r*  r+  r,  r-  r5  r  s   &&&&&&r   r9  Itest_fetch_floors_a_zero_retry_after.<locals>.RateLimitedSession.__init__}       /0r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r    r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  Rtest_fetch_floors_a_zero_retry_after.<locals>.RateLimitedSession.get_usage_reading  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r         	 	0 	r   c                	    \        R RR7      h)1Claude OAuth usage request failed with status 429g        retry_after_secondsr   rB  s   &r   rA  Jtest_fetch_floors_a_zero_retry_after.<locals>.RateLimitedSession.get_usage  s    +C$' r   r   rL  rN  r  s   r   RateLimitedSessionr  |  s    	1 	1	U	 	r   r  re  c                "    \         P                  # rg  rh  )_homerk  rl  s   &&&r   r>   6test_fetch_floors_a_zero_retry_after.<locals>.<lambda>  rn  r   rV  r   c                    < S ^ ,          # r   r   clocks   r   r>   r    	    %(r   g     @r   r   r   r  r   r   r   r   Nr   r   )r   r@   r	   r  r   r%   r   r   r   r   r   r   r   r   r   )r)   r+   r   r  r  r   r   r   r   r   r  r  s   &&        @@r   $test_fetch_floors_a_zero_retry_afterr  s  sC    m+LIE K ( DE
 ACUV8:JK!F
LL,'(E!H
LL,'({ q q           3    3       {    {      q        r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s+     F F#FF 
Fr   c                X  aaa VR ,          pVP                  4        VR,          pVP                  RRR7       \        P                  ! VR%4       R.o. o. oR V3R llp ! V3R	 lR
4      pV P	                  \
        R\        V4      4       V P	                  RV4       V P	                  RV3R l4       \        4       pVP                  \        V4      4      pRS^ &   VP                  \        V4      4      pRS^ &   VP                  \        V4      4      p	VP                  p
\        P                  qV8H  q'       Eg   \        P                  ! R&V3R'W34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V
4      RR\        P                  ! 4       9   g!   \        P                   ! \        4      '       d   \        P"                  ! \        4      MRR\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rVP(                  p
^qV8H  q'       g   \        P                  ! R&V3R(W34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V
4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rVP*                  p
^2qV8H  q'       g   \        P                  ! R&V3R)W34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V
4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rVP,                  p
RqV8H  q'       g   \        P                  ! R&V3R*W34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V
4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rW8H  q'       g   \        P                  ! R&V
3R+W34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRRR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MR/,          pRRV/,          p\%        \        P&                  ! V4      4      hRp
V	P                  p
\        P.                  qV8H  q'       Eg   \        P                  ! R&V3R,W34      RR\        P                  ! 4       9   g   \        P                   ! V	4      '       d   \        P"                  ! V	4      MRR\        P"                  ! V
4      RR\        P                  ! 4       9   g!   \        P                   ! \        4      '       d   \        P"                  ! \        4      MRR\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rV	P(                  p
^qV8H  q'       g   \        P                  ! R&V3R(W34      RR\        P                  ! 4       9   g   \        P                   ! V	4      '       d   \        P"                  ! V	4      MRR\        P"                  ! V
4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rV	P*                  p
^(qV8H  q'       g   \        P                  ! R&V3R)W34      RR\        P                  ! 4       9   g   \        P                   ! V	4      '       d   \        P"                  ! V	4      MRR\        P"                  ! V
4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p
;rW"V.pSV8H  q'       g   \        P                  ! R&V
3R-SV34      RR \        P                  ! 4       9   g   \        P                   ! S4      '       d   \        P"                  ! S4      MR R!\        P"                  ! V4      /,          pR"RV/,          p\%        \        P&                  ! V4      4      hR;p
pVR#,          VR#,          .pSV8H  q'       g   \        P                  ! R&V
3R-SV34      RR$\        P                  ! 4       9   g   \        P                   ! S4      '       d   \        P"                  ! S4      MR$R!\        P"                  ! V4      /,          pR"RV/,          p\%        \        P&                  ! V4      4      hR;p
pR# ).rD   rE   7{"five_hour":{"percent":25},"seven_day":{"percent":50}}r_   r`         Y@r  c               (    V ^8  d   QhRRRRRRRR/# )r   r1   r   rs  _timeout_secsrk   r   r   r   )r   s   "r   r   Stest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.__annotate__  s,      '+<A	r   c                F   < SP                  V 4       \        P                  # rg  )rz   r   r   )r1   rs  r  
auth_callss   &&&r   fake_auth_statusWtest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.fake_auth_status  s     	$r   c                  L   < ] tR tRtR
R V 3R llltR R ltR V 3R lltR	tR# )Ytest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.RateLimitedSessioni  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# r)  r   )r   s   "r   r   ftest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.RateLimitedSession.__annotate__  r  r   c                	*   < SP                  V4       R # rg  r  r  s   &&&&&&r   r9  btest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.RateLimitedSession.__init__  r  r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r    r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  ktest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.RateLimitedSession.get_usage_reading  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r    s     		 		0 		r   c                	R   < \        S4      ^8X  d   \        RRR7      hRR^/RR^(//# )r  r       {@r  rF   r  rJ   )r   r   r/   r  s   &r   rA  ctest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.RateLimitedSession.get_usage  sC    ;1$/G(- 
 mR0mR0 r   r   rL  rN  r  s   r   r  r    s    	1 	1	U		 		r   r  re  rV  r   c                    < S ^ ,          # r  r   r  s   r   r>   Otest_fetch_honors_retry_after_without_marking_old_cache_fresh.<locals>.<lambda>  r  r   g     @g     @r   r  r   r   r   r   r   r   Nr   r0  r   r  r   thirdr  r   r1  r   r  )r  r  r   zK%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.UNKNOWN
}r  z:%(py2)s
{%(py2)s = %(py0)s.secondary_used_pct
} == %(py5)s)z2%(py2)s
{%(py2)s = %(py0)s.checked_at
} == %(py5)s)z%(py0)s == %(py2)sr  r3  )r   r   osutimer@   r	   r  r   r%   r   r   UNKNOWNr   r   r   r   r   r   r   r   r   r   r   r   )r)   r+   r   
cache_pathr  r  r  r  r  r  r   r   r   r   r   r   r6  r7  r   r   r   r8  r  r  r  s   &&                    @@@r   =test_fetch_honors_retry_after_without_marking_old_cache_freshr    s"    m+L 88JA   HHZ(IEJ K  2 *NLIY<Z[ACUV8:JK!FLL,/0EE!H\\(<01FE!HLL,/0E<</</////////<//////5////5///<//////<////<////////////!!'R'R'''''!''''''5''''5'''!'''R''''''''##)r)r)))))#))))))5))))5)))#)))r))))))))$u$u$$$$$$$$$$$5$$$$5$$$$$$u$$$$$$$$?666UU<<*<??*?*****<******5****5***<******<****<***?********!!'R'R'''''!''''''5''''5'''!'''R''''''''##)r)r)))))#))))))5))))5)))#)))r))))))))&lCC:CCCCCC:CCCCCCC:CCCC:CCCCCCCCCCCC**** ;     ;      ;   ;            r   c               $    V ^8  d   QhRRRRRR/# )r   r)   r*   auth_statusr   r   r,   r   )r   s   "r   r   r     s(     S S1 S SQU Sr   c                   a V P                  \        R \        V3R l4      4        ! R R4      pV P                  RV4       V P                  RR 4       R# )re  c                   < S# rg  r   )rj  rk  rl  r  s   &&&r   r>   _reject_usage.<locals>.<lambda>  s    [r   c                  >    ] tR tRtR
R R lltR R ltR R ltR	tR# )&_reject_usage.<locals>.RejectedSessioni  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rr  r   )r   s   "r   r   3_reject_usage.<locals>.RejectedSession.__annotate__  ru  r   c                	    R # rg  r   rw  s   &&&&&&r   r9  /_reject_usage.<locals>.RejectedSession.__init__  ry  r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r    r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  8_reject_usage.<locals>.RejectedSession.get_usage_reading  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r    s     	\ 	\0 	\r   c                	    \        R 4      h)z1Claude OAuth usage request failed with status 403)r   rB  s   &r   rA  0_reject_usage.<locals>.RejectedSession.get_usage  s    &'Z[[r   r   rL  rN  r   r   r   RejectedSessionr    s    		U	\ 	\r   r  rV  r   c                     R # r   r   r   r   r   r>   r    r   r   N)r@   r	   r  )r)   r  r  s   &f r   _reject_usager    sQ    @A\ \" A?S8:QRr   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s+     W W#WW 
Wr   c                ,
   VR ,          pVP                  4        VR,          P                  RRR7       \        V \        P                  4       \        4       pVP                  \        V4      4      pVP                  p\        P                  qeV8H  qw'       Eg   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR	\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MR	R
\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvVP"                  p^qV
8H  qw'       g   \        P                  ! RV3RWZ34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;rzVP$                  p^2qV
8H  qw'       g   \        P                  ! RV3RWZ34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;rzVP&                  pRq! W*4      qP(                  pRqV8  pV'       EgW   \        P                  ! RV3RW34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR;p;p
;p;p;ppR# )rD   rE   r  r_   r`   r   r   r   r   r   r   r   r   Nr   r0  r   r   r  r   r   r   r  zassert %(py14)sr	  r   r  r  r  )>)z%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s._read_backoff
}(%(py3)s, %(py5)s)
}.retry_not_before
} > %(py12)s)r   r   r  r   r   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   _read_backoffretry_not_before)r)   r+   r   r  r   r   r   r   r   r   r   r6  r7  r   r   r  r   @py_format13@py_format15s   &&                 r   Ftest_fetch_keeps_limits_when_usage_is_rejected_but_cli_auth_is_healthyr    s    m+L,,88A 9  +|/!F||H\23H??-loo-o-----?------8----8---?------l----l---o--------$$*******$******8****8***$***********&&,",",,,,,&,,,,,,8,,,,8,,,&,,,",,,,,,,,VdV3VDDVVVVVVVDVVVVVV6VVVV6VVVVVVVVVVVVVVVVdVVV3VVVDVVVVVVVVVVVVr   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&     )8 )8#)8)8 
)8r   c                   VR ,          pVP                  4        VR,          P                  RRR7       V P                  \        R\	        R 4      4        ! R R4      pV P                  R	V4       V P                  R
R 4       \        4       P                  \        V4      4      pVP                  p\        P                  qeV8H  qw'       Eg   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p	\!        \        P"                  ! V	4      4      hR;p;rvVP$                  pRqV
8H  qw'       g   \        P                  ! RV3RWZ34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\!        \        P"                  ! V4      4      hR;p;rzR# )rD   rE   r  r_   r`   re  c                "    \         P                  # rg  rh  ri  s   &&&r   r>   ]test_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.<lambda>'  rn  r   c                  >    ] tR tRtR
R R lltR R ltR R ltR	tR# )etest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.LoggedOutSessioni*  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rr  r   )r   s   "r   r   rtest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.LoggedOutSession.__annotate__+  ru  r   c                	    R # rg  r   rw  s   &&&&&&r   r9  ntest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.LoggedOutSession.__init__+  ry  r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r  5  r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  wtest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.LoggedOutSession.get_usage_reading5  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r  8  s     	 	0 	r   c                	    \        R 4      h)z1Claude OAuth token refresh failed with status 401)r   rB  s   &r   rA  otest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthy.<locals>.LoggedOutSession.get_usage8  s    +C r   r   rL  rN  r   r   r   LoggedOutSessionr  *  s    		U	 	r   r  rV  r   c                     R # r   r   r   r   r   r>   r  >  r   r   r   r   r   r   r   r   r   r   Nauthentication requiredr   r0  r   r   zJ%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.BROKEN
}z.%(py2)s
{%(py2)s = %(py0)s.detail
} == %(py5)s)r   r   r@   r	   r  r   r%   r   r   BROKENr   r   r   r   r   r   r   r   r   )r)   r+   r   r  r   r   r   r   r   r   r   r6  r7  s   &&           r   Ktest_fetch_marks_server_rejected_token_broken_even_when_cli_auth_is_healthyr
    s    m+L,,88A 9  DE & ACST8:QR!#))(<*@AH??1l111111111?111111811118111?111111l1111l111111111111??777777777?777777877778777?777777777777r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   F  s&     - -#-- 
-r   c                $  a VR ,          pVP                  4        VR,          P                  RRR7       ^ o ! V3R lR4      pV P                  \        R\	        R 4      4       V P                  R	V4       V P                  R
R 4       \        4       P                  \        V4      4       \        4       P                  \        V4      4       ^pSV8H  qU'       g   \        P                  ! RV3RSV34      RR\        P                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;rTR# )rD   rE   r  r_   r`   c                  F   < ] tR tRtR
R R lltR R ltR V 3R lltR	tR# )Ztest_fetch_honors_retry_after_across_separate_client_instances.<locals>.RateLimitedSessioniR  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rr  r   )r   s   "r   r   gtest_fetch_honors_retry_after_across_separate_client_instances.<locals>.RateLimitedSession.__annotate__S  ru  r   c                	    R # rg  r   rw  s   &&&&&&r   r9  ctest_fetch_honors_retry_after_across_separate_client_instances.<locals>.RateLimitedSession.__init__S  ry  r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r  ]  r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  ltest_fetch_honors_retry_after_across_separate_client_instances.<locals>.RateLimitedSession.get_usage_reading]  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r  `  r~  r   c                	0   < S^,          o\        RRR7      hr  r  r  r  r  r  s   &r   rA  dtest_fetch_honors_retry_after_across_separate_client_instances.<locals>.RateLimitedSession.get_usage`       1K+C$) r   r   rL  rN  r  s   r   r  r  R      		U	 	r   r  re  c                "    \         P                  # rg  rh  ri  s   &&&r   r>   Ptest_fetch_honors_retry_after_across_separate_client_instances.<locals>.<lambda>k  rn  r   rV  r   c                     R # r  r   r   r   r   r>   r  n      'r   r   r  r   r1  r   Nr   r3  )r   r   r@   r	   r  r   r%   r   r   r   r   r   r   r   r   )	r)   r+   r   r  r   r   r8  r6  r  s	   &&      @r   >test_fetch_honors_retry_after_across_separate_client_instancesr!  F  s    m+L,,88A 9  K , DE
 ACUV8/Jx56x56;!;!;;!r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   v  s&      # 
r   c                   VR ,          pVP                  4        VR,          P                  RRR7       \        V \        P                  4       \        4       P                  \        V4      4      p\        P                  pRpRpRpRp\        VVVVVR7      qV	8H  q'       Eg   \        P                  ! RV
3RW934      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      /	,          pRRV/,          p\!        \        P"                  ! V4      4      hR;p
;p;p;p;p;rR# )rD   rE   r  r_   r`   Nr   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   assert %(py17)sr   r   z%(py0)s == %(py15)s
{%(py15)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.BROKEN
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, checked_at=%(py11)s, detail=%(py13)s)
})r   r   r  r   r  r	   r   r%   r	  r   r   r   r   r   r   r   r   r   )r)   r+   r   r   r   r   r   r   r   r   r   @py_format16r  s   &&           r   Jtest_fetch_marks_usage_auth_rejection_broken_when_cli_auth_is_inconclusiver(  v  s:    m+L,,88A 9  +|334!#))(<*@AH ""   #	
 )""(      8     8   8                 "         #	  
 )            r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&     2 2#22 
2r   c                	  aa VR ,          pVP                  4        VR,          P                  RRR7       \        \        P                  \        P
                  34      o^ o ! V3R lR4      pV P                  \        R\        V3R l4      4       V P                  R	V4       V P                  R
R 4       \        4       pVP                  \        V4      4       VP                  \        V4      4      pVP                  p\        P
                  qvV8H  q'       Eg   \        P                  ! RV3RWg34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V4      RR\        P                  ! 4       9   g!   \        P                   ! \        4      '       d   \        P"                  ! \        4      MRR\        P"                  ! V4      /,          p	RRV	/,          p
\%        \        P&                  ! V
4      4      hR;p;rVP(                  pRqVJ q'       g   \        P                  ! RV3RWk34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;rVP*                  pRqVJ q'       g   \        P                  ! RV3RWk34      RR\        P                  ! 4       9   g   \        P                   ! V4      '       d   \        P"                  ! V4      MRR\        P"                  ! V4      R\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;r^pSV8H  qf'       g   \        P                  ! RV3R SV34      RR\        P                  ! 4       9   g   \        P                   ! S4      '       d   \        P"                  ! S4      MRR\        P"                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;rnR# )!rD   rE   r  r_   r`   c                  F   < ] tR tRtR
R R lltR R ltR V 3R lltR	tR# )Otest_fetch_detects_broken_auth_during_usage_backoff.<locals>.RateLimitedSessioni  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# rr  r   )r   s   "r   r   \test_fetch_detects_broken_auth_during_usage_backoff.<locals>.RateLimitedSession.__annotate__  ru  r   c                	    R # rg  r   rw  s   &&&&&&r   r9  Xtest_fetch_detects_broken_auth_during_usage_backoff.<locals>.RateLimitedSession.__init__  ry  r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r.    r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  atest_fetch_detects_broken_auth_during_usage_backoff.<locals>.RateLimitedSession.get_usage_reading  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r.    r~  r   c                	0   < S^,          o\        RRR7      hr  r  r  s   &r   rA  Ytest_fetch_detects_broken_auth_during_usage_backoff.<locals>.RateLimitedSession.get_usage  r  r   r   rL  rN  r  s   r   r  r,    r  r   r  re  c                   < \        S4      # rg  r  )rj  rk  rl  auth_statusess   &&&r   r>   Etest_fetch_detects_broken_auth_during_usage_backoff.<locals>.<lambda>  s
    T-5Hr   rV  r   c                     R # r  r   r   r   r   r>   r9    r   r   r   r  r   r   r   r   r   r   Nr   r0  r   r  r   r1  r   r  isz8%(py2)s
{%(py2)s = %(py0)s.primary_used_pct
} is %(py5)s)z:%(py2)s
{%(py2)s = %(py0)s.secondary_used_pct
} is %(py5)sr3  )r   r   r  r   r   r	  r@   r	   r  r   r%   r   r   r   r   r   r   r   r   r   r   r   )r)   r+   r   r  r  r  r   r   r   r   r   r   r6  r7  r   r8  r8  r  s   &&              @@r   3test_fetch_detects_broken_auth_during_usage_backoffr>    s    m+L,,88A 9  ,//<+>+>?@MK , HI
 ACUV8/J!F
LL,'(\\(<01F==/L/////////=//////6////6///=//////L////L////////////""*d*d*****"******6****6***"***d********$$,,,,,,,$,,,,,,6,,,,6,,,$,,,,,,,,,,,;!;!;;!r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&     ( (#(( 
(r   c                H   VR ,          pVP                  4        VR,          P                  \        P                  ! RRRRR/RRRRR	//4      R
R7       R R lpV P	                  RV4       V P	                  RR 4       \        4       P                  \        V4      4      pVP                  p^qeV8H  qw'       g   \        P                  ! R"V3R#WV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvVP"                  p^,qeV8H  qw'       g   \        P                  ! R"V3R$WV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvVP$                  R,          p
\'        RR^RR4      \'        RR^,RR4      3qzV8H  q'       gy   \        P                  ! R"V3R%W34      R\        P                  ! V
4      R\        P                  ! V4      /,          pR R!V/,          p\        \        P                   ! V4      4      hR;p
;rR# )&rD   rE   rF   r  g      5@rH   z 2026-07-03T19:50:00.094983+00:00rJ   g      F@z 2026-07-07T10:00:00.095013+00:00r_   r`   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Ttest_fetch_maps_claude_utilization_limits_to_usage_percentages.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^ RRR7      # r!  r"  r#  s   *,r   r   Ptest_fetch_maps_claude_utilization_limits_to_usage_percentages.<locals>.fake_run  r%  r   r   r   c                     R # r   r   r   r   r   r>   Ptest_fetch_maps_claude_utilization_limits_to_usage_percentages.<locals>.<lambda>  r   r   r   r   r   r   r0  r   N:Nr   Nr   g4ATr   g3Ar   r   r   r   r   r  r  r   )r   r   r}   r~   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   )r)   r+   r   r   r   r   r   r   r6  r7  r   r   r   r   s   &&            r   >test_fetch_maps_claude_utilization_limits_to_usage_percentagesrG    sX    m+L,,88

!4!C !4!C		
  9  
 =xH8:QR!#))(<*@AH$$*******$******8****8***$***********&&,",",,,,,&,,,,,,8,,,,8,,,&,,,",,,,,,,,  $ ;	2/@$G;R1BDI)  )    $   $    )        r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&     : :#:: 
:r   c           	        VR ,          pVP                  4        VR,          P                  \        P                  ! RRR/RRR//4      RR7       R	 R
 lpV P	                  RV4       V P	                  RR 4       \        4       P                  \        V4      4      pVP                  pRqeV8H  qw'       g   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvVP"                  pRqeV8H  qw'       g   \        P                  ! RV3RWV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvR# )rD   rE   rF   r  g      (@rJ   g      A@r_   r`   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Vtest_fetch_defaults_missing_claude_reset_times_to_window_lengths.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^ RRR7      # r!  r"  r#  s   *,r   r   Rtest_fetch_defaults_missing_claude_reset_times_to_window_lengths.<locals>.fake_run  r%  r   r   r   c                     R # r   r   r   r   r   r>   Rtest_fetch_defaults_missing_claude_reset_times_to_window_lengths.<locals>.<lambda>  r   r   g   UAr   r   r   r   r0  r   Ng   JWAr   )z8%(py2)s
{%(py2)s = %(py0)s.primary_reset_at
} == %(py5)s)z:%(py2)s
{%(py2)s = %(py0)s.secondary_reset_at
} == %(py5)s)r   r   r}   r~   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   )
r)   r+   r   r   r   r   r   r   r6  r7  s
   &&        r   @test_fetch_defaults_missing_claude_reset_times_to_window_lengthsrP    s    m+L,,88

mT2mT2	
  9 
 =xH8:QR!#))(<*@AH$$7777777$777777877778777$77777777777&&9/9/99999&999999899998999&999/99999999r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     &      # 
r   c                   VR ,          pVP                  4        R R lpV P                  RV4       V P                  RR 4       \        4       P                  \	        V4      4      p\
        P                  pRpRpRpRp	\        VVVVV	R	7      qV
8H  q'       Eg   \        P                  ! RV3RWJ34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /	,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;rR# )rD   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Mtest_fetch_returns_broken_on_explicit_logged_out_status.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^RRR7      # )r   z*{"loggedIn": false, "authMethod": "none"}
rt   ru   r   r"  r#  s   *,r   r   Itest_fetch_returns_broken_on_explicit_logged_out_status.<locals>.fake_run  s!    **7@	
 	
r   r   r   c                     R # r   r   r   r   r   r>   Itest_fetch_returns_broken_on_explicit_logged_out_status.<locals>.<lambda>  r   r   Nr   r  r$  r   r   r   r   r   r   r   r   r   r   r   r   r%  r   r   r&  r   r@   r	   r   r%   r   r	  r   r   r   r   r   r   r   r   r   r)   r+   r   r   r   r   r   r   r   r   r   r   r'  r  s   &&            r   7test_fetch_returns_broken_on_explicit_logged_out_statusr\    3    m+L
 =xH8:QR!#))(<*@AH ""   #	
 )""(      8     8   8                 "         #	  
 )            r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   +  rR  r   c                   VR ,          pVP                  4        R R lpV P                  RV4       V P                  RR 4       \        4       P                  \	        V4      4      p\
        P                  pRpRpRpRp	\        VVVVV	R	7      qV
8H  q'       Eg   \        P                  ! RV3RWJ34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /	,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;rR# )rD   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Ftest_fetch_returns_broken_on_auth_rejection_text.<locals>.__annotate__2  r  r   c                 :    \         P                  ! . RO^RRR7      # )r   	not-json
z.Error: authentication required for Claude Coderu   r   r"  r#  s   *,r   r   Btest_fetch_returns_broken_on_auth_rejection_text.<locals>.fake_run2  s!    **7C	
 	
r   r   r   c                     R # r   r   r   r   r   r>   Btest_fetch_returns_broken_on_auth_rejection_text.<locals>.<lambda>;  r   r   Nr   r  r$  r   r   r   r   r   r   r   r   r   r   r   r   r%  r   r   r&  rZ  r[  s   &&            r   0test_fetch_returns_broken_on_auth_rejection_textrg  +  r]  r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   H  s&      # 
r   c                   VR ,          pVP                  4        R R lpV P                  RV4       V P                  RR 4       \        4       P                  \	        V4      4      p\
        P                  pRpRpRp\        VVVVR7      qV	8H  q'       Eg   \        P                  ! RV
3RWI34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p
;p;p;p;rR# )rD   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   @test_fetch_returns_unknown_on_auth_timeout.<locals>.__annotate__O  "     
 
V 
6 
.N 
r   c                 6    \         P                  ! . RORR7      hr   r   )rd   rj   r   r{   TimeoutExpiredr#  s   *,r   r   <test_fetch_returns_unknown_on_auth_timeout.<locals>.fake_runO      ''6
 	
r   r   r   c                     R # r   r   r   r   r   r>   <test_fetch_returns_unknown_on_auth_timeout.<locals>.<lambda>V  r   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   assert %(py15)sr   r   z%(py0)s == %(py13)s
{%(py13)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.UNKNOWN
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, checked_at=%(py11)s)
}r   r@   r	   r   r%   r   r  r   r   r   r   r   r   r   r   r   r)   r+   r   r   r   r   r   r   r   r   r   @py_format14r'  s   &&           r   *test_fetch_returns_unknown_on_auth_timeoutr{  H  s	    m+L
 =xH8:QR!#))(<*@AH ##   #	#"	     
 8  
  
 8  
 8  
  
   
   
  
  
  
 # 
  
    
  #	 
       
   r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   b  s&     )- )-#)-)- 
)-r   c                4  a VR ,          oSP                  4        R R lp ! V3R lR4      pV P                  RV4       V P                  RV4       V P                  RR 4       \        4       P                  \	        S4      4      pVP
                  p\        P                  qeV8H  qw'       Eg   \        P                  ! RV3RWV34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rvVP                   p^qV
8H  qw'       g   \        P                  ! RV3RWZ34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rzVP"                  p^"qV
8H  qw'       g   \        P                  ! RV3RWZ34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rzR# )rD   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Utest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.__annotate__i  rl  r   c                 6    \         P                  ! . RORR7      hrn  ro  r#  s   *,r   r   Qtest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.fake_runi  rr  r   c                  F   < ] tR tRtR
R V 3R llltR R ltR R ltR	tR# )Wtest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.HealthySessionio  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# r)  r   )r   s   "r   r   dtest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.HealthySession.__annotate__p  sC     	J 	J"	J  	J 		J
 !	J 	Jr   c           	     	:  < R pSV,          qqV8H  q'       g   \         P                  ! R	V3R
W34      RR\        P                  ! 4       9   g   \         P                  ! V4      '       d   \         P
                  ! V4      MRRR\        P                  ! 4       9   g   \         P                  ! S4      '       d   \         P
                  ! S4      MRR\         P
                  ! V4      /,          p	RRV	/,          p
\        \         P                  ! V
4      4      hR;p;rgR# )r   r   r*  r   r   r   r0  r   Nr   r2  r4  )r/   r*  r+  r,  r-  r5  r   r   r   r6  r7  r   s   &&&&&&     r   r9  `test_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.HealthySession.__init__p  s     7JI|6I'II'IIIIII#IIIIII#IIII#IIIIIII|IIII|III6IIIIIIIIIr   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r  z  r=  r   c                	8    \        V P                  4       R R7      # r?  r@  rB  s   &r   rC  itest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.HealthySession.get_usage_readingz  rE  r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r  }  r  r   c                	    R R^/RR^"//# )rF   r  rJ   r   rB  s   &r   rA  atest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.HealthySession.get_usage}  s     mR0mR0 r   r   rL  rN  rT  s   r   r  r  o  s    	J 	J	U	 	r   r  r   rV  r   c                     R # r   r   r   r   r   r>   Qtest_fetch_uses_live_usage_when_cli_auth_status_is_inconclusive.<locals>.<lambda>  r   r   r   r   r   r   r   r   r   r   Nr   r0  r   r   r  r  r  )r   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   )r)   r+   r   r  r   r   r   r   r   r   r   r6  r7  r   s   &&           @r   ?test_fetch_uses_live_usage_when_cli_auth_status_is_inconclusiver  b  s    m+L
 ( =xHA>R8:QR!#))(<*@AH??-loo-o-----?------8----8---?------l----l---o--------$$*******$******8****8***$***********&&,",",,,,,&,,,,,,8,,,,8,,,&,,,",,,,,,,,r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&      # 
r   c                   VR ,          pVP                  4        R R lpV P                  RV4       V P                  RR 4       \        4       P                  \	        V4      4      p\
        P                  pRpRpRp\        VVVVR7      qV	8H  q'       Eg   \        P                  ! RV
3RWI34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p
;p;p;p;rR# )rD   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Rtest_fetch_treats_transient_auth_service_failures_as_unknown.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^RRR7      # )r   rc  z$Auth service temporarily unavailableru   r   r"  r#  s   *,r   r   Ntest_fetch_treats_transient_auth_service_failures_as_unknown.<locals>.fake_run  s!    **79	
 	
r   r   r   c                     R # r   r   r   r   r   r>   Ntest_fetch_treats_transient_auth_service_failures_as_unknown.<locals>.<lambda>  r   r   Nr   ru  r   r   r   r   r   r   r   r   r   r   r   rv  r   r   rw  rx  ry  s   &&           r   <test_fetch_treats_transient_auth_service_failures_as_unknownr    s	    m+L
 =xH8:QR!#))(<*@AH ##   #	#"	     
 8  
  
 8  
 8  
  
   
   
  
  
  
 # 
  
    
  #	 
       
   r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&      # 
r   c                   VR ,          pVP                  4        VR,          P                  RRR7       R R lpV P                  RV4       V P                  RR	 4       \        4       P	                  \        V4      4      p\        P                  pR
pR
pRpRp	Rp
R
pR
p\        VVVVV	V
VVR7      qV8H  q'       Eg   \        P                  ! R V3R!WM34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                   ! V4      4      hR
;p;p;p;p;p;p	;p
;p;rR
# )"rD   rE   {r_   r`   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   ctest_fetch_returns_unknown_and_redacts_detail_when_usage_cache_is_unavailable.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^ RRR7      # )r   r   zsensitive backend detailru   r   r"  r#  s   *,r   r   _test_fetch_returns_unknown_and_redacts_detail_when_usage_cache_is_unavailable.<locals>.fake_run  s!    **7D-	
 	
r   r   r   c                     R # r   r   r   r   r   r>   _test_fetch_returns_unknown_and_redacts_detail_when_usage_cache_is_unavailable.<locals>.<lambda>  r   r   Nr   zlimits unavailable)r   r   r   r   r   r   rT   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   py21zassert %(py23)spy23r   r   )z%(py0)s == %(py21)s
{%(py21)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.UNKNOWN
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, checked_at=%(py11)s, detail=%(py13)s, named_limits=%(py15)s, extra_usage=%(py17)s, spend=%(py19)s)
})r   r   r@   r	   r   r%   r   r  r   r   r   r   r   r   r   r   r   )r)   r+   r   r   r   r   r   r   r   r   r   r   r   @py_assert20r   @py_format22@py_format24s   &&               r   Mtest_fetch_returns_unknown_and_redacts_detail_when_usage_cache_is_unavailabler    s    m+L,,88w8O
 =xH8:QR!#))(<*@AH ##		  	 #		
 $	 	 	 	#"#	 	 	 	 	 	 	8 	 	 	 	 	8 	 	 	8 	 	 	 	 	 	 	 	 	 	 	 	 		 	 		 	 	#	 	 		 	 	  	 	 	 #		 	 	
 $	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s+     M M#MM 
Mr   c                	   VR ,          pVP                  4        VR,          P                  \        P                  ! RRRRRR^*RR	R
R/RRRRR^[RRR
R/.RR^R^RRRR/RRRR^RRRR//4      RR7       R R  lpV P	                  R!V4       V P	                  R"R# 4       \        4       P                  \        V4      4      p\        P                  p^*pR$pR%pR$p	R&p
\        RR^*R%R4      3pR'pR(pRpRp\        VVVVR)7      pRpR*pRpRp\        VVVVR+7      p\        VVVVV	V
VVVR,7	      pVV8H  pV'       Eg   \        P                  ! RKV3RLVV34      / R-R.\         P"                  ! 4       9   g   \        P$                  ! V4      '       d   \        P&                  ! V4      MR.bR/R0\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MR0bR1R2\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MR2bR3\        P&                  ! V4      bR4\        P&                  ! V4      bR5\        P&                  ! V4      bR6\        P&                  ! V4      bR7\        P&                  ! V	4      bR8\        P&                  ! V
4      bR9\        P&                  ! V4      bR:R;\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MR;bR<\        P&                  ! V4      bR=\        P&                  ! V4      bR>\        P&                  ! V4      bR?\        P&                  ! V4      bR@\        P&                  ! V4      bRARB\         P"                  ! 4       9   g!   \        P$                  ! \        4      '       d   \        P&                  ! \        4      MRBbRC\        P&                  ! V4      RD\        P&                  ! V4      RE\        P&                  ! V4      RF\        P&                  ! V4      RG\        P&                  ! V4      RH\        P&                  ! V4      /C,          pRIRJV/,          p\)        \        P*                  ! V4      4      hR$;p;p;p;p;p;p	;p
;p;p;p;p;p;p;p;p;p;p;ppR$# )MrD   rE   r   kindrF   rM   r   r   rH   rI   rO   T	ignore_merN   ikFjF
extraUsagerU   rV   rW   rX   rY   z1 / 2 hoursspendSummaryr[   g      @r\   r]   z$7 / $20r_   r`   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   Mtest_fetch_reads_named_limits_lists_and_summary_aliases.<locals>.__annotate__  r  r   c                 :    \         P                  ! . RO^ RRR7      # r!  r"  r#  s   *,r   r   Itest_fetch_reads_named_limits_lists_and_summary_aliases.<locals>.fake_run  r%  r   r   r   c                     R # r   r   r   r   r   r>   Itest_fetch_reads_named_limits_lists_and_summary_aliases.<locals>.<lambda>  r   r   Nr   r   g      ?rY  r   g      4@r   rZ  r   r   r   r   r   r   r   r   r   r   r   r   r   r[  r   r   r   r   r   r   py29r   r   r   r   r   r   r   zassert %(py43)sr   r   )a  %(py0)s == %(py41)s
{%(py41)s = %(py2)s(status=%(py5)s
{%(py5)s = %(py3)s.OK
}, primary_used_pct=%(py7)s, secondary_used_pct=%(py9)s, primary_reset_at=%(py11)s, secondary_reset_at=%(py13)s, checked_at=%(py15)s, named_limits=%(py17)s, extra_usage=%(py28)s
{%(py28)s = %(py18)s(used=%(py20)s, limit=%(py22)s, unit=%(py24)s, display=%(py26)s)
}, spend=%(py39)s
{%(py39)s = %(py29)s(amount=%(py31)s, limit=%(py33)s, currency=%(py35)s, display=%(py37)s)
})
})r   r   r}   r~   r@   r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r)   r+   r   r   r   r   r   r   r   r   r   r   r^  r   r   r   r   @py_assert30r   r   r   r   r   r   @py_format42r   s   &&                        r   7test_fetch_reads_named_limits_lists_and_summary_aliasesr    sV    m+L,,88

!2#%; $ !2#] %!  AQG}	 cRz	!/	
@ C 9 "H
 =xH8:QR!#))(<*@AH    &	
   # {Ir<F
    " &!	
" #$ %& '( )  	
!%"


! 8    , -8   , - , -8  , -8  , - , -  , -  , - , - , - , - , - , -   , - &	 , -
   , - # , -
 , - , - & , - & , -  , -  , -  , - " , -
 , - , -  ! , -  ! , -" # , -$ % , -& ' , -( ) , - 
! , -      , -      r   c                  R    ] tR tRt$ RtRR^RR//tR]R&   RR
 R lltR R ltRt	R	# )_AttributionSessioni  session-tokenrF   r   rH   l    	h rH  r   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# r)  r   )r   s   "r   r    _AttributionSession.__annotate__  s<        	
  
r   c                	    R # rg  r   )r/   r*  r+  r,  r-  r5  s   &&&&&&r   r9  _AttributionSession.__init__  s     	r   c                   V ^8  d   QhRR/# r<  r   )r   s   "r   r   r  )  s     K K< Kr   c                	D    \        V P                  V P                  R 7      # )r   )r   r   tokenrB  s   &r   rC  %_AttributionSession.get_usage_reading)  s    DLLtzzJJr   r   rL  )
rO  rP  rQ  rR  r  r   __annotations__r9  rC  rS  r   r   r   r  r    s1    E"-	1k=/Y!ZGZK Kr   r  c               $    V ^8  d   QhRRRRRR/# )r   r+   r   cached_percentz
int | Noner   r   )r   s   "r   r   r   -  s!     	 	 	j 	$ 	r   c                    V R ,          pVP                  4        \        VR4       Ve3   VR,          P                  \        P                  ! RRV//4      RR7       V# )rD   uuid-this-accountrE   rF   r   r_   r`   )r   r   r   r}   r~   )r+   r  r   s   && r   _attribution_homer  -  sc    m+L\#67!	0	0<<JJi%@AB 	= 	
 r   c               $    V ^8  d   QhRRRRRR/# )r   r)   r*   
owner_uuidr2   r   r,   r   )r   s   "r   r   r   9  s&      # 
r   c                   a V P                  \        R \        R 4      4       V P                  R\        4       V P                  RV3R l4       R# )re  c                "    \         P                  # rg  rh  ri  s   &&&r   r>   )_stub_attribution_fetch.<locals>.<lambda>@  rn  r   rV  r;   c                (   < Sf   R # \        SR 4      # rg  r
   )r/   r  r  s   &&r   r>   r  E  s    J$6D[M*VZ<[[r   N)r@   r	   r  r  )r)   r  s   &fr   _stub_attribution_fetchr  9  sJ     DE
 ACVWA[r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   I  s&     ( (#(( 
(r   c                   \        V4      p\        V R 4       \        4       P                  \	        V4      4      pVP
                  p^(qTV8H  qf'       g   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;re\        P                  pRpW%,          p	V	P                   p
R	pV
! VR
7      q! V4      pRR^(//qV8H  q'       Eg   \        P                  ! RV3RVV34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /	,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p	;p
;p;p;p;rR# )uuid-other-accountr   r   r   r   r0  r   NrE   r_   r`   rF   r   r}   r   r   r   r  r  r	  r   r
  r   r   r  r  )r  r  r	   r   r%   r   r   r   r   r   r   r   r   r   r}   r  r  )r)   r+   r   r   r   r   r   r6  r7  r   r  r  r  r  r   r  r  r  s   &&                r   :test_fetch_discards_usage_reading_owned_by_another_accountr  I  s}    %X.LK)=>!#))(<*@AH$$*******$******8****8***$***********:: (0(		0(	0;;(EL(;WM(:M (
	2	'(	'( ( (''( 	'( (!'( (''(4 ( ('i(4 ( ('i(: ( (!'( (''(	( ('i(	( ('i(0( ('i(;( ('i(EL( ('i(M( ('i(  ( ('i(	'( ( ( ( (''( ( ( (r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   X  s&     	+ 	+#	+	+ 
	+r   c           	     @   \        V4      p\        V R 4       \        4       P                  \	        V4      4      pVP
                  p^(qTV8H  qf'       g   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;reR # )	Nr   r   r   r   r0  r   r   r  )r  r  r	   r   r%   r   r   r   r   r   r   r   r   r   )	r)   r+   r   r   r   r   r   r6  r7  s	   &&       r   9test_fetch_discards_usage_reading_with_unverifiable_ownerr  X  s     %X.LK.!#))(<*@AH$$*******$******8****8***$***********r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   d  s&     = =#== 
=r   c                   \        VR R7      p\        V R4       \        4       P                  \	        V4      4      pVP
                  p\        P                  qTV8H  qf'       Eg   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR ;p;reVP                   pR qV	J qf'       g   \        P                  ! RV3RWI34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V	4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR ;p;riVP"                  pRqV	8H  qf'       g   \        P                  ! RV3RWI34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V	4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR ;p;riR # )N)r  r  r   r   r   r   r   r   r   r   r   r0  r   usage attribution unverifiedr   r  r;  r=  r  )r  r  r	   r   r%   r   r   r  r   r   r   r   r   r   r   r   r   r   )r)   r+   r   r   r   r   r   r   r   r   r6  r7  s   &&          r   Btest_fetch_reports_unknown_when_misattributed_reading_has_no_cacher  d  s    %XdCLK)=>!#))(<*@AH??2l222222222?222222822228222?222222l2222l222222222222$$,,,,,,,$,,,,,,8,,,,8,,,$,,,,,,,,,,,??<<<<<<<<<?<<<<<<8<<<<8<<<?<<<<<<<<<<<<r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r   r  s&     % %#%% 
%r   c                d	   \        V4      p\        V R 4       \        4       P                  \	        V4      4      pVP
                  p\        P                  qTV8H  qf'       Eg   \        P                  ! RV3RWE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;reVP                   p^qV	8H  qf'       g   \        P                  ! RV3RWI34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R
\        P                  ! V	4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR	;p;ri\"        P$                  pRp	W),          pVP&                  pRpV! VR7      q! V4      p\(        P*                  pVV8H  pV'       Eg   \        P                  ! RV3RVV34      RR\        P                  ! 4       9   g!   \        P                  ! \"        4      '       d   \        P                  ! \"        4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \(        4      '       d   \        P                  ! \(        4      MRR\        P                  ! V4      /
,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;p	;p;p;p;p;p;ppR	# )r  r   r   r   r   r   r   r   r   Nr   r0  r   rE   r_   r`   r}   r   r   r  r  r	  py16r  r[  zassert %(py20)sr   r   r  r  )z%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py12)s
{%(py12)s = %(py8)s
{%(py8)s = (%(py3)s / %(py5)s).read_text
}(encoding=%(py10)s)
})
} == %(py18)s
{%(py18)s = %(py16)s.payload
})r  r  r	   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r}   r  r  r  r   )r)   r+   r   r   r   r   r   r   r   r   r6  r7  r   r  r  r  r  @py_assert17r  @py_format19@py_format21s   &&                   r   6test_fetch_accepts_usage_reading_owned_by_this_accountr  r  sU    %X.LK)<=!#))(<*@AH??-loo-o-----?------8----8---?------l----l---o--------$$)))))))$))))))8))))8)))$))))))))))):: %0%		0%	0;;%EL%;WM%:M %		$	$% 	$% % %$$% 	$% %$f% %$$%4 % %$9%4 % %$9%: % %$f% %$$%	% %$9%	% %$9%0% %$9%;% %$9%EL% %$9%M% %$9%  % %$f% %$$%	% %$9%	% %$9%	$% % % % %$$% % % %r   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s+     B B#BB 
Br   c                   VR ,          pVP                  4        V P                  \        R\        R 4      4       V P                  R\        4       V P                  RR 4       \        V4      pRqCVJ qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rT\        4       P                  \        V4      4       \        V4      pRqCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rTR# )rD   re  c                "    \         P                  # rg  rh  ri  s   &&&r   r>   Ttest_fetch_pins_the_account_from_its_own_credentials_when_unpinned.<locals>.<lambda>  rn  r   rV  r   c                     R # r   r   r   r   r   r>   r    r   r   Nr   r   r   r   r   r   r   r   r5   r;  z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   r   )r   r@   r	   r  r  r   r   r   r   r   r   r   r   r   r   r%   )r)   r+   r   r   r   r   r   r   s   &&      r   Btest_fetch_pins_the_account_from_its_own_credentials_when_unpinnedr    s    m+LDE
 ACVW8:QR|,4444444,44444444444444444|4444|444,44444444444x56|,A0AA0AAAAAA,AAAAAAAAAAAAAAAAA|AAAA|AAA,AAA0AAAAAAAAAr   c               $    V ^8  d   QhRRRRRR/# r(   r   )r   s   "r   r   r     s&     5 5#55 
5r   c                   VR ,          pVP                  4        V P                  \        R\        R 4      4       V P                  R\        4       V P                  RR 4       V P                  RR 4       \        \        P                  RR	7      p\        P                  pR
qT! VVV4      pRqvVJ q'       Eg   \        P                  ! R!V3R"VV34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR
;p;p;p;r\        4       P!                  \#        V4      4      pVP$                  p\&        P(                  qTV8H  q'       Eg   \        P                  ! R#V3R$WE34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \&        4      '       d   \        P                  ! \&        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR
;p;rVP*                  pRqV8H  q'       g   \        P                  ! R#V3R%WO34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR
;p;rVP,                  pR
qVJ q'       g   \        P                  ! R!V3R&WO34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR
;p;r\/        V4      pR
pVVJ q'       Eg   \        P                  ! R!V3R'VV34      RR\        P                  ! 4       9   g!   \        P                  ! \.        4      '       d   \        P                  ! \.        4      MRR R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR
;p;rR
# )(rD   re  c                "    \         P                  # rg  rh  ri  s   &&&r   r>   `test_reading_owner_matches_returns_false_and_snapshot_unverified_without_a_pin.<locals>.<lambda>  rn  r   rV  r   c                     R # r   r   r   r   r   r>   r    r   r   r:   c                    R # rg  r   )r/   rj  s   &&r   r>   r    s    Dr   r  r   NFr   r	   r   r   r   r   readingr   r   r   zassert %(py13)sr   r   r   r   r  r   r0  r   r   r   r;  )zo%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s._reading_owner_matches
}(%(py3)s, %(py4)s, %(py6)s)
} is %(py11)sr   r  r  r=  r  )r   r@   r	   r  r  r   r   _reading_owner_matchesr   r   r   r   r   r   r   r   r   r%   r   r   r  r   r   r   )r)   r+   r   r  r   r   r  r   r  @py_format12rz  r   r   r   r   r   r6  r7  r   s   &&                 r   Ntest_reading_owner_matches_returns_false_and_snapshot_unverified_without_a_pinr    s}    m+LDE
 ACVW8:QRC 
 #6#>#>_]G44  	4  
	 
	   	  
	  		  	   Y	   Y	4   		  	  Y	  		  	  Y	  Y	 	  Y	    Y	 
	     	   "#))(<*@AH??2l222222222?222222822228222?222222l2222l222222222222??<<<<<<<<<?<<<<<<8<<<<8<<<?<<<<<<<<<<<<$$,,,,,,,$,,,,,,8,,,,8,,,$,,,,,,,,,,,|,44,44444,44444444444444444|4444|444,44444444444r   c                    V ^8  d   QhRRRR/# )r   r+   r   r   r   )r   s   "r   r   r     s      4 D r   c                    V R ,          pVP                  4        VR,          P                  \        P                  ! RR^RR/RR^aRR//4      RR	7       V# )
rD   rE   rF   r   rH   iTerJ   Ser_   r`   )r   r   r}   r~   )r+   r   s   & r   _elapsed_window_homer    sk    m+L,,88

i[-Hi[-H	
  9  r   c                    V ^8  d   QhRRRR/# )r   r+   r   r   r,   r   )r   s   "r   r   r     s     	B 	Bd 	Bt 	Br   c                   \        V 4      p\        P                  ! VR ,          R4       \        P                  ! VR4      pVP
                  p\        P                  qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR
;p;rTVP                   p^qV8H  qU'       g   \        P                  ! RV3RW834      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR
;p;rXVP"                  p^ qV8H  qU'       g   \        P                  ! RV3RW834      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR
;p;rXVP$                  pRpRqV,           qV8H  qU'       g   \        P                  ! RV3RW<34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR
;p;p;p;rR
# )rE   r   r   r   r   r   r   r   r   r   Nr   r0  r   r  i:	 zassert %(py10)sr  )r   r   r   r  r  r  )zF%(py2)s
{%(py2)s = %(py0)s.secondary_reset_at
} == (%(py5)s + %(py7)s))r  r  r  r	   _cached_snapshotr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r+   r   r   r   r   r   r   r   r   r6  r7  r   r   @py_format11s   &             r   7test_cached_snapshot_drops_usage_from_an_elapsed_windowr    sI   '1LHH\446XY!22<QH??-loo-o-----?------8----8---?------l----l---o--------$$*******$******8****8***$***********&&+!+!+++++&++++++8++++8+++&+++!++++++++&&A-A'A'*AA*AAAAAA&AAAAAA8AAAA8AAA&AAA-AAA'AAAAAAAAAr   c                   V ^8  d   QhRR/# )r   r   r,   r   )r   s   "r   r   r     s     , ,d ,r   c            	     &   \         P                  ! R R^aRR//\        P                  R4      p V P                  p^ q!V8H  q3'       g   \
        P                  ! RV3RW34      RR\        P                  ! 4       9   g   \
        P                  ! V 4      '       d   \
        P                  ! V 4      MRR\
        P                  ! V4      R\
        P                  ! V4      /,          pR	R
V/,          p\        \
        P                  ! V4      4      hR;p;r2R# )rJ   r   rH   r  r   r   r   r   r   r0  r   Nr   r  )r	   _snapshot_from_payloadr   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r6  r7  s         r   4test_live_payload_drops_usage_from_an_elapsed_windowr     s    !88	y"k=ABH &&+!+!+++++&++++++8++++8+++&+++!++++++++r   )(   )G
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r}   r  r{   pathlibr   pytestaccount_registryr   r   claude_credentialsr   r   claude_health_clientr	   claude_identityr   claude_oauthr   r   r   r   health_clientr   r   r   r   r   r%   fixturerA   r   r  rb  r  r  r  r  r  r
  r!  r(  r>  rG  rP  r\  rg  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>r     s!   "    	    0 D 3 )    $kI\:zXv.d*!ZFRS8W*)8X-`.2j(V:B::4)-X8BM`K K$	 (	+=% B(5B	B,r   