+
    jD%                      a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHt ^ RIHtHtHt ^ RIHtHtHtHtHtHtHt ^ RIHt RtR	]R
&   ]! 4       R,          tR]R&   R"tR]R&   ^<tR]R&   R#t R]R&   ^@t!R]R&   ]
! RR7       ! R R4      4       t"]#]$]#]$]%3,          3,          t&]
 ! R R4      4       t' ! R R4      t(R R lt)R R lt* ! R  R!4      t+. R$Ot,R# )%    )annotationsN)	dataclass)Path)CallableFinalTextIO)OAUTH_BETA_HEADER
USER_AGENTClaudeOAuthErrorClaudeOAuthRequestClaudeOAuthResponseClaudeOAuthTransportdefault_transport)runtime_dirz+https://api.anthropic.com/api/oauth/profilez
Final[str]PROFILE_URLzclaude-token-identity.jsonzFinal[Path]IDENTITY_CACHE_PATHzFinal[float]IDENTITY_RETRY_SECONDSIDENTITY_MIN_RETRY_SECONDSIDENTITY_REJECTED_RETRY_SECONDSz
Final[int]IDENTITY_CACHE_CAPACITYT)frozenc                  ,    ] tR t^ t$ R]R&   R]R&   RtR# )TokenIdentitystraccount_uuid
str | Noneemail N__name__
__module____qualname____firstlineno____annotations____static_attributes__r       I/home/user/overdeck-private-tests/subrouter-s5-systray/claude_identity.pyr   r       s    r&   r   c                  ,    ] tR t^)t$ R]R&   R]R&   RtR# )_CacheRecordstokensfailuresr   Nr   r   r&   r'   r)   r)   )   s    Or&   r)   c                     ] tR t^/tRtRRR]P
                  3R R lltR R ltR R	 ltR
 R lt	R R lt
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tR R ltR R ltR R ltR tR# )!ClaudeTokenIdentityzBinds an OAuth access token to the account that owns it.

The binding comes from the OAuth profile endpoint, the only source that speaks for the
token itself; adjacent metadata files describe whichever account last wrote them.
Ng      $@c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )   
cache_pathzPath | None	transportzClaudeOAuthTransport | Nonetimeout_secsfloatnowzCallable[[], float]returnNoner   )formats   "r'   __annotate__ ClaudeTokenIdentity.__annotate__6   s<     
 

 /
 	

 !
 

r&   c                	b    Vf   \         MTV n        Vf   \        MTV n        W0n        W@n        R # N)r   _cache_pathr   
_transport_timeout_secs_now)selfr1   r2   r3   r5   s   &&&&&r'   __init__ClaudeTokenIdentity.__init__6   s.     3=2D.*/8/@+i)	r&   c                    V ^8  d   QhRRRR/# )r0   credentials_pathr   r6   TokenIdentity | Noner   )r8   s   "r'   r9   r:   B   s     1 1 12F 1r&   c                	R    V P                  V4      pVf   R # V P                  V4      # r<   )_access_tokenidentify_token)rA   rE   access_tokens   && r'   identifyClaudeTokenIdentity.identifyB   s-    ))*:;""<00r&   c                    V ^8  d   QhRRRR/# )r0   rJ   r   r6   rF   r   )r8   s   "r'   r9   r:   H   s      3 3G r&   c           	     	r   \         P                  ! VP                  R 4      4      P                  4       pV P	                  4       ;_uu_ 4       pV P                  VP                  V4      pVe   VuuRRR4       # V P                  4       V P                  VP                  V4      8  d    RRR4       R#  RRR4       V P                  V4      w  rEV P	                  4       ;_uu_ 4       pVf(   RV P                  4       V,           /VP                  V&   MSVP                  P                  VR4       RVP                  RVP                  RV P                  4       /VP                  V&   V P                  V4       V P                  V4       RRR4       V#   + '       g   i     L; i  + '       g   i     T# ; i)utf-8Nretry_not_beforer   r   verified_at)hashlibsha256encode	hexdigest_locked_cache_cached_identityr+   r@   _retry_not_beforer,   _fetch_identitypopr   r   _prune_write_cache)rA   rJ   keycacheidentityretry_afters   &&    r'   rI   "ClaudeTokenIdentity.identify_tokenH   sa   nn\009:DDF!!U,,U\\3?H# "! yy{T33ENNCHH "! I	 " !% 4 4\ B!!U'9499;;T&Us#""3-"H$9$9X^^!499;%S!
 KKe$ " ) "! "! s   "F90F'B!F%F"	%F6	c                    V ^8  d   QhRRRR/# r0   rE   r   r6   r   r   )r8   s   "r'   r9   r:   a   s     C C C* Cr&   c                	H    V P                  V4      pVf   R # VP                  # r<   )rK   r   )rA   rE   r_   s   && r'   account_uuid_for$ClaudeTokenIdentity.account_uuid_fora   s'    ==!12'tBX-B-BBr&   c                    V ^8  d   QhRRRR/# )r0   rJ   r   r6   z"tuple[TokenIdentity | None, float]r   )r8   s   "r'   r9   r:   e   s     O OC O4V Or&   c                	   \        R \        RRRRV 2R\        R\        /R7      p V P	                  W P
                  4      p\        T\        4      '       g	   R\        3# TP                  R	9   d	   R\        3# TP                  ^8w  d0   T P                  T4      pTf	   R\        3# R\        T\         4      3# T P#                  TP$                  4      \        3#   \        \        \        3 d    R\        3u # i ; i)
