ó
    ûÞ j=  ã                  óú  • % S SK Jr  S SKrS SKrS SKJrJrJrJrJ	r	J
r
  S SKJr  S SK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JrJr  SS
KJr  SrSrSr SSS.r! " S S\	5      r" " S S\	5      r#\#r$S\%S'    " S S\	5      r&\" S\#\&5      r'SS.       S'S jjr( S(   S)S jjr) S*SSSSSSS.               S+S  jjjr* S,SSS!.       S-S" jjjr+ " S# S$\\'   5      r, " S% S&\,\#   5      r-g).é    )ÚannotationsN)ÚAnyÚGenericÚTypeVarÚCallableÚ	TypedDictÚcast)ÚPath)ÚLiteralÚ	TypeAliasÚNotRequiredÚoverrideé   )Úis_dict)ÚDefaultHttpx2ClientÚ_loaded_legacy_httpx)Ú
OAuthErrorÚOpenAIErrorÚSubjectTokenProviderError)Ú	to_threadz/urn:ietf:params:oauth:grant-type:token-exchangez#https://auth.openai.com/oauth/tokeni°  z$urn:ietf:params:oauth:token-type:jwtz)urn:ietf:params:oauth:token-type:id_token)ÚjwtÚidc                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚSubjectTokenProvideré   zLiteral['jwt', 'id']Ú
token_typezCallable[[], str]Ú	get_token© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚO/var/www/html/gaurav/venv/lib/python3.13/site-packages/openai/auth/_workload.pyr   r      s   ‡ Ø$Ó$Ø Ö r%   r   c                  óH   • \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'   S
rg)ÚWorkloadIdentityé   z(Identity provider resource id in WIFAPI.ÚstrÚidentity_provider_idÚservice_account_idr   ÚproviderúNotRequired[float]Úrefresh_buffer_secondsr   N©r   r    r!   r"   Ú__doc__r#   r$   r   r%   r&   r(   r(      s&   ‡ Ù2àÓàGØÓàEØ"Ó"àØ.Ö.r%   r(   r   ÚSubjectTokenWorkloadIdentityc                  óB   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
rg)ÚX509WorkloadIdentityé1   zJAuthenticate with the client certificate configured on the HTTP transport.zLiteral['x509']Útyper*   r+   r,   r.   r/   r   Nr0   r   r%   r&   r4   r4   1   s   ‡ ÙTà
ÓØÓØÓØ.Ö.r%   r4   Ú_WorkloadIdentityT)r/   c                ó    • SU US.nUb  X#S'   U$ )zHConfigure X.509 workload identity without handling certificate material.Úx509)r6   r+   r,   r/   r   )r+   r,   r/   Úidentitys       r&   Úx509_workload_identityr;   =   s*   € ð Ø 4Ø0ñ&€Hð
 Ñ)Ø-CÐ)Ñ*Ø€Or%   c                ó   ^ • SU 4S jjnSUS.$ )a7  
Get a subject token provider for Kubernetes clusters with Workload Identity configured.

Cloud providers typically mount the subject token as a file in the container.

Args:
    token_file_path: path to the mounted service account token file. Defaults to `/var/run/secrets/kubernetes.io/serviceaccount/token`.
