
    k"gA              	          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$ erd dl
m%Z%  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)parse)Command)SessionCommandMixin)NO_MATCHES_FOUNDSUCCESS)CommandError)get_default_environment)PyPI)PipXmlrpcTransport)
indent_log)write_output)	TypedDictc                   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        V/var/www/html/djangosite/lib/python3.12/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.run5   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                  $ r7}dj                  |j                  |j                        }	t        |	      d }~ww xY w)N)r   r   orz-XMLRPC request failed [code: {code}]
{string})codestring)r&   get_default_sessionr   xmlrpcclientServerProxyr7   Faultformat	faultCodefaultStringr   
isinstancelist)
r1   r?   r3   	index_urlsession	transportpypirA   faultmessages
             r!   r7   zSearchCommand.searchE   s    MM	**73&y':	}}((I>	(;;%@$GD $%%% }}"" 	(FMM__(( N G w''	(s   A4 4C2CC)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_versionrP   values)rA   packageshitr   r   r\   s         r!   r8   r8   X   s     -8MH 46{i.i.x}}&"$IHTN TN:&--g6 /(4.*DEE,3y)!4$ !""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   r\   r   parse_versionpre)r   rc   envdists       r!   print_dist_installation_inforj   t   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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   rj   UnicodeEncodeError)rA   rk   r6   rb   r   r   rc   target_widthsummary_linesname_latestlines              r!   r>   r>      sP   
    $ 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?	(v60 " 		s   ;C0C55	D Dr   c                 $    t        | t              S )N)key)rv   rf   )r   s    r!   r_   r_      s    x]++r    )NN)1loggingr<   r9   ry   xmlrpc.clientrH   collectionsr   optparser   typingr   r   r   r   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.models.indexr   pip._internal.network.xmlrpcr   pip._internal.utils.loggingr   pip._internal.utils.miscr   r   r   	getLoggerr   loggerr#   r   r8   rj   rZ   r>   r_   r   r    r!   <module>r      s     
   #  6 6 @ 2 = D 1 : + ; 2 1   
		8	$3G0 3l#d38n- #$7G2H #8:s :C :D :* (,$(#

 #}# SM# 
	#L,d3i ,C ,r    