
    h              	          d dl Z d dlZ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mZmZmZmZ d dlmZ d dlmZ d dl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! d dl"m#Z# d dl$m%Z% er G d de      Z& e jN                  e(      Z) G d dee      Z*deee+e+f      ded   fdZ,de+de+ddfdZ-	 	 dded   dee.   dee.   ddfdZ/dee+   de+fdZ0y)    N)OrderedDict)Values)TYPE_CHECKINGDictListOptional	TypedDict)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)PyPI)PipXmlrpcTransport)
indent_log)write_outputc                   2    e Zd ZU eed<   eed<   ee   ed<   y)TransformedHitnamesummaryversionsN)__name__
__module____qualname__str__annotations__r        FD:\EasyAligner\venv\Lib\site-packages\pip/_internal/commands/search.pyr   r      s    	s)r    r   c            	       d    e Zd ZdZdZdZddZdedee	   de
fd	Zd
ee	   dedeee	e	f      fdZy)SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TreturnNc                     | j                   j                  ddddt        j                  d       | j                  j                  d| j                          y )Nz-iz--indexindexURLz3Base URL of Python Package Index (default %default))destmetavardefaulthelpr   )cmd_opts
add_optionr   pypi_urlparserinsert_option_group)selfs    r!   add_optionszSearchCommand.add_options(   sI      MMF 	! 	
 	''4==9r    optionsargsc                     |st        d      |}| j                  ||      }t        |      }d }t        j                  j                         rt        j                         d   }t        ||       |rt        S t        S )Nz)Missing required argument (search query).r   )terminal_width)r   searchtransform_hitssysstdoutisattyshutilget_terminal_sizeprint_resultsr   r   )r1   r3   r4   query	pypi_hitshitsr6   s          r!   runzSearchCommand.run4   sp    JKKKKw/	i(::#557:Nd>:Nr    r?   c                    |j                   }| j                  |      }t        ||      }t        j                  j                  ||      }	 |j                  ||dd      }t        |t              sJ |S # t        j                  j                  $ r,}d|j                   d|j                   }	t        |	      d }~ww xY w)N)r   r   orzXMLRPC request failed [code: z]
)r&   get_default_sessionr   xmlrpcclientServerProxyr7   Fault	faultCodefaultStringr   
isinstancelist)
r1   r?   r3   	index_urlsession	transportpypirA   faultmessages
             r!   r7   zSearchCommand.searchD   s    MM	**73&y':	}}((I>	(;;%@$GD $%%% }}"" 	(//@EDUDUCVW  w''		(s   A4 4B='B88B=)r$   N)r   r   r   __doc__usageignore_require_venvr2   r   r   r   intrB   r   r7   r   r    r!   r#   r#   !   s`    J!E
: 6  c  s   DI  4S#X;O r    r#   rA   r$   c                    t               }| D ]b  }|d   }|d   }|d   }||j                         vr|||gd||<   /||   d   j                  |       |t        ||   d         k(  s[|||   d<   d t	        |j                               S )z
    The list from pypi is really a list of versions. We want a list of
    packages with the list of versions stored inline. This converts the
    list from pypi into one we can use.
    r   r   version)r   r   r   r   )r   keysappendhighest_versionrM   values)rA   packageshitr   r   rY   s         r!   r8   r8   V   s     -8MH6{i.i.x}}&"$IHTN TN:&--g6 /(4.*DEE,3y)! $ !""r    r   latestc                 R   t               }|j                  |       }|~t               5  |j                  |k(  rt	        d|j                         nDt	        d|j                         t        |      j                  rt	        d|       nt	        d|       d d d        y y # 1 sw Y   y xY w)NzINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)zLATEST:    %s)r   get_distributionr   rY   r   parse_versionpre)r   r`   envdists       r!   print_dist_installation_inforg   r   s    
!
#C%D\||v%5t||D_dll; (,, 5 !&9 \ \s   A+BB&name_column_widthr6   c                    | sy |Nt        | D cg c]6  }t        |d         t        t        |j                  ddg                  z   8 c}      dz   }| D ]  }|d   }|d   xs d}t        |j                  ddg            }|=||z
  dz
  }|dkD  r0t	        j
                  ||      }d	d
|dz   z  z   j                  |      }| d| d}	|	| d| }
	 t        |
       t        ||        y c c}w # t        $ r Y w xY w)Nr   r   -   r       
   
    z ()z - )
maxlenr\   gettextwrapwrapjoinr   rg   UnicodeEncodeError)rA   rh   r6   r_   r   r   r`   target_widthsummary_linesname_latestlines              r!   r>   r>      sK   
    $# F$s?377:PSu;U+V'WW#  	 6{i.&B cU!;<%),==ALb  (g| D#):Q)>"??EEmTb*012#gY?	(v6 0 " 		s   ;C.C33	C?>C?r   c                 $    t        | t              S )N)key)rs   rc   )r   s    r!   r\   r\      s    x]++r    )NN)1loggingr<   r9   rv   xmlrpc.clientrF   collectionsr   optparser   typingr   r   r   r   r	   pip._vendor.packaging.versionr
   rc   pip._internal.cli.base_commandr   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr   r   pip._internal.exceptionsr   pip._internal.metadatar   pip._internal.models.indexr   pip._internal.network.xmlrpcr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   	getLoggerr   loggerr#   r   r8   rg   rW   r>   r\   r   r    r!   <module>r      s     
   #  A A @ 2 = D 1 : + ; 2 1  
		8	$2G0 2j#d38n- #$7G2H #8:s :C :D :* (,$(#

 #}# SM# 
	#L,d3i ,C ,r    