c                 ó  >•  [        TS5       n U R                  5       R                  5       nU(       d  [        ST S35      eUsS S S 5        $ ! , (       d  f       g = f! [         a  n[        ST SU 35      UeS nAff = f)NÚrzThe token file at z
 is empty.z!Failed to read the token file at z: )ÚopenÚreadÚstripr   Ú	Exception)ÚfÚtokenÚeÚtoken_file_paths      €r&   r   Ú5k8s_service_account_token_provider.<locals>.get_tokenZ   s„   ø€ ð	oÜ�o sÔ+¨qØŸ™›Ÿ™Ó(�ÞÜ3Ð6HÈÐHYÐYcÐ4dÓeÐeØ÷	 ,×+×+ûô
 ó 	oÜ+Ð.OÐP_ÐO`Ð`bÐcdÐbeÐ,fÓgÐmnÐnûð	oús4   ƒA  �6AÁ	A  Á
AÁA  ÁA  Á 
BÁ*A<Á<Br   ©r   r   ©Úreturnr*   r   )rF   r   s   ` r&   Ú"k8s_service_account_token_providerrK   N   s   ø€ ÷oð  ¨iÑ8Ð8r%   z
2018-02-01ç      $@)Ú	object_idÚ	client_idÚ
msi_res_idÚapi_versionÚtimeoutÚhttp_clientc               ó6   ^ ^^^^^^• SUUUUUU U4S jjnSUS.$ )ac  
Get a subject token provider for Azure Managed Identities.

See: https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token#get-a-token-using-http

Args:
    resource: the resource URI to request a token for. Defaults to `https://management.azure.com/` (Azure Resource Manager).
    object_id: the object ID of the managed identity to use, when multiple are assigned.
    client_id: the client ID of the managed identity to use, when multiple are assigned.
    msi_res_id: the ARM resource ID of the managed identity to use, when multiple are assigned.
    api_version: the Azure IMDS API version. Defaults to `2018-02-01`.
    timeout: the request timeout in seconds. Defaults to 10.0.
    http_client: optional httpx2.Client instance to use for requests. If not provided, a new client will be created for each request.
c                 ó  >•  Sn TTS.nTb  TUS'   Tb  TUS'   T
b  T
US'   T	b  T	R                  XSS0TS9nO1[        R                  " 5        nUR                  XSS0TS9nS S S 5        WR                  (       a  [	        S	UR
                   3US
9eUR                  5       nUR                  S5      nU(       d
  [	        SUS
9e[        [        U5      $ ! , (       d  f       Nx= f! [         a  n[	        SU 35      UeS nAff = f)Nz5http://169.254.169.254/metadata/identity/oauth2/token)zapi-versionÚresourcerM   rN   rO   ÚMetadataÚtrue©ÚparamsÚheadersrQ   z4Failed to fetch Azure subject token from IMDS: HTTP ©ÚresponseÚaccess_tokenz3Azure IMDS response did not include an access_tokenz/Failed to fetch Azure subject token from IMDS: )
ÚgetÚhttpx2ÚClientÚis_errorr   Ústatus_codeÚjsonr	   r*   rB   )ÚurlrY   r\   ÚclientÚdatarD   rE   rP   rN   rR   rO   rM   rU   rQ   s          €€€€€€€r&   r   Ú8azure_managed_identity_token_provider.<locals>.get_token€   s3  ø€ ð	jØIˆCØ5@ÈhÑ%WˆFØÑ$Ø&/��{Ñ#ØÑ$Ø&/��{Ñ#ØÑ%Ø'1��|Ñ$àÑ&Ø&Ÿ?™?¨3È
ÐTZÐG[Ðel˜?Ðm‘ä—]’]”_¨Ø%Ÿz™z¨#ÀzÐSYÐFZÐdk˜zÐl�H÷ %ð × × Ü/ØJÈ8×K_ÑK_ÐJ`ÐaØ%ñð ð —=‘=“?ˆDØ—H‘H˜^Ó,ˆEÞÜ/ØIÐT\ñð ô œ˜UÓ#Ð#÷ %•_ûô ó 	jÜ+Ð.]Ð^_Ð]`Ð,aÓbÐhiÐiûð	jús1   ƒAC% ÁCÁ"A1C% Ã
C"ÃC% Ã%
DÃ/C>Ã>Dr   rH   rI   r   )rU   rM   rN   rO   rP   rQ   rR   r   s   ``````` r&   Ú%azure_managed_identity_token_providerrh   g   s   þ€ ÷2jõ jð@  ¨iÑ8Ð8r%   )rQ   rR   c               ó&   ^ ^^• SU UU4S jjnSUS.$ )a  
Get a subject token provider for GCP VM instances using the instance metadata server.

See: https://cloud.google.com/compute/docs/instances/verifying-instance-identity

Args:
    audience: the unique URI agreed upon by both the instance and the system verifying
        the instance's identity. Defaults to `https://api.openai.com/v1`.
    timeout: the request timeout in seconds. Defaults to 10.0.
    http_client: optional httpx2.Client instance to use for requests. If not provided, a new client will be created for each request.
c                 ó°  >•  Sn ST0nTb  TR                  XSS0TS9nO1[        R                  " 5        nUR                  XSS0TS9nS S S 5        WR                  (       a  [	        SUR
                   3US9eUR                  R                  5       nU(       d
  [	        SUS9eU$ ! , (       d  f       Nc= f! [         a  n[	        S	U 35      UeS nAff = f)
Nz]http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identityÚaudiencezMetadata-FlavorÚGooglerX   z=Failed to fetch GCP subject token from metadata server: HTTP r[   z+GCP metadata server returned an empty tokenz8Failed to fetch GCP subject token from metadata server: )	r^   r_   r`   ra   r   rb   ÚtextrA   rB   )	rd   rY   r\   re   rD   rE   rk   rR   rQ   s	         €€€r&   r   Ú(gcp_id_token_provider.<locals>.get_tokenµ   sñ   ø€ ð	sØqˆCØ  (Ð+ˆFàÑ&Ø&Ÿ?™?¨3ÐHYÐ[cÐGdÐnu˜?Ðv‘ä—]’]”_¨Ø%Ÿz™z¨#ÐGXÐZbÐFcÐmt˜zÐu�H÷ %ð × × Ü/ØSÐT\×ThÑThÐSiÐjØ%ñð ð —M‘M×'Ñ'Ó)ˆEÞÜ/Ð0]ÐhpÑqÐqØˆL÷ %•_ûô ó 	sÜ+Ð.fÐghÐfiÐ,jÓkÐqrÐrûð	sús/   ƒ2B7 µB&Á	AB7 Â&
B4Â0B7 Â7
CÃCÃCr   rH   rI   r   )rk   rQ   rR   r   s   ``` r&   Úgcp_id_token_providerro   £   s   ú€ ÷$sñ sð. ¨YÑ7Ð7r%   c                  óÆ   • \ rS rSr\SS.       SS jjrSS jrSS jrSSS jjrSS	 jr	SS
 jr
SS jrSS jrSS jrSS jrSS jrSS jrSS jrS S jrS!S jrSrg)"Ú_WorkloadIdentityAuthéÏ   T©Útoken_exchange_urlÚ_use_httpx2c               óì   • Xl         X l        X0l        S U l        S U l        S U l        S U l        SU l        [        R                  " 5       U l
        [        R                  " U R                  5      U l        g ©NF)Úworkload_identityrt   ru   Ú_follow_redirectsÚ_cached_tokenÚ"_cached_token_expires_at_monotonicÚ"_cached_token_refresh_at_monotonicÚ_refreshingÚ	threadingÚLockÚ_lockÚ	ConditionÚ
_condition)Úselfrx   rt   ru   s       r&   Ú__init__Ú_WorkloadIdentityAuth.__init__Ð   sc   € ð 6GÔØ"4ÔØ&ÔØ.2ˆÔà)-ˆÔØ@DˆÔ/Ø@DˆÔ/Ø!&ˆÔÜ—^’^Ó%ˆŒ
Ü#×-Ò-¨d¯j©jÓ9ˆ�r%   c                óŠ  • U R                      U R                  (       aW  U R                  5       (       aB  U R                  R	                  5         U R                  (       a  U R                  5       (       a  MB  U R                  5       (       d8  U R                  5       (       d#  [        [        U R                  5      sS S S 5        $ U R                  (       aƒ  U R                  (       a-  U R                  R	                  5         U R                  (       a  M-  U R                  nU R                  5       (       a  [        S5      e[        [        U5      sS S S 5        $ SU l        S S S 5         U R                  5         U R                      U R                  5       (       a  [        S5      e[        [        U R                  5      sS S S 5        U R                      SU l        U R                  R                  5         S S S 5        $ ! , (       d  f       N¥= f! , (       d  f       $ = f! , (       d  f       O= f U R                      SU l        U R                  R                  5         S S S 5        g ! , (       d  f       g = f! U R                      SU l        U R                  R                  5         S S S 5        f ! , (       d  f       f = f= f)Nz)Token is unusable after refresh completedTF)r€   r}   Ú_token_unusabler‚   ÚwaitÚ_needs_refreshr	   r*   rz   ÚRuntimeErrorÚ_perform_refreshÚ
notify_all©rƒ   rD   s     r&   r   Ú_WorkloadIdentityAuth.get_tokenã   sÖ  € Ø�Z‹ZØ×"×" t×';Ñ';×'=Ñ'=Ø—‘×$Ñ$Ô&ð ×"×" t×';Ñ';×'=Ó'=ð ×'Ñ'×)Ñ)°$×2EÑ2E×2GÑ2GÜœC ×!3Ñ!3Ó4÷ ‰Zð ××Ø×&×&Ø—O‘O×(Ñ(Ô*ð ×&×&Ñ&à×*Ñ*�Ø×'Ñ'×)Ñ)Ü&Ð'RÓSÐSÜœC Ó'÷ ‰Zð  $ˆDÔ÷ ð"		-Ø×!Ñ!Ô#Ø—“Ø×'Ñ'×)Ñ)Ü&Ð'RÓSÐSÜœC ×!3Ñ!3Ó4÷ �ð
 —“Ø#(�Ô Ø—‘×*Ñ*Ô,÷ �÷1 �Zú÷0 •ú÷ •ú�ð
 —“Ø#(�Ô Ø—‘×*Ñ*Ô,÷ —–û�—“Ø#(�Ô Ø—‘×*Ñ*Ô,÷ —–ýsz   �A'G=Á6AG=ÃAG=Ä;G=ÅG=Å'I9 Æ:HÆ=	I9 Ç"HÇ=
HÈ
H	È
H-È)I9 È="I(É(
I6É9KÊ"J1Ê(	KÊ1
J?Ê;Kc              ƒ  óH   #   • [        U R                  5      I S h  v•N $  N7f©N)r   r   ©rƒ   s    r&   Úget_token_asyncÚ%_WorkloadIdentityAuth.get_token_async   s   é € Ü˜tŸ~™~Ó.×.Ð.Ñ.ùs   ‚"› œ"Nc                ó´   • U R                      Ub  U R                  U:w  a
   S S S 5        g S U l        S U l        S U l        S S S 5        g ! , (       d  f       g = fr�   )r€   rz   r{   r|   r�   s     r&   Úinvalidate_tokenÚ&_WorkloadIdentityAuth.invalidate_token  sJ   € Ø�Z‹ZØÑ  T×%7Ñ%7¸5Ó%@Ø÷ ˆZð "&ˆDÔØ6:ˆDÔ3Ø6:ˆDÔ3÷ �ZŽZús   �A	«A	Á	
Ac                óF   • U R                  5       nU R                  U5        g r�   )Ú_fetch_token_from_exchangeÚ_store_token)rƒ   Ú
token_datas     r&   r‹   Ú&_WorkloadIdentityAuth._perform_refresh  s   € Ø×4Ñ4Ó6ˆ
Ø×Ñ˜*Õ%r%   c                óÚ   • [         R                  " 5       nUS   nU R                     US   U l        X#-   U l        X R                  U5      -   U l        S S S 5        g ! , (       d  f       g = f)NÚ
expires_inr]   )ÚtimeÚ	monotonicr€   rz   r{   Ú_refresh_delay_secondsr|   )rƒ   rš   Únowr�   s       r&   r™   Ú"_WorkloadIdentityAuth._store_token  sX   € Ü�nŠnÓˆØ Ñ-ˆ
à�Z‹ZØ!+¨NÑ!;ˆDÔØ69Ñ6FˆDÔ3Ø69×<WÑ<WÐXbÓ<cÑ6cˆDÔ3÷ �ZŽZús   §,AÁ
A*c                ó   • [        S5      e)Nz>Workload identity authentication must implement token exchange)ÚNotImplementedErrorr‘   s    r&   r˜   Ú0_WorkloadIdentityAuth._fetch_token_from_exchange  s   € Ü!Ð"bÓcÐcr%   c                óü  •  UR                   (       a  UR                  5       OS nUR                  S;   a	  [	        XS9eUR
                  (       a…  Uc  [        S5      e[        U5      (       d  [        S5      eUR                  S5      nUR                  S5      n[        U[        5      (       a  U(       d  [        S5      eX0R                  U5      S.$ [        S	UR                   35      e! [         a    S n NÕf = f)
N)i�  i‘  i“  )r\   Úbodyz4Token exchange succeeded but response body was emptyz@Token exchange succeeded but response body was not a JSON objectr]   r�   z<Token exchange response did not include a valid access_token)r]   r�   z"Token exchange failed with status )Úcontentrc   Ú
ValueErrorrb   r   Ú
is_successr   r   r^   Ú
isinstancer*   Ú_validate_expires_in)rƒ   r\   r§   r]   r�   s        r&   Ú_handle_token_responseÚ,_WorkloadIdentityAuth._handle_token_response  sæ   € ð	Ø&.×&6×&6�8—=‘=”?¸DˆDð ×Ñ ?Ó2Ü hÑ:Ð:à××Ø‰|Ü!Ð"XÓYÐYÜ˜4—=‘=Ü!Ð"dÓeÐeØŸ8™8 NÓ3ˆLØŸ™ ,Ó/ˆJÜ˜l¬C×0Ñ0¾Ü!Ð"`ÓaÐaØ$0×@YÑ@YÐZdÓ@eÑfÐfäØ0°×1EÑ1EÐ0FÐGó
ð 	
øô# ó 	ØŠDð	ús   ‚#C, Ã,C;Ã:C;c                ód   • [        U[        [        45      (       d  [        S5      e[        U5      $ )Nz:Token exchange response did not include a valid expires_in)r«   ÚintÚfloatr   )rƒ   r�   s     r&   r¬   Ú*_WorkloadIdentityAuth._validate_expires_in3  s*   € Ü˜*¤s¬E l×3Ñ3ÜÐZÓ[Ð[Ü�ZÓ Ð r%   c                óL   • U R                   S L =(       d    U R                  5       $ r�   )rz   Ú_token_expiredr‘   s    r&   r‡   Ú%_WorkloadIdentityAuth._token_unusable8  s!   € Ø×!Ñ! TÐ)×B¨T×-@Ñ-@Ó-BÐBr%   c                ób   • U R                   c  g[        R                  " 5       U R                   :¬  $ )NT)r{   rž   rŸ   r‘   s    r&   r´   Ú$_WorkloadIdentityAuth._token_expired;  s)   € Ø×2Ñ2Ñ:ØÜ�~Š~Ó 4×#JÑ#JÑJÐJr%   c                ób   • U R                   c  g[        R                  " 5       U R                   :¬  $ rw   )r|   rž   rŸ   r‘   s    r&   r‰   Ú$_WorkloadIdentityAuth._needs_refresh@  s)   € Ø×2Ñ2Ñ:ØÜ�~Š~Ó 4×#JÑ#JÑJÐJr%   c                óz   • U R                   R                  S[        5      n[        X!S-  5      n[	        X-
  S5      $ )Nr/   r   g        )rx   r^   ÚDEFAULT_REFRESH_BUFFER_SECONDSÚminÚmax)rƒ   r�   Úconfigured_bufferÚeffective_buffers       r&   r    Ú,_WorkloadIdentityAuth._refresh_delay_secondsE  s=   € Ø ×2Ñ2×6Ñ6Ð7OÔQoÓpÐÜÐ0¸q±.ÓAÐÜ�:Ñ0°#Ó6Ð6r%   c                ó   • Ag)ú>Preserve the established subject-token request retry behavior.Tr   ©rƒ   Úrequests     r&   Ú_can_retry_requestÚ(_WorkloadIdentityAuth._can_retry_requestJ  s   € àØr%   c                ó   • Ag)rÂ   Nr   rÃ   s     r&   Ú_prepare_retry_requestÚ,_WorkloadIdentityAuth._prepare_retry_requestO  s   € ár%   )
rz   r{   r|   r‚   ry   r€   r}   ru   rt   rx   )rx   r7   rt   r*   ru   ÚboolrJ   ÚNonerI   r�   )rD   ú
str | NonerJ   rË   )rJ   rË   )rš   údict[str, Any]rJ   rË   ©rJ   rÍ   )r\   zhttpx2.ResponserJ   rÍ   )r�   ÚobjectrJ   r±   )rJ   rÊ   )r�   r±   rJ   r±   )rÄ   úhttpx2.RequestrJ   rÊ   )rÄ   rÐ   rJ   rË   )r   r    r!   r"   ÚDEFAULT_TOKEN_EXCHANGE_URLr„   r   r’   r•   r‹   r™   r˜   r­   r¬   r‡   r´   r‰   r    rÅ   rÈ   r$   r   r%   r&   rq   rq   Ï   s‚   † ð
 #=Ø ñ:ð .ð:ð  ð	:ð
 ð:ð 
