
    Pi
                     D   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mZ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dz  fdZddeddfdZdddedefdZ dedz  fdZ!dS )    N)	Generator)contextmanager)ApiGetModelRequest)build_kaggle_client)get_kaggle_credentialsset_kaggle_api_tokenset_kaggle_credentials)UnauthenticatedErrori  z<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. <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     b/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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#   5   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          }                    	                    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
API Token:)descriptionLogin)layout_r   Nc                    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...Tc                 b    g | ]+}|                                                     |          ,S  )stripLabel).0liner'   s     r   
<listcomp>zB_notebook_login.<locals>.on_click_login_button.<locals>.<listcomp>s   s7    &k&k&kt^b^h^h^j^j&kw}}T':':&k&k&k    
)
valuer7   childrenr   r   _validate_credentials_helpergetvalue	Exceptionstrsplit)	r1   tokencapturedmessageerrorlogin_token_widgettoken_widgetr$   r'   s	        r   on_click_login_buttonz._notebook_login.<locals>.on_click_login_button`   s3   " (/}}_'E'E&F#
	!')) 3X$U+++ (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 "A(B (A,,B /A,0B 
B+B&&B+)IPython.displayr&   
ipywidgetsr'   ImportErrorLayoutPasswordButtonVBoxHTMLNOTEBOOK_LOGIN_TOKEN_HTML_STARTNOTEBOOK_LOGIN_TOKEN_HTML_ENDrB   on_click)	r$   library_errorr&   
box_layoutlogin_buttonrJ   rH   rI   r'   s	   `     @@@r   _notebook_loginrY   G   se   QM)++++++&&&&&&& ) ) )-((() (PX`effJ###==L>>g>66L LL899LL677		
  &   Gl l l l l l l l l l l* /00000s    /Tverboser[   c                 H   t                      5 }|                                }|                                 |                    ddt	                                }|j                            |                                          }d|v r0| rt          	                    d           |d         cd d d            S d|v r.|d         t          k    r| rt                              d           n| rt                              d           	 d d d            d S # 1 swxY w Y   d S )Nzapi.v1.DiagnosticsServiceHellouserNamez*Kaggle credentials successfully validated.codezInvalid Kaggle credentials. You can obtain a Kaggle API token on your [Kaggle settings page](https://www.kaggle.com/settings/account).z3Unable to validate Kaggle credentials at this time.)r   http_client_init_session_prepare_requestr   _sessionsendjsonr   infoINVALID_CREDENTIALS_ERRORrG   warning)r[   
api_clientr`   requestresponses        r   r?   r?   x   s   			 * ,,..!!###../JGUgUiUijj',,W55::<<!! KIJJJJ'        xHV$48Q$Q$Q  ]    	SOOQRRR#                 s   BD;ADDDc                     t                      rt          |            dS t          j        d          }t          |           | sdS t	                       dS )z@Prompt the user for their Kaggle API token and save it globally.Nz9Enter your Kaggle API token (input will not be visible): )r#   rY   getpassr   r?   )r$   rD   s     r   loginrn      sd      ],--- [\\  """""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.
    rZ   usernameN)r   r
   r?   rA   )r[   rp   es      r   whoamirr      s     "## %"$$$,/@@@ 	*))"$$$ , , ,"$$!+,s   A A 
A AA 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.FrZ   rp   N)rr   rA   r5   r;   r   get_usernamert      s?    e$$$Z00   tts    
&&)T)"rm   r   r   collections.abcr   
contextlibr   (kagglesdk.models.types.model_api_servicer   kagglehub.clientsr   kagglehub.configr   r   r	   kagglehub.exceptionsr
   	getLoggerr   r   rg   rS   rT   r   r   boolr#   rY   rB   r?   rn   dictrr   rt   r5   r;   r   <module>r~      s    				  % % % % % % % % % % % % G G G G G G 1 1 1 1 1 1          6 5 5 5 5 5
'
H
%
% #8 !  '	"+tT*A B ' ' ' '(    $.1$ .14 .1 .1 .1 .1b 59   T S4Z    *# # # # # # #" # , , ,t ,t , , , ,cDj      r;   