
    si(                        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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 R,                  (       a!  W H  nUS    H  n[/        U5        M     M     gSS-  /nW Hm  nUS    Ha  nUR1                  UR2                  <S SUR4                  <S SUR6                  <S SUR8                  R2                  <S SUS   <S 3	5        Mc     Mo     [;        SR=                  U5      5        gU" S5         UR#                  S5      nU(       a  U4OUR>                  n[A        URC                  UUU	5      U4S jS9nSSS5        W(       d}  U RD                  (       dl  UR#                  S5      (       aV  U" USUR2                   S3S9nUR*                  (       d  [;        S U S!U 35        [A        URC                  UWU	5      U4S" jS9nU(       d'  SS#K#J$n  SS$K%J&n  U" U/U" UR>                  U	5      5      eUR*                  (       a?  [O        [P        5      nU H!  nUUR2                     R1                  U5        M#     U" U5        gU R,                  (       a  U H  n[/        U5        M     gS%S&-  /nU HY  nUR1                  UR2                  <S SUR4                  <S SUR6                  <S SUR8                  R2                  <S 35        M[     [;        SR=                  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)
SubdirData)	MatchSpecr   )VersionOrder)get_spinnerr   zSearching environments for c           	   3  j   >#    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)r@   prefixprefix_recsr   s      r1   rB   execute.<locals>.<genexpr>   sF      # ,:'F !'',2= !8( ,:s   03NrL   z# %-13s %15s %15s  %-20s %-20s)NameVersionBuildChannelLocation15 z>15z  20rK   
r   zLoading channelschannelc                V   > U R                   T" U R                  5      U R                  4$ r>   nameversionbuildrecr:   s    r1   rG   execute.<locals>.<lambda>       SXX|CKK'@#))Lr3   rI   r^   r"   )r^   zNo match found for: z
. Search: c                V   > U R                   T" U R                  5      U R                  4$ r>   r]   ra   s    r1   rG   rc      rd   r3   )PackagesNotFoundError)all_channel_urlsz# %-18s %15s %15s  %-20s)rR   rS   rT   rU   ))base.contextr5   
cli.commonr6   core.envs_managerr7   core.subdir_datar8   models.match_specr9   models.recordsr   models.versionr:   	reportersr;   r!   get_exact_valuesubdirsenvsrM   jsoninfopretty_recordappendr^   r_   r`   r[   printjoinchannelsrN   	query_allskip_flexible_search
exceptionsrf   models.channelrg   r   list)argsparserr5   r6   r7   r8   r9   r;   specrq   prefix_matchesordered_result	pkg_grouprF   builderspec_channelchannel_urlsmatches	flex_specrf   rg   json_objmatchrecordr   r:   s                           @@r1   executer      s,    '(6--.-'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

 65#TF,<W=M=Mw,WXX||t$EUZZ ''. H6 3 
F&! 0 ' '
 FNN KKNNLLNN''  	dii !O ?>b 
)	(s   N%AN.
N+.
N=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: )getattrrv   )display_name	attr_namevaluer   r   s      r1   	push_line(_pretty_record_format.<locals>.push_line)  s-    	40NN,>? r3   rX   -r   z	file namefnr^   r_   r`   zbuild numberbuild_numbersizeNr   r   licenser   urlmd5z%Y-%m-%d %H:%M:%S %Z	timestamptrack_featuresconstraintsdependenciesz[]rZ   )	common.ior   utilsr   rv   r^   r_   r`   lenr   r   
isinstanceintfloatr   fromtimestampr   utcstrftimer   
constrainsdependsrx   )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   rw   s     r1   ru   ru   Q  s     


'(r3   N)r-   r   returnr   )r   r   r   r   r   r   )r   r   r   str)r   r   r   None)__doc__
__future__r   argparser   collectionsr   r   r   typingr   r)   r
   r   r   r   rm   r   r2   r   r   rw   ru    r3   r1   <module>r      sH   
 #  # '   &EE.EPD-` 05 )r3   