§
    ÜŽ’j¦  ã                  óº   — d dl mZ d dlZd dlmZ ddlmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ d	d
lmZ dgZdd„Zddœdd„Z dS )é    )ÚannotationsN)ÚOptionalé   )ÚCredentialResultÚIdentityTokenProvider)ÚWorkloadIdentityCredentials)Ú	ENV_SCOPEÚENV_API_KEYÚENV_PROFILEÚENV_AUTH_TOKENÚENV_CONFIG_DIRÚENV_WORKSPACE_IDÚENV_IDENTITY_TOKENÚENV_ORGANIZATION_IDÚENV_FEDERATION_RULE_IDÚENV_SERVICE_ACCOUNT_IDÚ_has_active_profile_configÚ_has_explicit_active_configÚresolve_identity_token_path)ÚStaticTokenÚCredentialsFileÚIdentityTokenFileé   )ÚAnthropicErrorÚdefault_credentialsÚbase_urlÚstrÚreturnúOptional[CredentialResult]c           
     ó`  — t           j                             t          ¦  «        }t           j                             t          ¦  «        }t
          t           j        v }t          ¦   «         }|r|sdS |s|€dS |�t          |¦  «        }ndd„}|}t          |||t           j                             t          ¦  «        t           j                             t          ¦  «        pdt           j                             t          ¦  «        ¬¦  «        }|                     | ¦  «         t          |¬¦  «        S )z¡Build a :class:`CredentialResult` for the env-var federation path
    (step 4 in the precedence spec). Returns ``None`` if the required trio
    isn't fully set.Nr   r   c                 ó€   — t           j                             t          ¦  «        } | €t	          t          › d�¦  «        ‚| S )Nzz is not set; the workload-identity chain selected this provider at construction time but the env var is no longer present.)ÚosÚenvironÚgetr   r   )Úvalues    úNC:\Projects\DSCons\.venv\Lib\site-packages\anthropic\lib\credentials\_chain.pyÚ_read_env_tokenz1_build_federation_result.<locals>._read_env_token1   sF   € Ý”J—N’NÕ#5Ñ6Ô6ˆEØˆ}Ý$Ý)ð -ð -ð -ñô ð ð
 ˆLó    )Úidentity_token_providerÚfederation_rule_idÚorganization_idÚservice_account_idÚworkspace_idÚscope©Úprovider)r   r   )r"   r#   r$   r   r   r   r   r   r   r   r   r	   Úbind_base_urlr   )r   r*   r+   Úhas_literal_tokenÚidentity_token_pathÚidentity_providerr'   r0   s           r&   Ú_build_federation_resultr5      s#  € õ œŸšÕ(>Ñ?Ô?ÐÝ”j—n’nÕ%8Ñ9Ô9€OÝ*­b¬jÐ8ÐÝ5Ñ7Ô7Ðàð  _ð ØˆtØð Ð!4Ð!<Øˆtð Ð&Ý-Ð.AÑBÔBÐÐð	ð 	ð 	ð 	ð ,Ðå*Ø 1Ø-Ø'Ýœ:Ÿ>š>Õ*@ÑAÔAõ ”Z—^’^Õ$4Ñ5Ô5Ð=¸ÝŒj�nŠn�YÑ'Ô'ð
ñ 
ô 
€Hð ×Ò˜8Ñ$Ô$Ð$Ý XÐ.Ñ.Ô.Ð.r(   zhttps://api.anthropic.com©r   c                óH  — t           j                             t          ¦  «        rdS t           j                             t          ¦  «        }|rt          t          |¦  «        ¬¦  «        S t          t           j                             t          ¦  «        p#t           j                             t          ¦  «        ¦  «        }t          ¦   «         }|s|rNt          ¦   «         }|                     | ¦  «         |                     ¦   «         }t          |||j        ¬¦  «        S t          | ¬¦  «        }|�|S t!          ¦   «         rat          ¦   «         }|                     | ¦  «         	 |                     ¦   «         }n# t"          $ r Y dS w xY wt          |||j        ¬¦  «        S dS )uÔ  Resolve a :class:`CredentialResult` from the environment per the
    credential-resolution spec. First match wins.

    Implements steps 2-5 of the spec precedence chain (step 1 is handled at
    the client constructor level, above this function):

    Step 2a: ``ANTHROPIC_API_KEY`` â†’ return ``None`` so the client uses its
             existing ``X-Api-Key`` header path. (API keys are not Bearer
             tokens, so they can't flow through this chain.)
    Step 2b: ``ANTHROPIC_AUTH_TOKEN`` â†’ :class:`StaticToken` (Bearer).
    Step 3:  ``ANTHROPIC_PROFILE`` / ``ANTHROPIC_CONFIG_DIR`` set, or the
             ``active_config`` pointer file exists â†’ load that profile.
             This is *explicit profile selection*; failures propagate.
    Step 4:  ``ANTHROPIC_FEDERATION_RULE_ID`` + ``ANTHROPIC_ORGANIZATION_ID``
             + ``ANTHROPIC_IDENTITY_TOKEN[_FILE]`` â†’ direct jwt-bearer
             exchange via :class:`WorkloadIdentityCredentials`. Critically,
             step 4 sits **between** explicit profile (step 3) and
             fallback profile (step 5): a machine with WIF env vars wired
             up must use WIF even if a leftover ``default`` profile exists
             on disk, but a user who explicitly ``ANTHROPIC_PROFILE=dev``
             still gets their profile.
    Step 5:  Fallback active profile from disk (``configs/default.json``
             or whatever ``active_config`` points at). Errors at this step
             are swallowed and the chain falls through â€” a corrupt
             unselected profile shouldn't break an otherwise-explicit
             api_key= path.

    Returns ``None`` when nothing matches â€” the client will fall back to
    its normal "no auth configured" error.
    Nr/   )r0   Úextra_headersr   r6   )r"   r#   r$   r
   r   r   r   Úboolr   r   r   r   r1   r8   Úresolved_base_urlr5   r   r   )r   Ú
auth_tokenÚenv_explicitÚpointer_explicitÚ
creds_filer8   Úfederation_results          r&   r   r   L   s¨  € õ@ 
„z‡~‚~•kÑ"Ô"ð Øˆtõ ”—’¥Ñ/Ô/€JØð BÝ­°ZÑ)@Ô)@ÐAÑAÔAÐAõ
 �œ
Ÿš¥{Ñ3Ô3ÐUµr´z·~²~ÅnÑ7UÔ7UÑVÔV€LÝ2Ñ4Ô4ÐØð 
Ð'ð 
Ý$Ñ&Ô&ˆ
Ø× Ò  Ñ*Ô*Ð*Ø"×0Ò0Ñ2Ô2ˆÝØØ'ØÔ1ð
ñ 
ô 
ð 	
õ 1¸(ÐCÑCÔCÐØÐ$Ø Ð õ "Ñ#Ô#ð 
Ý$Ñ&Ô&ˆ
Ø× Ò  Ñ*Ô*Ð*ð	Ø&×4Ò4Ñ6Ô6ˆMˆMøÝð 	ð 	ð 	Ø�4�4ð	øøøåØØ'ØÔ1ð
ñ 
ô 
ð 	
ð ˆ4s   Å%E: Å:
FÆF)r   r   r   r   )!Ú
__future__r   r"   Útypingr   Ú_typesr   r   Ú	_workloadr   Ú
_constantsr	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú
_providersr   r   r   Ú_exceptionsr   Ú__all__r5   r   © r(   r&   ú<module>rI      sx  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ )Ð )Ð )Ð )Ð )Ð )à Ð
!€ð,/ð ,/ð ,/ð ,/ð^ ,Gð Oð Oð Oð Oð Oð Oð Oð Or(   