
     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 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$ d dl%m&Z&  G d de          Z' e j(        e)          Z* G d dee          Z+deee,e,f                  ded         fdZ-de,dee         ddfdZ.de,dee         fdZ/	 	 d!ded         dee0         dee0         ddfdZ1dee,         de,fd Z2dS )"    N)OrderedDict)Values)DictListOptional	TypedDict)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)BaseDistribution)PyPI)PipXmlrpcTransport)
indent_log)write_outputc                   :    e Zd ZU eed<   eed<   ee         ed<   dS )TransformedHitnamesummaryversionsN)__name__
__module____qualname__str__annotations__r        \/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pip/_internal/commands/search.pyr   r      s4         
IIILLL3ir    r   c            	       ~    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dS )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TreturnNc                     | j                             ddddt          j        d           | j                            d| j                    d S )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(   sW      MF 	! 	
 	
 	
 	''4=99999r    optionsargsc                 &   |st          d          |}|                     ||          }t          |          }d }t          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   s     	LJKKKKKw//	i((: 	;#577:Nd>:::: 	Nr    r?   c                 |   |j         }|                     |          }t          ||          }t          j                            ||          }	 |                    ||dd          }n=# t          j        j        $ r&}d|j         d|j	         }	t          |	          d }~ww xY wt          |t                    sJ |S )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    M	**733&y'::	}((I>>	(;;%@@$GGDD}" 	( 	( 	(WWWEDUWW  w'''		(
 $%%%%%s   A( (B"<!BB")r$   N)r   r   r   __doc__usageignore_require_venvr2   r   r   r   intrB   r   r7   r   r    r!   r#   r#   !   s        JJ!E
: 
: 
: 
: 6  c  s         DI  4S#X;O      r    r#   rA   r$   c                 r   t                      }| D ]}|d         }|d         }|d         }||                                vr|||gd||<   ;||         d                             |           |t          ||         d                   k    r|||         d<   t	          |                                          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     +6--H 4 46{i.i.x}}&&"$I HTNN TN:&--g666 /(4.*DEEEE,3y)!!"""r    latestdistc                 2   |t                      5  |j        | k    rt          d|j                   nJt          d|j                   t          |           j        rt          d|            nt          d|            d d d            d S # 1 swxY w Y   d S d S )NzINSTALLED: %s (latest)zINSTALLED: %sz=LATEST:    %s (pre-release; install with `pip install --pre`)zLATEST:    %s)r   rY   r   parse_versionpre)r`   ra   s     r!   print_dist_installation_infore   r   s    \\ 	: 	:|v%%5t|DDDD_dl;;; ((, : 5    !&999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: s   A,B

BBr   c                 H    t                      }|                    |           S )N)r   get_distribution)r   envs     r!   get_installed_distributionri      s!    
!
#
#C%%%r    name_column_widthr6   c                    | sd S |t          d | D                       dz   }| D ]}|d         }|d         pd}t          |                    ddg                    }|A||z
  dz
  }|d	k    r3t          j        ||          }d
d|dz   z  z                       |          }| d| d}	|	| d| }
	 t          |
           t          |          }t          ||           # t          $ r Y w xY wd S )Nc                     g | ]I}t          |d                    t          t          |                    ddg                              z   JS )r   r   -)lenr\   get).0r_   s     r!   
<listcomp>z!print_results.<locals>.<listcomp>   sZ        F$$s?377:PSu;U;U+V+V'W'WW  r       r   r    r   rm      
   
    z ()z - )
maxr\   ro   textwrapwrapjoinr   ri   re   UnicodeEncodeError)rA   rj   r6   r_   r   r   r`   target_widthsummary_linesname_latestlinera   s               r!   r>   r>      su   
    #     	   6{i.&B cU!;!;<<%),==ALb   (g| D D#):Q)>"??EEmTT*****0???g??	-d33D(6666! 	 	 	D	# s   2.C!!
C.-C.r   c                 .    t          | t                    S )N)key)rz   rc   )r   s    r!   r\   r\      s    x]++++r    )NN)3loggingr<   r9   r{   xmlrpc.clientrF   collectionsr   optparser   typingr   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.metadata.baser   pip._internal.models.indexr   pip._internal.network.xmlrpcr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   	getLoggerr   loggerr#   r   r8   re   ri   rW   r>   r\   r   r    r!   <module>r      s     



      # # # # # #       2 2 2 2 2 2 2 2 2 2 2 2 @ @ @ @ @ @ 2 2 2 2 2 2 = = = = = = D D D D D D D D 1 1 1 1 1 1 : : : : : : 8 8 8 8 8 8 + + + + + + ; ; ; ; ; ; 2 2 2 2 2 2 1 1 1 1 1 1    Y    
	8	$	$2 2 2 2 2G0 2 2 2j#d38n- #$7G2H # # # #8: :H=M4N :SW : : : :"&S &X6F-G & & & & (,$($ $

 $}$ SM$ 
	$ $ $ $N,d3i ,C , , , , , ,r    