+
    Q(io
                    b    R t ^ RIHt ^ RIt^ RIt^ RIHt R R ltR R ltR R	 lt	R
 R lt
R# )zAuthentication utility helpers.)annotationsN)Anyc               $    V ^8  d   QhRRRRRR/# )   tokenstr
part_indexintreturndict[str, Any] )formats   "\/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/fastmcp/utilities/auth.py__annotate__r   
   s!     : :C :S :^ :    c                    V P                  R4      p\        V4      ^8w  d   \        R4      hW!,          pVR\        V4      ) ^,          ,          ,          p\        P                  ! \
        P                  ! V4      4      # )a  Decode a JWT part (header or payload) without signature verification.

Args:
    token: JWT token string (header.payload.signature)
    part_index: 0 for header, 1 for payload

Returns:
    Decoded part as a dictionary

Raises:
    ValueError: If token is not a valid JWT format
.z%Invalid JWT format (expected 3 parts)=)splitlen
ValueErrorjsonloadsbase64urlsafe_b64decode)r   r   partspart_b64s   &&  r   _decode_jwt_partr   
   se     KKE
5zQ@AA HH~)**H::f..x899r   c                    V ^8  d   QhRRRR/# r   r   r   r
   r   r   )r   s   "r   r   r       s     & &S &^ &r   c                    \        V ^ 4      # )a  Decode JWT header without signature verification.

Useful for extracting the key ID (kid) for JWKS lookup.

Args:
    token: JWT token string (header.payload.signature)

Returns:
    Decoded header as a dictionary

Raises:
    ValueError: If token is not a valid JWT format
r   r   s   &r   decode_jwt_headerr#            E1%%r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   1   s     & &c &n &r   c                    \        V ^4      # )a4  Decode JWT payload without signature verification.

Use only for tokens received directly from trusted sources (e.g., IdP token endpoints).

Args:
    token: JWT token string (header.payload.signature)

Returns:
    Decoded payload as a dictionary

Raises:
    ValueError: If token is not a valid JWT format
r!   r"   s   &r   decode_jwt_payloadr'   1   r$   r   c                    V ^8  d   QhRRRR/# )r   valuer   r
   zlist[str] | Noner   )r   s   "r   r   r   B   s        0 r   c                T   V e   V R8X  d	   V f   R# . # \        V \        4      '       dK   V  Uu. uF=  p\        V4      P                  4       '       g   K$  \        V4      P                  4       NK?  	  up# \        V \        4      '       d   V P                  4       p V '       g   . # V P	                  R4      '       dy    \
        P                  ! V 4      p\        V\        4      '       dK   V Uu. uF=  p\        V4      P                  4       '       g   K$  \        V4      P                  4       NK?  	  up#  V P                  RR4      P                  4        Uu. uF*  q3P                  4       '       g   K  VP                  4       NK,  	  up# V # u upi u upi   \         d     Lni ; iu upi )zParse scopes from environment variables or settings values.

Accepts either a JSON array string, a comma- or space-separated string,
a list of strings, or ``None``. Returns a list of scopes or ``None`` if
no value is provided.
N [, )

isinstancelistr   strip
startswithr   r   	Exceptionreplacer   )r)   vdatass   &   r   parse_scopesr8   B   s>    }}t,",%(-@1QA@@%IC  zz%(dD))48KDqCFLLNNCFLLNDKK *
 $)==c#:#@#@#BP#Baggi		#BPPL A L  QsA   !F
F
<0F ,!FF/F F%1F%F F"!F")__doc__
__future__r   r   r   typingr   r   r#   r'   r8   r   r   r   <module>r<      s(    % "   :,&"&"r   