GETAcceptzapplication/jsonAuthorizationzBearer z
User-Agentzanthropic-beta)methodurlheadersN>       )r   r   r
   r	   r>   r?   r   OSErrorTimeoutErrorr   
isinstancer   status_coder   _retry_after_secondsmaxr   _identity_from_bodybody)rA   rJ   requestresponser`   s   &&   r'   rY   #ClaudeTokenIdentity._fetch_identitye   s   $,7<.!9j "3		
	0w0B0BCH ($788///:-8883&33H=K"333[*DEEE''68NNN !'<8 	0///	0s   C C;:C;c                    V ^8  d   QhRRRR/# )r0   rx   r   r6   rF   r   )r8   s   "r'   r9   r:      s     ` `# `*> `r&   c                	    \         P                  ! V 4      p\	        T\
        4      '       g   R # TP                  R4      p\	        T\
        4      '       g   R # TP                  R4      p\	        T\        4      '       d	   T'       g   R # TP                  R4      p\        T\	        T\        4      '       d   T'       d   T4      # R 4      #   \        \        3 d     R # i ; i)Naccountuuidr   )	jsonloads	TypeError
ValueErrorrs   dictgetr   r   )rx   payloadr~   r   r   s   &    r'   rw   'ClaudeTokenIdentity._identity_from_body   s    	jj&G '4((++i('4(({{6*,,,LG$\Juc4J4Ju5__Z^__ :& 		s   C C C c                    V ^8  d   QhRRRR/# )r0   rz   r   r6   zfloat | Noner   )r8   s   "r'   r9   r:      s     	1 	1': 	1| 	1r&   c                	    \        R  V P                  P                  4        4       R4      p \        V4      pT^ 8  d   T# R#   \        \
        3 d     R# i ; i)c              3  X   "   T F   w  rVP                  4       R 8X  g   K  Vx  K"  	  R# 5i)zretry-afterN)lower).0r]   headers   &  r'   	<genexpr>;ClaudeTokenIdentity._retry_after_seconds.<locals>.<genexpr>   s$     `'?399;R_C_VV'?s   *
