
    <Bh)                        S r SSKJr  SSKJr  SSKJr  SSKJrJr  SSK	J
r
  SSKJr  \
(       a  SS	KJrJrJr  S
SKJr  SS jrSS jrSS jr\4SS jjrg)zhCLI implementation for `conda search`.

Query channels for packages matching the provided package spec.
    )annotations)SUPPRESS)defaultdict)datetimetimezone)TYPE_CHECKING   )_ValidatePackages)ArgumentParser	Namespace_SubParsersAction   PackageRecordc           	        SSK Jn  SSKJn  SSKJnJnJnJn  SnU" SU S35      n	U" S	5      n
U R                  "  S(UU	U
S
.UD6nUR                  SSSS9  UR                  SSSSS9  UR                  SSSSSUS9  UR                  SSSS9  UR                  SSS[        [        S9  UR                  SS[        S9  UR                  SS S[        S9  UR                  S!S[        S9  U" U5        UR                  S"S#S[        S9  UR                  S$S[        S9  UR                  S%S[        S9  U" U5        U" U5        U" U5        UR                  S&S'9  U$ ))Nr   )dals)NULLr	   )add_parser_channelsadd_parser_jsonadd_parser_knownadd_parser_networkingzRSearch for packages and display associated information using the MatchSpec format.z	
        zD

        MatchSpec is a query language for conda packages.
        a  
        Examples:

        Search for a specific package named 'scikit-learn'::

            conda search scikit-learn

        Search for packages containing 'scikit' in the package name::

            conda search *scikit*

        Note that your shell may expand '*' before handing the command over to conda.
        Therefore, it is sometimes necessary to use single or double quotes around the query::

            conda search '*scikit'
            conda search "*scikit*"

        Search for packages for 64-bit Linux (by default, packages for your current
        platform are shown)::

            conda search numpy[subdir=linux-64]

        Search for a specific version of a package::

            conda search 'numpy>=1.12'

        Search for a package on a specific channel::

            conda search conda-forge::numpy
            conda search 'numpy[channel=conda-forge, subdir=osx-64]'
        )helpdescriptionepilogz--envs
store_truezSearch all of the current user's environments. If run as Administrator (on Windows) or UID 0 (on unix), search all known environments on the system.)actionr   z-iz--infoz0Provide detailed information about each package.z--subdirz
--platformstoresubdirzSearch the given subdir. Should be formatted like 'osx-64', 'linux-32', 'win-64', and so on. The default is to search the current platform.)r   destr   defaultz--skip-flexible-searchz7Do not perform flexible search if initial search fails.
match_spec*?)r    nargsr   r   z--canonicalz-fz--full-namez--names-onlyz-oz
--outdatedz--specz--reverse-dependencyzconda.cli.main_search.execute)func)search)
auxlib.ishr   common.constantsr   helpersr   r   r   r   
add_parseradd_argumentr
   r   set_defaults)sub_parserskwargsr   r   r   r   r   r   summaryr   r   ps               5lib/python3.13/site-packages/conda/cli/main_search.pyconfigure_parserr2      s   !'  cG			 		K 	 FD 				
 	A NNX   NN?	   NNN   NN F  
 NN    NN  
 NN	   NN  
 QNN	   NN  
 NN    !ANN7N8H    c                  ^^ SSK Jn  SSKJn  SSKJn  SSKJn  SSKJ	n  SSK
