
    Wh                    n   d dl mZ 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 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)dZ+d*dZ,d+d!Z-	 	 d,d-d%Z.d.d(Z/dS )/    )annotationsN)OrderedDict)Values)	TypedDict)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)BaseDistribution)PyPI)PipXmlrpcTransport)
indent_log)write_outputc                  .    e Zd ZU ded<   ded<   ded<   dS )TransformedHitstrnamesummary	list[str]versionsN)__name__
__module____qualname____annotations__     o/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/commands/search.pyr   r      s0         IIILLLr   r   c                  2    e Zd ZdZdZdZddZddZddZdS )SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>TreturnNonec                    | 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   optionsr   argsr   intc                &   |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hitsr7   s          r    runzSearchCommand.run6   s     	LJKKKKKw//	i((: 	;#577:Nd>:::: 	Nr   r@   list[dict[str, str]]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ServerProxyr8   Fault	faultCodefaultStringr   
isinstancelist)
r1   r@   r3   	index_urlsession	transportpypirB   faultmessages
             r    r8   zSearchCommand.searchF   s    M	**733&y'::	}((I>>	(;;%@@$GGDD}" 	( 	( 	(WWWEDUWW  w'''		(
 $%%%%%s   A( (B"<!BB"N)r#   r$   )r3   r   r4   r   r#   r5   )r@   r   r3   r   r#   rD   )	r   r   r   __doc__usageignore_require_venvr2   rC   r8   r   r   r    r"   r"   #   sc        JJ!E
: 
: 
: 
:             r   r"   rB   rD   r#   list[TransformedHit]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_versionrO   values)rB   packageshitr   r   r[   s         r    r9   r9   X   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   latestr   distBaseDistribution | Noner$   c                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   r[   r   parse_versionpre)rb   rc   s     r    print_dist_installation_inforh   t   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_distributionrl      s!    
!
#
#C%%%r   name_column_width
int | Noner7   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).0ra   s     r    
<listcomp>z!print_results.<locals>.<listcomp>   sZ        F$$s?377:PSu;U;U+V+V'W'WW  r      r   r    r   rq      
   
    z ()z - )
maxr^   rs   textwrapwrapjoinr   rl   rh   UnicodeEncodeError)rB   rm   r7   ra   r   r   rb   target_widthsummary_linesname_latestlinerc   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   r   c                .    t          | t                    S )N)key)r~   rf   )r   s    r    r^   r^      s    x]++++r   )rB   rD   r#   rY   )rb   r   rc   rd   r#   r$   )r   r   r#   rd   )NN)rB   rY   rm   rn   r7   rn   r#   r$   )r   r   r#   r   )0
__future__r   loggingr=   r:   r   xmlrpc.clientrH   collectionsr   optparser   typingr   pip._vendor.packaging.versionr   rf   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"   r9   rh   rl   r?   r^   r   r   r    <module>r      s1   " " " " " "   



      # # # # # #             @ @ @ @ @ @ 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# # # #8: : : :"& & & & %)!%$ $ $ $ $N, , , , , ,r   