
    h>C                       % S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
  S SKrS SKJr  S SKJrJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJr  \(       a!  S SKr\R>                  S	:  a  S S
KJ r   OS S
K!J r   \"" / SQ5      r#S\$S'   \
\\S4   r%S\$S'    " S S5      r& " S S\RN                  5      r( " S S\(5      r)Sq*S\$S'   \RV                  " 5       r,S\$S'         S!S jr- " S S\(5      r.Sr/S\$S'             S"S  jr0g)#    )annotationsN)TYPE_CHECKINGAnyCallableLiteralUnion)LRUCache)eprintverbose)issue_unstable_warning)NoPickleOption)CachedCredentialProviderCachingCredentialProviderCredentialProviderCredentialProviderAWSCredentialProviderAzureCredentialProviderFunctionCredentialProviderGCPUserProvidedGCPToken)   
   )	TypeAlias)
allow_httpallow_invalid_certificatesconnect_timeoutdefault_content_type
http1_only
http2_onlyhttp2_keep_alive_intervalhttp2_keep_alive_timeouthttp2_keep_alive_while_idlehttp2_max_frame_sizepool_idle_timeoutpool_max_idle_per_host	proxy_urlproxy_ca_certificateproxy_excludestimeout
user_agentzfrozenset[str]OBJECT_STORE_CLIENT_OPTIONSr   CredentialProviderBuilderReturnc                  z    \ rS rSrSr    SS jr S   SS jjr\    SS j5       rSS jr	SS jr
SS jrS	rg
)CredentialProviderBuilder<   a  
Builds credential providers.

This is used to defer credential provider initialization to happen at
`collect()` rather than immediately during query construction. This makes
the behavior predictable when queries are sent to another environment for
execution.
c                    Xl         g)z
Initialize configuration for building a credential provider.

Parameters
----------
credential_provider_init
    Initializer function that returns a credential provider.
