
    LMh                     H   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ  ej        e          ZdZd	Zd
Zedeej        ddf         fd            ZdefdZdeddfdZdddedee         fdZddeddfdZdddedefdZdee         fdZdS )    N)	Generator)contextmanager)Optional)KaggleApiV1Client)set_kaggle_credentials)UnauthenticatedErrori  a  <center> <img
src=https://www.kaggle.com/static/images/site-logo.png
alt='Kaggle'> <br> Create an API token from <a
href="https://www.kaggle.com/settings/account" target="_blank">your Kaggle
settings page</a> and paste it below along with your Kaggle username. <br> </center>z
<b>Thank You</b></center>returnc               #     K   t          j                    } t          j        |           }t                              |           	 | V  t                              |           dS # t                              |           w xY w)zCapture output that is logged using the logger.

    Example:
    ```py
    >>> output = capture_logger_output()
    >>> logger.info("This is an info message")
    >>> logger.error("This is an error message")
    >>> print(output)
    ```
    N)ioStringIOloggingStreamHandler_logger
addHandlerremoveHandler)bufferhandlers     N/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/kagglehub/auth.py_capture_logger_outputr      sy       []]F#F++Gw'g&&&&&g&&&&s   A% %Bc                      	 ddl m}   |             j        }|j        D ]}|j        dk    r dS dS # t
          t          f$ r Y dS w xY w)zReturn `True` if code is executed in a notebook (Jupyter, Kaggle Notebook, Colab, QTconsole).

    Taken from https://stackoverflow.com/a/39662359.
    Adapted to make it work with Google colab as well.
    r   )get_ipythonZMQInteractiveShellTF)IPythonr   	__class____mro____name__	NameErrorModuleNotFoundError)r   shell_classparent_classs      r   _is_in_notebookr!   /   s    	''''''!kmm-'/ 	 	L$(===tt >u*+   uus   *1 1 AAvalidate_credentialsc           	         	 d}	 ddl m} ddlm	 n# t          $ r t	          |          w xY w	                    dddd	          }	                    d
          	                    d          	                    d          }		                    	
                    t                    |	
                    t                    g|           |           dt          ddf 	fd}|                    |           dS )zRPrompt the user for their Kaggle token and save it in a widget (Jupyter or Colab).z;You need the `ipywidgets` module: `pip install ipywidgets`.r   )display)widgetsflexcolumncenterz50%)r$   	flex_flowalign_itemswidthz	Username:)descriptionzToken:Login)layout_r	   Nc                    j         }j         }d_         
                    d          g_        	 t                      5 }t	          ||           	du rt                       d d d            n# 1 swxY w Y   |                                }n&# t          $ r}t          |          }Y d }~nd }~ww xY w
fd|	                    d          D             _        d S )N zConnecting...usernameapi_keyTc                 b    g | ]+}|                                                     |          ,S  )stripLabel).0liner%   s     r   
<listcomp>zB_notebook_login.<locals>.on_click_login_button.<locals>.<listcomp>p   s7    &k&k&kt^b^h^h^j^j&kw}}T':':&k&k&k    
)
valuer8   childrenr   r   _validate_credentials_helpergetvalue	Exceptionstrsplit)r/   r3   tokencapturedmessageerrorlogin_token_widgettoken_widgetusername_widgetr"   r%   s         r   on_click_login_buttonz._notebook_login.<locals>.on_click_login_button\   s@   "(" (/}}_'E'E&F#
	!')) 3X&%HHHH (4//02223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ''))GG 	! 	! 	!%jjGGGGGG	! 'l&k&k&kw}}UYGZGZ&k&k&k###s;   B $A1%B 1A55B 8A59B 
B4B//B4)IPython.displayr$   
ipywidgetsr%   ImportErrorLayoutTextPasswordButtonVBoxHTMLNOTEBOOK_LOGIN_TOKEN_HTML_STARTNOTEBOOK_LOGIN_TOKEN_HTML_ENDrC   on_click)
r"   library_errorr$   
box_layoutlogin_buttonrL   rI   rJ   rK   r%   s
   `     @@@@r   _notebook_loginr\   A   s   QM)++++++&&&&&&& ) ) )-((() (PX`effJll{l;;O###99L>>g>66L LL899LL677	
  & 	 	 Gl l l l l l l l l l l l, /00000s    0Tverboser^   c                 8   t                      }|                    d          }d|v r$| rt                              d           |d         S d|v r.|d         t          k    r| rt                              d           n| rt                              d           d S )Nz/hellouserNamez*Kaggle credentials successfully validated.codezInvalid Kaggle credentials. You can check your credentials on the [Kaggle settings page](https://www.kaggle.com/settings/account).z3Unable to validate Kaggle credentials at this time.)r   getr   infoINVALID_CREDENTIALS_ERRORrH   warning)r^   
api_clientresponses      r   r@   r@   u   s    "$$J~~h''HX 	GLLEFFF
##	8		 04M M M 	MM U   
 OMNNN4r<   c                     t                      rt          |            dS t          d          }t          j        d          }t	          ||           | sdS t                       dS )zMPrompt the user for their Kaggle username and API key and save them globally.NzEnter your Kaggle username: z7Enter your Kaggle API key (input will not be visible): r2   )r!   r\   inputgetpassr   r@   )r"   r3   r4   s      r   loginrk      sw      ],---788/"[\\Hg>>>>  """""r<   c                     t                      }|                                st                      	 t          |           }|rd|iS t                      # t          $ r}t                      |d}~ww xY w)zv
    Return a dictionary with the username of the authenticated Kaggle user or raise an error if unauthenticated.
    r]   r3   N)r   has_credentialsr   r@   rB   )r^   rf   r3   es       r   whoamiro      s     #$$J%%'' %"$$$,/@@@ 	*))"$$$ , , ,"$$!+,s   A A 
A4 A//A4c                  R    	 t          d          d         S # t          $ r Y dS w xY w)zWReturns the username of the authenticated logged-in user if configured, otherwise None.Fr]   r3   N)ro   rB   r6   r<   r   get_usernamerq      s?    e$$$Z00   tts    
&&)T) rj   r   r   collections.abcr   
contextlibr   typingr   kagglehub.clientsr   kagglehub.configr   kagglehub.exceptionsr   	getLoggerr   r   rd   rV   rW   r   r   boolr!   r\   rC   r@   rk   dictro   rq   r6   r<   r   <module>r{      s    				  % % % % % % % % % % % %       / / / / / / 3 3 3 3 3 3 5 5 5 5 5 5
'
H
%
% #X !  '	"+tT*A B ' ' ' '(    $11$ 114 11 11 11 11h 59   T Xc]    "# # # # # # #$ # , , ,t ,t , , , , hsm      r<   