
    ni                     t    d dl Z d dlZd dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZ  G d d          ZdS )    N)datetime	timedeltatimezone)KaggleClient)IntrospectTokenRequest)
ApiVersionGenerateAccessTokenRequestGenerateAccessTokenResponseExpireApiTokenRequestc                       e Zd ZdZ ed          Z	 	 	 	 	 ddedededed	ed
e	e         fdZ
eddededd fd            ZefddZefddZdefdZddZdefdZdefdZddedefdZdeddfdZdefdZdS )KaggleCredentialsz~/.kaggle/credentials.json   )hoursNclientrefresh_tokenaccess_tokenaccess_token_expirationusernamescopesc                 b    || _         || _        || _        || _        || _        ||ng | _        d S N)_client_refresh_token_access_token_access_token_expiration	_username_scopes)selfr   r   r   r   r   r   s          S/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/kagglesdk/kaggle_creds.py__init__zKaggleCredentials.__init__   s>     +)(?%!!'!3vv    	file_pathreturnc           
      r   t           j                            |pt          j                  }t           j                            |          sd S 	 t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   n# t          j	        t          f$ r Y d S w xY w|                    d          }|sd S |                    d          }|rt          j        |          }nd } | |||                    d          ||                    d          |                    d                    S )Nrr   r   r   r   r   )r   r   r   r   r   r   )ospath
expanduserr   DEFAULT_CREDENTIALS_FILEexistsopenjsonloadJSONDecodeErrorKeyErrorgetr   fromisoformat)clsr   r"   fdatar   r   s          r   r-   zKaggleCredentials.load"   s   G&&y'^4E4^__	w~~i(( 	4	i%% $y||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $$h/ 	 	 	44	 11 	4"&((+D"E"E" 	+&.&<=T&U&U##&*#s'.11$;XXj))88H%%
 
 
 	
s6   B A?3B ?BB BB B%$B%c                     t           j                            |          }t           j                            |          rt          j        |           d S d S r   )r&   r'   r(   r*   remove)r   r"   s     r   deletezKaggleCredentials.deleteA   sM    G&&y11	7>>)$$ 	!Ii     	! 	!r!   c                 d   | j         st          d          t          j                            |          }t          j                            |          }t          j                            |          st          j        |           | j         | j        pd| j	        r| j	        
                                nd| j        pd| j        pg d}t          |d          5 }t          j        ||d           d d d            n# 1 swxY w Y   	 t          j        |d           d S # t"          $ r Y d S w xY w)NMissing refresh token )r   r   r   r   r   w   )indenti  )r   	Exceptionr&   r'   r(   dirnamer*   makedirsr   r   	isoformatr   r   r+   r,   dumpchmodOSError)r   r"   dir_namer4   r3   s        r   savezKaggleCredentials.saveF   sw   " 	53444G&&y11	7??9--w~~h'' 	"K!!! "0 .4"=A=Zb-77999`b,"l(b
 
 )S!! 	)QIdAa((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	HY&&&&& 	 	 	DD	s$   C>>DD
D! !
D/.D/c                     t                      }| j        |_        | j        j        j                            |          }|j        r|j        st          d          |j        | _
        |j        S )NzAuthentication failed.)r   r   tokenr   securityoauth_clientintrospect_tokenactiver   r>   r   )r   requestresponses      r   
introspectzKaggleCredentials.introspecta   sh    (***<(5FFwOO 	6h&7 	64555!*  r!   c                    | j         st          d          |                                 }t          j        t
          j                  t          |j                  z   | _	        |j
        | _        |                                  d S )Nr9   )seconds)r   r>   generate_access_tokenr   nowr   utcr   
expires_inr   rH   r   rF   )r   rN   s     r   refresh_access_tokenz&KaggleCredentials.refresh_access_tokenl   sp    " 	53444--//(0X\(B(BYW_WjEkEkEk(k%%^		r!   c                     | j          p7| j         t          j        t          j                  t          d          z
  k     S )N   )minutes)r   r   rS   r   rT   r   r   s    r   access_token_has_expiredz*KaggleCredentials.access_token_has_expiredu   sJ    00 "D4QT\T`LU
 U
b!!!U" 5" 	"r!   c                     | j         r|                                 r| j        sd S |                                  | j         S r   )r   r[   r   rV   rZ   s    r   get_access_tokenz"KaggleCredentials.get_access_tokenz   sK    ! 	(T%B%B%D%D 	(& t%%'''!!r!   expiration_durationc                     | j         sd S t                      }| j         |_        t          j        |_        |pt          j        |_        | j	        j
        j                            |          S r   )r   r	   r   r   API_VERSION_V1api_versionr   DEFAULT_ACCESS_TOKEN_EXPIRATIONr^   r   usersaccount_clientrR   )r   r^   rM   s      r   rR   z'KaggleCredentials.generate_access_token   s`    " 	4,.. $ 3(7&9&n=N=n#|!0FFwOOOr!   reasonc                     | j         sd S t                      }| j         |_        ||_        | j        j        j                            |           |                                  d S r   )	r   r   rH   re   r   rc   rd   expire_api_tokenr7   )r   re   rM   s      r   revoke_tokenzKaggleCredentials.revoke_token   s[    " 	F'))+)::7CCCr!   c                     | j         S r   )r   rZ   s    r   get_usernamezKaggleCredentials.get_username   s
    ~r!   )NNNNNr   )r#   N)__name__
__module____qualname__r)   r   rb   r   strr   listr    classmethodr-   r7   rF   rO   rV   boolr[   r]   r
   rR   rh   rj    r!   r   r   r      s       ;&/ib&9&9&9#
 " ,0 < << < 	<
 "*< < S	< < < <  
 
, 
3 
BU 
 
 
 [
<  8 ! ! ! ! !
 6     6	!C 	! 	! 	! 	!   "$ " " " "
"# " " " "P P PNi P P P P3 4    c      r!   r   )r,   r&   r   r   r   kagglesdk.kaggle_clientr   &kagglesdk.security.types.oauth_servicer   %kagglesdk.users.types.account_servicer   r	   r
   r   r   rr   r!   r   <module>rv      s     				 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 I I I I I I           F F F F F F F F F Fr!   