õ:ô&-ô:/ö;ô&ôdôdô
ô0!ô
CôKô
Kô
7ô
÷
r%   rq   c                  ób   ^ • \ rS rSr\SS.       SU 4S jjjr\S	S j5       rS
S jrSr	U =r
$ )ÚWorkloadIdentityAuthiT  Trs   c               ó$   >• [         TU ]  UUUS9  g )N)rx   rt   ru   )Úsuperr„   )rƒ   rx   rt   ru   Ú	__class__s       €r&   r„   ÚWorkloadIdentityAuth.__init__U  s    ø€ ô 	‰ÑØ/Ø1Ø#ð 	ò 	
r%   c           
     ó(  • U R                  5       nU R                  S   S   n[        R                  U5      nUc3  [	        SU< SSR                  [        R                  5       5       35      eU R                  (       d
  [        5       OS nUb  UR                  5       O[        SS9nU nUR                  U R                  [        UUU R                  S   U R                  S	   S
.SS9nU R                  U5      sS S S 5        $ ! , (       d  f       g = f)Nr-   r   zUnsupported token type: z. Supported types: z, F)Úfollow_redirectsr+   r,   )Ú
grant_typeÚsubject_tokenÚsubject_token_typer+   r,   rL   )rc   rQ   )Ú_get_subject_tokenrx   ÚSUBJECT_TOKEN_TYPESr^   r   ÚjoinÚkeysru   r   r`   r   Úpostrt   ÚTOKEN_EXCHANGE_GRANT_TYPEr­   )rƒ   rÛ   r   rÜ   Úlegacy_httpxÚexchange_clientre   r\   s           r&   r˜   Ú/WorkloadIdentityAuth._fetch_token_from_exchangeb  s  € à×/Ñ/Ó1ˆØ×+Ñ+¨JÑ7¸ÑEˆ
Ü0×4Ñ4°ZÓ@ÐØÑ%ÜØ*¨:©.Ð8KÈDÏIÉIÔVi×VnÑVnÓVpÓLqÐKrÐsóð ð 6:×5E×5EÔ+Ô-È4ˆà%1Ñ%=ˆL×ÑÔ!ÔCVÐhmÑCnð 	ñ  Ø—{‘{Ø×'Ñ'ä";Ø%2Ø*<Ø,0×,BÑ,BÐCYÑ,ZØ*.×*@Ñ*@ÐAUÑ*Vñð ð #ð 
ˆHð ×.Ñ.¨xÓ8÷ �_�_ús   Â)ADÄ
Dc                ó\   • U R                   S   nUS   " 5       nU(       d  [        S5      eU$ )Nr-   r   z>The workload identity provider returned an empty subject token)rx   r   )rƒ   r-   rÛ   s      r&   rÝ   Ú'WorkloadIdentityAuth._get_subject_token~  s4   € Ø×)Ñ)¨*Ñ5ˆØ  Ò-Ó/ˆÞÜÐ^Ó_Ð_ØÐr%   r   )rx   r(   rt   r*   ru   rÊ   rJ   rË   rÎ   rI   )r   r    r!   r"   rÑ   r„   r   r˜   rÝ   r$   Ú__classcell__)rÖ   s   @r&   rÓ   rÓ   T  s[   ø† ð
 #=Ø ñ
ð ,ð
ð  ð	
ð
 ð
ð 
÷
ð 
ð ó9ó ð9÷6ò r%   rÓ   )r+   r*   r,   r*   r/   zfloat | NonerJ   r4   )z3/var/run/secrets/kubernetes.io/serviceaccount/token)rF   z
str | PathrJ   r   )zhttps://management.azure.com/)rU   r*   rM   rÌ   rN   rÌ   rO   rÌ   rP   r*   rQ   r±   rR   úhttpx2.Client | NonerJ   r   )zhttps://api.openai.com/v1)rk   r*   rQ   r±   rR   ré   rJ   r   ).Ú
__future__r   rž   r~   Útypingr   r   r   r   r   r	   Úpathlibr
   Útyping_extensionsr   r   r   r   r_   Ú_utilsr   Ú_httpx2r   r   Ú_exceptionsr   r   r   Ú_utils._syncr   râ   rÑ   r»   rÞ   r   r(   r2   r#   r4   r7   r;   rK   rh   ro   rq   rÓ   r   r%   r&   Ú<module>rò      s¹  ðÞ "ã Û ß C× CÝ ß GÓ Gã å ß ?ß LÑ LÝ $àMÐ ØBÐ Ø!%Ð ð 2Ø
5ñÐ ô!˜9ô !ô
/�yô /ð +;Ð ˜iÓ :ô/˜9ô /ñ Ð1Ð3CÐEYÓZÐ ð ,0ñ	àðð ðð )ð	ð
 õð$ #Xð9Øð9àõ9ð4 4ð99ð !Ø Ø!Ø#ØØ(,ñ99Øð99ð ð99ð ð	99ð
 ð99ð ð99ð ð99ð &ð99ð ö99ðz 0ð)8ð Ø(,ñ	)8Øð)8ð ð)8ð &ð	)8ð
 ö)8ôXB˜GÐ$6Ñ7ô BôJ/Ð0Ð1AÑBõ /r%   