Jn  SSKJm  SS	KJm  SS
KJn  U" U R$                  5      n	U	R'                  S5      (       a  U	R'                  S5      4n
OUR(                  n
U R*                  (       Ga  U" SU	 35         U" U	5      n[-        U4S jU5       5      nSSS5        UR.                  (       a	  U" W5        gU R0                  (       a!  W H  nUS    H  n[3        U5        M     M     gSS-  /nW Hm  nUS    Ha  nUR5                  UR6                  <S SUR8                  <S SUR:                  <S SUR<                  R6                  <S SUS   <S 3	5        Mc     Mo     [?        SRA                  U5      5        gU" S5         U	R'                  S5      nU(       a  U4OURB                  n[E        URG                  U	UU
5      U4S jS9nSSS5        W(       d}  U RH                  (       dl  U	R'                  S5      (       aV  U" U	SU	R6                   S3S 9nUR.                  (       d  [?        S!U	 S"U 35        [E        URG                  UWU
5      U4S# jS9nU(       dQ  [-        U" URB                  U RJ                  (       + U
S   U RL                  S$95      nSS%K'J(n  U" [S        U	5      4U5      eUR.                  (       a?  [U        [V        5      nU H!  nUUR6                     R5                  U5        M#     U" U5        gU R0                  (       a  U H  n[3        U5        M     gS&S'-  /nU HY  nUR5                  UR6                  <S SUR8                  <S SUR:                  <S SUR<                  R6                  <S 35        M[     [?        SRA                  U5      5        g! , (       d  f       GN= f! , (       d  f       GN= f)(z
Implements `conda search` commands.

`conda search <spec>` searches channels for packages.
`conda search <spec> --envs` searches environments for packages.

r   )context)stdout_json)query_all_prefixes)calculate_channel_urls)
SubdirData)	MatchSpecr   )VersionOrder)get_spinnerr   zSearching environments for c           	   3  h   >#    U  H'  u  pU[        [        U4S  jU5       S S95      S.v   M)     g7f)c              3  H   >#    U  H  nTR                   " U5      v   M     g 7fN)from_objects).0
prefix_recr   s     r1   	<genexpr>$execute.<locals>.<genexpr>.<genexpr>   s&      2=J !. : :: F F2=s   "c                    U R                   $ r?   )_pkey)precs    r1   <lambda>#execute.<locals>.<genexpr>.<lambda>   s    TZZr3   key)locationpackage_recordsN)tuplesorted)rA   prefixprefix_recsr   s      r1   rC   execute.<locals>.<genexpr>   sF      # ,:'F !'',2= !8( ,:s   /2NrM   z# %-13s %15s %15s  %-20s %-20s)NameVersionBuildChannelLocation15 z>15z  20rL   
r   zLoading channelschannelc                V   > U R                   T" U R                  5      U R                  4$ r?   nameversionbuildrecr;   s    r1   rH   execute.<locals>.<lambda>       SXX|CKK'@#))Lr3   rJ   r_   r"   )r_   zNo match found for: z
. Search: c                V   > U R                   T" U R                  5      U R                  4$ r?   r^   rb   s    r1   rH   rd      re   r3   )channel_urlsprependplatform	use_local)PackagesNotFoundErrorz# %-18s %15s %15s  %-20s)rS   rT   rU   rV   ),base.contextr5   
cli.commonr6   core.envs_managerr7   
core.indexr8   core.subdir_datar9   models.match_specr:   models.recordsr   models.versionr;   	reportersr<   r!   get_exact_valuesubdirsenvsrN   jsoninfopretty_recordappendr_   r`   ra   r\   printjoinchannelsrO   	query_allskip_flexible_searchoverride_channelsrj   
exceptionsrk   strr   list)argsparserr5   r6   r7   r8   r9   r:   r<   specrv   prefix_matchesordered_result	pkg_grouprG   builderspec_channelrg   matches	flex_specchannels_urlsrk   json_objmatchrecordr   r;   s                            @@r1   executer      sY    '(63--.-'T__%DH%%''13//yyy6tf=>/5N" # ,:# N ?" <<': 9 YY+	%&78D!$' 9 ,6 - 1	G ,	%&78DNN !II LL JJ LL--%j1	 9 , $))G$%	'	(++I6*6G<L<L  |W=L
	 
) 4449M9Mf9U9Ud1TYYKq)9:	||(jDE  L'BL

 "$-- 222 ..	
 	7#SYL-@@||t$EUZZ ''. H6 3 
F&! 0 ' '
 FNN KKNNLLNN''  	dii !] ?>b 
)	(s   O*AO
O
O,c                  ^ ^ SSK Jn  SSKJn  UU 4S jn/ mTR	                  T R
                   ST R                   ST R                   35        TR	                  S[        TS   5      -  5        U" SS	5        U" S
S
5        U" SS5        U" SS5        U" SS5        [        T SS5      nUb  TR	                  S<S SU" U5      < 35        U" SS5        U" SS5        U" SS5        U" SS5        T R                  (       a|  [        T R                  [        [        45      (       aW  [        R                  " T R                  [         R"                  5      R%                  S5      nTR	                  S<S SU< 35        T R&                  (       a)  TR	                  S<S SU" T R&                  5      < 35        T R(                  (       a)  TR	                  S<S SU" T R(                  5      < 35        TR	                  S<S ST R*                  (       a  U" T R*                  5      OS< 35        TR	                  S5        SR-                  T5      $ )z0
Format a `PackageRecord` for `pretty_record()`
r   )dashlist)human_bytesc                Z   > [        TUS 5      nUb  TR                  U <S SU< 35        g g )N12: )getattrr{   )display_name	attr_namevaluer   r   s      r1   	push_line(_pretty_record_format.<locals>.push_line1  s-    	40NN,>? r3   rY   -r   z	file namefnr_   r`   ra   zbuild numberbuild_numbersizeNr   r   licenser   urlmd5z%Y-%m-%d %H:%M:%S %Z	timestamptrack_featuresconstraintsdependenciesz[]r[   )	common.ior   utilsr   r{   r_   r`   ra   lenr   r   
isinstanceintfloatr   fromtimestampr   utcstrftimer   
constrainsdependsr}   )r   r   r   r   r   date_strr   s   `     @r1   _pretty_record_formatr   )  s   
 %#@
 GNNfkk]!FNN#31V\\NCDNN3WQZ()k4 ffi#gwnn-664(Dfk$.?@Ai#h!eUeUJv'7'7#uFF))&*:*:HLLIRR"
 	k8<=+Xf6K6K-LM	
 mXf>O>O5PQRNNv~~8FNN34O	Q NN499Wr3   c                &    U" [        U 5      5        g)zX
Pretty prints a `PackageRecord`.

:param record:  The `PackageRecord` object to print.
N)r   )r   r|   s     r1   rz   rz   Y  s     


'(r3   N)r-   r   returnr   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   None)__doc__
__future__r   argparser   collectionsr   r   r   typingr   r)   r
   r   r   r   rr   r   r2   r   r   r|   rz    r3   r1   <module>r      sH   
 #  # '   &EE.EPGT-` 05 )r3   