
    dh                    r   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jN                  e(      Z) G d dee      Z*ddZ+ddZ,ddZ-	 	 d	 	 	 	 	 	 	 ddZ.ddZ/y)     )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<   y)TransformedHitstrnamesummary	list[str]versionsN)__name__
__module____qualname____annotations__     _/var/www/html/vivango/api/ia/venv/lib/python3.12/site-packages/pip/_internal/commands/search.pyr   r      s    
ILr   r   c                  0    e Zd ZdZdZdZddZd	dZd
dZy)SearchCommandz@Search for PyPI packages whose name or summary contains <query>.z
      %prog [options] <query>Tc                    | 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   c                    |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
   )r/   optionsargsquery	pypi_hitshitsr2   s          r    runzSearchCommand.run6   sp    JKKKKw/	i(::#557:Nd>:N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ServerProxyr3   Fault	faultCodefaultStringr   
isinstancelist)
r/   r=   r;   	index_urlsession	transportpypir?   faultmessages
             r    r3   zSearchCommand.searchF   s    MM	**73&y':	}}((I>	(;;%@$GD $%%% }}"" 	(//@EDUDUCVW  w''		(s   A4 4B='B88B=N)returnNone)r;   r   r<   r   rR   int)r=   r   r;   r   rR   list[dict[str, str]])	r   r   r   __doc__usageignore_require_venvr0   r@   r3   r   r   r    r"   r"   #   s!    J!E
:  r   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_versionrK   values)r?   packageshitr   r   rZ   s         r    r4   r4   X   s     +6-H 46{i.i.x}}&"$IHTN TN:&--g6 /(4.*DEE,3y)!4$ !""r   c                   |~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   rZ   r   parse_versionpre)latestdists     r    print_dist_installation_inforf   t   s    \ 	:||v%5t||D_dll; (,, 5 !&9	: 	: 	: 	:s   A+BBc                8    t               }|j                  |       S )N)r   get_distribution)r   envs     r    get_installed_distributionrj      s    
!
#C%%r   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d| }
	 t        |
       t        |      }t        ||        y c c}w # t        $ r Y w xY w)Nr   r   -   r       
   
    z ()z - )maxlenr]   gettextwrapwrapjoinr   rj   rf   UnicodeEncodeError)r?   name_column_widthr2   r`   r   r   rd   target_widthsummary_linesname_latestlinere   s               r    r:   r:      sZ   
    $ F$s?377:PSu;U+V'WW  	  6{i.&B cU!;<%),==ALb  (g| D#):Q)>"??EEmTb*0112#gY?	-d3D(6!2 " 		s   ;C;"D  	DDc                $    t        | t              S )N)key)ru   rb   )r   s    r    r]   r]      s    x]++r   )r?   rU   rR   list[TransformedHit])rd   r   re   BaseDistribution | NonerR   rS   )r   r   rR   r   )NN)r?   r   r|   
int | Noner2   r   rR   rS   )r   r   rR   r   )0
__future__r   loggingr8   r5   rx   xmlrpc.clientrD   collectionsr   optparser   typingr   pip._vendor.packaging.versionr   rb   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"   r4   rf   rj   r:   r]   r   r   r    <module>r      s    "   
   #   @ 2 = D 1 : 8 + ; 2 1Y  
		8	$2G0 2j#8:"& %)!%$
$!$ $ 
	$N,r   