
    G@d                         d Z ddlZddlmZ ddlmZmZmZmZ ddl	Z	ddl
mZmZ ddlmZ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e G d dee                      ZdS )zKite completions HTTP client.    N)quote)QObjectQThreadSignalQMutex)_running_under_pytest)KITE_ENDPOINTSKITE_REQUEST_MAPPING)class_register)KiteMethodProviderMixIn)status)
TEXT_TYPESc                   *   e Zd Z eee          Z ee          Z e            Z	 eee
e          Z ee
          Z ee
fef          Z e            Z ee
          Z ee
e          ZddZd Zd Zd Zd Zd Zd Zd	 Zd
 ZddZd Zd ZdS )
KiteClientTc                    t          j        | |           d | _        i | _        g | _        t                      | _        i | _        i | _        d| _	        || _
        t          d           | _        |                     | j                   | j        j                            | j                   | j                            | j                   | j                            | j                   | j                            | j                   d S )NF)r   __init__endpointrequests	languagesr   mutexopened_filesopened_files_statusthread_startedenable_code_snippetsr   threadmoveToThreadstartedconnectsig_perform_requestperform_requestsig_perform_status_request
get_statussig_perform_onboarding_requestget_onboarding_file)selfparentr   s      Olib/python3.11/site-packages/spyder/plugins/completion/providers/kite/client.pyr   zKiteClient.__init__+   s    v&&&XX
#% #$8!dmm$+&&&##DL111 (()=>>>'//@@@+33D4LMMMMM    c                    | j         s| j                                         t                              d           t          j                    | _        |                                 | _	        | j
                            | j	                   d S )NzStarting Kite HTTP session...)r   r   startloggerdebugr   Sessionr   get_languagesr   sig_client_startedemitr&   s    r(   r+   zKiteClient.start<   sv    " 	 K4555 (**++--$$T^44444r)   c                     d| _         d S )NT)r   r2   s    r(   r   zKiteClient.startedD   s    "r)   c                     | j         rNt                              d           | j                                         | j                                         d S d S )NzClosing Kite HTTP session...)r   r,   r-   r   closer   quitr2   s    r(   stopzKiteClient.stopG   sX     	LL7888M!!!K	 	r)   c                     t           j        \  }}|                     ||          \  }}|sg S |t          |t                    rdg}|S )Npython)r
   LANGUAGES_ENDPOINTperform_http_request
isinstancer   r&   verburlsuccessresponses        r(   r/   zKiteClient.get_languagesM   sV    "5	c 55dC@@ 	Iz(J?? zHr)   c                 V    t           j        \  }}|                     ||          \  }}|S )z0Perform a request to get kite's onboarding file.)r
   ONBOARDING_ENDPOINTr;   r=   s        r(   _get_onboarding_filezKiteClient._get_onboarding_fileW   s-    "6	c 55dC@@r)   c                 b    |                                  }| j                            |           dS )zGet onboarding file.N)rD   sig_onboarding_response_readyr1   )r&   onboarding_files     r(   r%   zKiteClient.get_onboarding_file]   s0    3355*//@@@@@r)   c                 t    t           j        \  }}|rd|i}nddi}|                     |||          \  }}||fS )z0Perform a request to get kite status for a file.filenamefiletyper9   )
url_params)r
   STATUS_ENDPOINTr;   )r&   rI   r>   r?   rK   r@   rA   s          r(   _get_statuszKiteClient._get_statusb   s]    "2	c 	0$h/JJ$h/J 55#* 6 . .  r)   c                    |                      |          \  }}|r|5t                      }| j        t                                       |           dS t          |t                    r`t          d          }t          d                              |          }|||d}| j        t                                       |           dS | j        t                                       |           dS )z%Get kite status for a given filename.Nz with errors)extra_statuszt<code>{error}</code><br><br>Note: If you are using a VPN, please don't route requests to localhost/127.0.0.1 with it)error)r   shortlong)