Ncredential_provider_init)selfr1   s     f/home/james-whalen/.local/lib/python3.13/site-packages/polars/io/cloud/credential_provider/_builder.py__init__"CredentialProviderBuilder.__init__F   s     )A%    c                   [         R                  R                  R                  5       nU(       a  [	        SU R
                  < SU< 35        U R                  5       nU(       a:  Ub  [	        SU< SU R
                  < 35        O[	        SU R
                  < 35        U(       a;  [        U[        5      (       a&  UR                  5         U(       a  [	        SU< 35        U$ )z
Instantiate a credential provider from configuration.

Parameters
----------
clear_cached_credentials
    If the built provider is an instance of `CachingCredentialProvider`,
    clears any cached credentials on that object.
z.[CredentialProviderBuilder]: Begin initialize z clear_cached_credentials = z)[CredentialProviderBuilder]: Initialized z from z:[CredentialProviderBuilder]: No provider initialized from z:[CredentialProviderBuilder]: Clear cached credentials for )	polars_utilsloggingr   r
   r1   
isinstancer   clear_cached_credentials)r2   r<   r   vs       r3   build_credential_provider3CredentialProviderBuilder.build_credential_providerU   s     --''//1@003 4/+/1 ))+}?u E 99<>
  99<>
 $
16O(P(P&&(PQRPUV r6   c                $    U " [        U5      5      $ )z0Initialize with an already constructed provider.)InitializedCredentialProvider)clscredential_providers     r3   from_initialized_provider3CredentialProviderBuilder.from_initialized_provider   s    
 01DEFFr6   c                \    U R                   n[        5       (       a  [        SU< S35        U$ )Nz5[CredentialProviderBuilder]: __getstate__(): state =  r1   r   r
   r2   states     r3   __getstate__&CredentialProviderBuilder.__getstate__   s+    --99K5,aPQr6   c                N    Xl         [        5       (       a  [        SU < 35        g g )Nz4[CredentialProviderBuilder]: __setstate__(): self = rH   rI   s     r3   __setstate__&CredentialProviderBuilder.__setstate__   s$    (-%99J4+NO r6   c                $    SU R                   < S3$ )NzCredentialProviderBuilder()r0   r2   s    r3   __repr__"CredentialProviderBuilder.__repr__   s    +D,I,I+LANNr6   r0   N)r1   CredentialProviderBuilderImplreturnNone)F)r<   boolrV   r+   )rC   r   rV   r-   )rV   r   )rJ   r   rV   rW   rV   str)__name__
__module____qualname____firstlineno____doc__r4   r>   classmethodrD   rK   rN   rS   __static_attributes__ r6   r3   r-   r-   <   sw    A"?A 
A" */,"&, 
),\ G"<G	"G GPOr6   r-   c                  x    \ rS rSr\R
                  SS j5       r\\R
                  SS j5       5       rSS jr	Sr
g)	rU      c                    g Nrb   rR   s    r3   __call__&CredentialProviderBuilderImpl.__call__   s    r6   c                    g)zUsed for logging.Nrb   rR   s    r3   provider_repr+CredentialProviderBuilderImpl.provider_repr   s    r6   c                R    U R                   n[        U 5      R                  nU SU 3$ )Nz @ )rj   typer[   )r2   rj   builder_names      r3   rS   &CredentialProviderBuilderImpl.__repr__   s-    **Dz**L>22r6   rb   NrV   z!CredentialProviderFunction | NonerY   )r[   r\   r]   r^   abcabstractmethodrg   propertyrj   rS   ra   rb   r6   r3   rU   rU      sA          3r6   rU   c                  @    \ rS rSrSrSS jrS	S jr\S
S j5       rSr	g)rA      z1Wraps an already initialized credential provider.c                    Xl         g rf   rC   )r2   rC   s     r3   r4   &InitializedCredentialProvider.__init__   s    #6 r6   c                   ^  [        T R                  [        5      (       a  T R                  $ [        U 4S jU 4S j5      $ )Nc                 .   > [        T R                  5      $ rf   )idrC   rR   s   r3   <lambda>8InitializedCredentialProvider.__call__.<locals>.<lambda>   s    Bt//0r6   c                 .   > [        T R                  5      $ rf   )r   rC   rR   s   r3   r|   r}      s    ,T-E-EFr6   )r;   rC   r   _build_with_cacherR   s   `r3   rg   &InitializedCredentialProvider.__call__   s8    d..0IJJ+++ !0F
 	
r6   c                ,    [        U R                  5      $ rf   )reprrC   rR   s    r3   rj   +InitializedCredentialProvider.provider_repr   s    D,,--r6   rw   N)rC   r   rV   rW   )rV   r+   rY   )
r[   r\   r]   r^   r_   r4   rg   rs   rj   ra   rb   r6   r3   rA   rA      s#    ;7	
 . .r6   rA   z=LRUCache[int | bytes, CredentialProviderBuilderReturn] | NoneBUILT_PROVIDERS_LRU_CACHEzthreading.RLockBUILT_PROVIDERS_LRU_CACHE_LOCKc                j   [        [        R                  " SS5      5      =nS::  a5  [        R	                  SS9(       a  S q[        R                  5         U" 5       $ [        R                  R                  R                  5       n[           [
        c"  U(       a  [        SU< S35        [        U5      qU " 5       n [
        U   nU(       a  [        SU< S	U< 35        UsS S S 5        $ ! [         a-    U" 5       nU[
        U'   U(       a  [        S
U< S	U< 35         NAf = f! , (       d  f       g = f)N-POLARS_CREDENTIAL_PROVIDER_BUILDER_CACHE_SIZE   r   F)blockingz9Create built credential providers LRU cache (max_items = rQ   z'Loaded credential provider from cache: z cache_key = z(Added new credential provider to cache: )intosgetenvr   acquirer   releaser8   r9   r:   r   r
   r	   KeyError)get_cache_key_funcbuild_provider_func	max_itemsr   	cache_keyproviders         r3   r   r      s'    II?
 	
	 
 *1151A(,%*224"$$mm##++-G	'$,SynTUVW(0(;%&(		0;H=h\9.Y 3 
(	'   	*,H3;%i0>xl.I>Z	! 
(	's0   
1D$<#C*D$*4D!D$ D!!D$$
D2c                  P    \ rS rSrS	S jrS
S jrSS jrSS jr\SS j5       r	Sr
g)AutoIniti  c                :    Xl         X l        [        5       U l        g rf   )rB   kwr   
_cache_key)r2   rB   r   s      r3   r4   AutoInit.__init__  s    1?1Ar6   c                   ^   [        T R                  U 4S j5      $ ! [         a5  n[        5       (       a  [	        ST R
                   SU< 35         S nAg S nAff = f)Nc                 <   > T R                   " S0 T R                  D6$ )Nrb   )rB   r   rR   s   r3   r|   #AutoInit.__call__.<locals>.<lambda>  s    +477+r6   zfailed to auto-initialize z: )r   get_or_init_cache_keyImportErrorr   r
   rj   )r2   es   ` r3   rg   AutoInit.__call__  s^    	Q$**+   	Qyy3D4F4F3Gr!OP		Qs    
A+AAc                    U R                   R                  5       nUcY  U R                  5       nU R                   R                  U5        [	        5       (       a  [        U < SUR                  5        35        U$ )Nz: AutoInit cache key: )r   getget_cache_key_implsetr   r
   hex)r2   r   s     r3   r   AutoInit.get_or_init_cache_key  sb    OO'')	//1IOO	*yy$!7	7HIJr6   c                x    SS K nSS KnUR                  UR                  U 5      5      nUR	                  5       S S $ )Nr      )hashlibpicklesha256dumpsdigest)r2   r   r   hashs       r3   r   AutoInit.get_cache_key_impl"  s2    ~~fll401{{}Sb!!r6   c                .    U R                   R                  $ rf   )rB   r[   rR   s    r3   rj   AutoInit.provider_repr)  s    xx   r6   )r   rB   r   N)rB   r   r   r   rV   rW   rp   )rV   bytesrY   )r[   r\   r]   r^   r4   rg   r   r   rs   rj   ra   rb   r6   r3   r   r     s+    B

" ! !r6   r   autoz3CredentialProviderFunction | Literal['auto'] | NoneDEFAULT_CREDENTIAL_PROVIDERc                n   ^ ^^^ SUU UU4S jjnU" 5       n[        5       (       a  [        SU< 35        U$ )Nc            
     r  > SSK Jn JnJnJnJn  Tc  g [        T[        5      (       a  T$ TS:w  a&  ST S3n[        U5        [        R                  T5      $ [        c  g U " T5      =nc  g U" U5      =nc  g SS jnU" U5      (       a  S n	S n
TbQ  TR                  5        H=  u  pUR                  5       nUS;   a  Un	M  US;   a  Un
M)  US	;   a  M1  U[        ;   a  M=    g    [        R                  " [!        U5      5      =(       d    U
n
U" 5       =nb  U$ [        [#        [        U	U
S
95      $ U" U[!        U5      S9(       a  S nS nS nS nSnTbg  TR                  5        HS  u  pUR                  5       nUS;   a  UnM  US;   a  UnM)  US;   a  UnM3  US;   a  SnM=  US;   a  ME  U[        ;   a  MQ  UnMU     Ub  Ub  SU S3n[%        U5      eUc  U" 5       =nb  U$ [        [#        [&        UU=(       d    UUUS95      $ U" U5      (       a  S nS nTbI  TR                  5        H5  u  pUR                  5       nUS;   a  UnM  US;   a  M'  U[        ;   a  M3  UnM7     Ub  Ub  SU S3n[%        U5      eg Ub  [        [)        [+        U5      5      5      $ U" 5       =nb  U$ [        [#        [,        5      5      $ g )Nr   )_first_scan_path_get_path_scheme_is_aws_cloud_is_azure_cloud_is_gcp_cloudr   z(the `credential_provider` parameter of `z` is considered unstable.c                 L    [         S:w  a  [        R                  [         5      $ S $ )Nr   )r   r-   rD   rb   r6   r3   get_default_credential_providerU_init_credential_provider_builder.<locals>.f.<locals>.get_default_credential_providerb  s.    
 /&8 *CC/
 r6   >   	tenant_idauthority_idazure_tenant_idazure_authority_idazure_storage_tenant_idazure_storage_authority_id>   account_nameazure_storage_account_name>   use_azure_cliazure_use_azure_cli)r   _storage_account)schemefirst_scan_pathF>   region
aws_region>   default_regionaws_default_region>   profileaws_profile>   endpointaws_endpointendpoint_urlaws_endpoint_urlT>   request_payeraws_request_payerz-unsupported: cannot combine aws_profile with z in storage_options)profile_nameregion_name_auto_init_unhandled_key!_storage_options_has_endpoint_url>   tokenbearer_token>   bucketbucket_namegoogle_bucketgoogle_bucket_namez'unsupported: cannot combine token with rV    CredentialProviderBuilder | None)polars.io.cloud._utilsr   r   r   r   r   r;   r-   r   rD   r   itemslowerr*   r   !_extract_adls_uri_storage_accountrZ   r   
ValueErrorr   rA   r   r   )r   r   r   r   r   msgr   r   r   r   storage_accountkr=   defaultr   r   r   unhandled_keyhas_endpoint_urlr   caller_namerC   sourcestorage_optionss                       r3   f,_init_credential_provider_builder.<locals>.f<  s   
	
 	
 &)+DEE '&&(<[MIbcC"3',FF#  './77O@&77F@	 6""I"O*+113DA	A    %&	LL*+FF 99   $- 44 (II( # #  ;<<I,+'%4  &#o:NOFG!N M$*+113DA	A 44!"FF)*88"#   ,0(DD 99  )*/ 42 (&G(/)<>  %S/) % ? AAWN,)!( & 8.-:6F  6""E M*+113DA	A 55 !   !99  )*% 4( ($A(/)<>  %S/) 012Fu2MN  ;<<I,X6K-LMMr6   z@_init_credential_provider_builder(): credential_provider_init = r   )r   r
   )rC   r   r   r   r   r1   s   ````  r3   !_init_credential_provider_builderr   3  s9    E EN  !syyR7O6UVW##r6   )r   zCallable[[], int | bytes]r   z-Callable[[], CredentialProviderBuilderReturn]rV   r+   )
rC   zOCredentialProviderFunction | CredentialProviderBuilder | Literal['auto'] | Noner   r   r   zdict[str, Any] | Noner   rZ   rV   r   )1
__future__r   rq   r   	threadingtypingr   r   r   r   r   polars._utils.loggingr8   polars._utils.cacher	   r
   r   polars._utils.unstabler   r   r   .polars.io.cloud.credential_provider._providersr   r   r   r   r   r   r   r   sysversion_infor   typing_extensions	frozensetr*   __annotations__r+   r-   ABCrU   rA   r   RLockr   r   r   r   r   rb   r6   r3   <module>r     sX   " 
 	  ? ?  ( 1 9 1	 	 	 
7"$/ /8/ ^ , .32D8.  
]O ]O@3CGG 3&.$A .6 	 A	 3<//2C  C/1/F/ %/h)!, )!Z  P 
U$U$
 U$ +U$ U$ &U$r6   