*N)nextrn   itemsr4   r   r   )rz   valuesecondss   &  r'   ru   (ClaudeTokenIdentity._retry_after_seconds   s`    `x'7'7'='='?`
	ElG "Q,w0D0 :& 		s   A AAc                    V ^8  d   QhRRRR/# rc   r   )r8   s   "r'   r9   r:      s     X X X Xr&   c                	|    \         P                  ! V P                  R R7      4      p\        T\        4      '       g   R# TP                  R4      p\        T\        4      '       g   R# TP                  R4      p\        T\        4      '       d   T'       d   T# R#   \        \         P                  3 d     R# i ; i)rO   encodingNclaudeAiOauthaccessToken)	r   r   	read_textrq   JSONDecodeErrorrs   r   r   r   )rE   r   oauthrJ   s   &   r'   rH   !ClaudeTokenIdentity._access_token   s    	jj!1!;!;W!;!MNG '4((O,%&&yy/),<<|WSWW --. 		s   &B B;:B;c               $    V ^8  d   QhRRRRRR/# )r0   r+   r*   r]   r   r6   rF   r   )r8   s   "r'   r9   r:      s'     V V Vs V7K Vr&   c                	   V P                  V4      pVf   R # VP                  R4      p\        V\        4      '       d	   V'       g   R # VP                  R4      p\        T\        V\        4      '       d   V4      # R 4      # )Nr   r   )r   rs   r   r   )r+   r]   recordr   r   s   &&   r'   rW   $ClaudeTokenIdentity._cached_identity   sg    C>zz.1,,,L

7#\Juc4J4J5UUPTUUr&   c               $    V ^8  d   QhRRRRRR/# )r0   r,   r*   r]   r   r6   r4   r   )r8   s   "r'   r9   r:      s!      G # % r&   c                	    V P                  V4      pVf   R# VP                  R4      p\        V\        4      '       g   \        V\        \        34      '       g   R# \	        V4      # )N        rP   r   rs   boolintr4   )r,   r]   r   r   s   &&  r'   rX   %ClaudeTokenIdentity._retry_not_before   sQ    c">

-.eT""*US%L*I*IU|r&   c                    V ^8  d   QhRRRR/# r0   r^   r)   r6   r7   r   )r8   s   "r'   r9   r:      s     " "f " "r&   c                	    V P                   p\        V4      \        8:  d   R # \        VP	                  4       R R7      pVR \        V4      \        ,
            F  w  r4VP                  VR 4       K  	  R # )Nc                &    \        V ^,          4      # )   )_verified_at)items   &r'   <lambda>,ClaudeTokenIdentity._prune.<locals>.<lambda>   s    ,tAw:Or&   )r]   )r+   lenr   sortedr   rZ   )r^   r+   orderedr]   _s   &    r'   r[   ClaudeTokenIdentity._prune   s[    v;11-OPEF.E EFFCJJsD! Gr&   c                   V ^8  d   QhRR/# )r0   r6   _LockedCacher   )r8   s   "r'   r9   r:      s     " "| "r&   c                	    \        V 4      # r<   )r   )rA   s   &r'   rV   !ClaudeTokenIdentity._locked_cache   s    D!!r&   c                   V ^8  d   QhRR/# r0   r6   r)   r   )r8   s   "r'   r9   r:      s     Z ZV Zr&   c                	R    \         P                  ! V P                  P                  R R7      4      p\        V\        4      '       g   / p\        \        VP                  R4      4      \        VP                  R4      4      4      #   \        \         P
                  3 d    Rp Lsi ; i)rO   r   Nr+   r,   )r   r   r=   r   rq   r   rs   r   r)   _recordsr   )rA   r   s   & r'   _read_cacheClaudeTokenIdentity._read_cache   s    	jj!1!1!;!;W!;!MNG '4((Ghw{{845xJ@W7XYY	 --. 	G	s   0B B&%B&c                    V ^8  d   QhRRRR/# r   r   )r8   s   "r'   r9   r:      s     2 2& 2T 2r&   c           
     	   V P                   P                  P                  R R R7       Rp \        P                  ! RRV P                   P                  RR7      ;_uu_ 4       pVP                  \        P                  ! RVP                  RVP                  /^R	7      R
,           4       VP                  4        \        P                  ! VP                  4       4       \        VP                  4      pRRR4       \        P                   ! VR4       \        P"                  ! W P                   4       R#   + '       g   i     LI; i  \$         d    Te   TP'                  R R7        R#  R# i ; i)Tparentsexist_okNwrO   F)r   dirdeleter+   r,   )indent
i  )
missing_ok)r=   parentmkdirtempfileNamedTemporaryFilewriter   dumpsr+   r,   flushosfsyncfilenor   namechmodreplacerq   unlink)rA   r^   	temp_pathhandles   &&  r'   r\    ClaudeTokenIdentity._write_cache   s   %%dT%B!%		2,, $$++	 
 JJ%,,
ENNS\]^ ) -	 HHY&JJy"2"23   	2$  D 1 %	2s*   6E !BD21?E 2E	=E !E-,E-)r=   r@   r?   r>   )r    r!   r"   r#   __doc__timerB   rK   rI   re   rY   staticmethodrw   ru   rH   rW   rX   r[   rV   r   r\   r%   r   r&   r'   r.   r.   /   s     #'15"#'99
12CO4 ` `  	1 	1 X X V V   " ""Z2 2r&   r.   c                    V ^8  d   QhRRRR/# )r0   r   objectr6   r*   r   )r8   s   "r'   r9   r9      s     V VF Vw Vr&   c                    \        V \        4      '       g   / # V P                  4        UUu/ uF  w  r\        V\        4      '       g   K  WbK!  	  upp# u uppi r<   )rs   r   r   )r   r]   r   s   &  r'   r   r      sA    eT""	+0;;=U=KCJvt<TKCK=UUUs   AAc                    V ^8  d   QhRRRR/# )r0   r   zdict[str, object]r6   r4   r   )r8   s   "r'   r9   r9      s      * u r&   c                    V P                  R 4      p\        V\        4      '       g   \        V\        \        34      '       g   R# \	        V4      # )rQ   r   r   )r   r   s   & r'   r   r      s:    JJ}%E%je&E&E<r&   c                  :    ] tR t^tR R ltR R ltR R ltRtR# )	r   c                    V ^8  d   QhRRRR/# )r0   ownerr.   r6   r7   r   )r8   s   "r'   r9   _LockedCache.__annotate__   s     + +1 +d +r&   c                	     Wn         R V n        R # r<   )_owner_handle)rA   r   s   &&r'   rB   _LockedCache.__init__   s    &*r&   c                   V ^8  d   QhRR/# r   r   )r8   s   "r'   r9   r      s     ) )6 )r&   c                	   V P                   P                  P                  V P                   P                  P                   R 24      pVP                  P                  RRR7       VP                  RRR7      V n        \        P                  ! V P                  \        P                  4       V P                   P                  4       # )z.lockTr   r   rO   r   )r   r=   	with_namer   r   r   openr   fcntlflockLOCK_EXr   )rA   	lock_paths   & r'   	__enter___LockedCache.__enter__   s    KK++559P9P9U9U8VV[6\]	td; ~~cG~<DLL%--0{{&&((r&   c                    V ^8  d   QhRRRR/# )r0   exc_infor   r6   r7   r   )r8   s   "r'   r9   r     s        &  T  r&   c                	h    V P                   e$   V P                   P                  4        R V n         R # R # r<   )r   close)rA   r   s   &*r'   __exit___LockedCache.__exit__  s(    <<#LL DL $r&   )r   r   N)r    r!   r"   r#   rB   r   r   r%   r   r&   r'   r   r      s    +)   r&   r   i,  i  )r   r   r.   r   )-__conditional_annotations__
__future__r   r   rR   r   r   r   r   dataclassesr   pathlibr   typingr   r   r   claude_oauthr	   r
   r   r   r   r   r   runtime_pathsr   r   r$   r   r   r   r   r   r   r   r   r   r*   r)   r.   r   r   r   __all__)r   s   @r'   <module>r     s   " "    	   !  * *   &GZ G#.=3O#O [ O'-  -+- L -07  7&(  ( $  
 sDf%%
&   
z2 z2zV   $r&   