rM   r   sig_status_response_readystrr1   r<   r   r   formatdict)r&   rI   success_statuskite_status
status_strlong_strkite_status_dicts          r(   r#   zKiteClient.get_statusm   s   &*&6&6x&@&@# 	C;. ((K*3/44[AAAAAZ00 	C^<<<J 7 8 8 9?#. 9? 90 90  %#  "  " *40556FGGGGG*4055kBBBBBr)   Nc                    d }t          | j        |          }	  ||||          }n# t          $ r Y dS w xY w|j        dk    }|r7	 |                                }n!# t          $ r |j        }|dk    rd n|}Y nw xY w||fS )N)paramsjson)FN    )getattrr   	Exceptionstatus_coder^   text)	r&   r>   r?   rK   r]   rA   http_methodhttp_responser@   s	            r(   r;   zKiteClient.perform_http_request   s    dmT22	'KJVLLLMM 	 	 	;;	+s2 	@@(--// @ @ @(-#+r>>44x@   s   ( 
66A A:9A:c                    d }| j         z|t          v rqt          |         \  }}d |                                D             } |j        di |}	 |                     |||          \  }}n# t
          t          f$ r |cY S w xY w|S )Nc                 b    i | ],\  }}|t          |t                    rt          |          n|-S  )r<   r   r   ).0keyvalues      r(   
<dictcomp>z#KiteClient.send.<locals>.<dictcomp>   sG     "8 "8 "8 S% Zz%B%BMU5\\\"8 "8 "8r)   )r]   ri   )r   r   itemsrU   r;   ConnectionRefusedErrorConnectionError)	r&   methodr]   rK   rA   	http_verbpathencoded_url_paramsr@   s	            r(   sendzKiteClient.send   s    =$3G)G)G26:OIt"8 "8$.$4$4$6$6"8 "8 "8 4;44!344D $($=$=tF %> %4 %4!*O<       s   A+ +B Bc                 
   d }|| j         v rt                              d                    ||                     | j         |         }t	          | |          } ||          }|| j        v r*| j        |         }t	          | |          }| ||          }t          |t          t          d           f          s-t                      s| j
                            ||           d S d S | j                            ||pi            d S )NzPerform request {0} with id {1})sender_registryr,   r-   rU   ra   handler_registryr<   rV   typer	   sig_client_wrong_responser1   sig_response_ready)	r&   req_idrq   r]   rA   handler_namehandlerconverter_name	converters	            r(   r!   zKiteClient.perform_request   s(   T)))LL:AA    ! ! !/7LdL11GwvH...!%!6v!>#D.99	'(y22H(T4::$677 	A')) F.33FHEEEEEF F #((R@@@@@r)   )T)NN)__name__
__module____qualname__r   intrV   r{   listr0   sig_client_not_respondingrT   objectr    r"   rS   r$   rF   rz   r   r+   r   r7   r/   rD   r%   rM   r#   r;   ru   r!   ri   r)   r(   r   r      sq       T** & &c622!' &vw 7 7%+VXX"$*F3KK! &sF 3 3N N N N"5 5 5# # #      A A A
	! 	! 	!C C C*! ! ! !   A A A A Ar)   r   )__doc__loggingurllib.parser   qtpy.QtCorer   r   r   r   r   spyder.config.baser   r	   (spyder.plugins.completion.providers.kiter
   r   3spyder.plugins.completion.providers.kite.decoratorsr   2spyder.plugins.completion.providers.kite.providersr   5spyder.plugins.completion.providers.kite.utils.statusr   spyder.py3compatr   	getLoggerr   r,   r   ri   r)   r(   <module>r      sZ   $ #        9 8 8 8 8 8 8 8 8 8 8 8  7 6 6 6 6 6 6 6* * * * * * * * N N N N N N      H H H H H H ' ' ' ' ' ' 
	8	$	$ RA RA RA RA RA1 RA RA RA RA RAr)   