£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
ft`                 @   s   d dl mZ d dl mZ d dl mZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dl	Zd dlZd dlZd dlZd dlZejdZG d	d
 d
ejZdS )    )absolute_import)print_function)unicode_literalsN)commands)OptionParser)ucd_C_dnfc               @   sP   e Zd ZdZdZedZedd Zdd Z	d	d
 Z
dd Zdd Zdd ZdS )SearchCommandzTA class containing methods needed by the cli to execute the
    search command.
    searchsez+search package details for the given stringc          	   C   s<   | j ddtdd | j ddtddgd tjtd	d
 d S )Nz--all
store_truez'search also package description and URL)actionhelpquery_string+ZKEYWORDallzKeyword to search for)nargsmetavarchoicesdefaultr   r   )add_argumentr   r   ZPkgNarrowCallback)parser r   /usr/lib/python3.6/search.pyset_argparser0   s    zSearchCommand.set_argparserc                s4  t jdtddfdtddfdtddfdtd	ff  fd
dfdd}tjj }x(|D ] }j|d| j|d| qbW jj	rxd|D ] }j|d| j|d| qW n:t
|}t|j }x$|D ]}t
|j||kr||= qW d}d}	d}
d}d}jjjs0jjj j|j dj }t }x|jd|dD ]}jjjs~|j|j |krlqF|j|j|j  ||j|kr|j|}d}|	|j|kr|j|}	d}|
|j||	kkr|j||	k}
d}|r||
||	 d}jjj||j|| qFW t
|dkr0tjtd dS )z0Search for simple text tags in a package object.nameZlongNamesummaryZSummarydescriptionZDescriptionZurlZURLc          	      s   y |  S    | S d S )Nr   )attr)	TRANS_TBLr   r   _translate_attrC   s    z.SearchCommand._search.<locals>._translate_attrc                s^   t  |}tdj|}| r*td| }ntd| }jjj|dj| }tt| d S )Nz & z%s Exactly Matched: %%sz%s Matched: %%sz, )mapr   joinbaseoutputZ
fmtSectionprintr   )exact_matchZattrskeysZtrans_attrsZtrans_attrs_strZsection_textZ	formatted)r#   selfr   r   _print_section_headerI   s    
z4SearchCommand._search.<locals>._print_section_headerNF)pkgT)reverseZlimit_tor   zNo matches found.) collectionsOrderedDictr	   r   r
   Zmatch_counterZMatchCounter_search_countedoptsr   lenlistr*   matched_needlesr&   ZconfZshowdupesfromrepossackqueryfiltermZlatestsetsortedr   ZarchaddZmatched_keysZmatched_haystacksr'   Zmatchcallbackloggerinfo)r+   argsr,   counterargZneedlesZpkgsr-   Z
used_attrsr5   r)   Zprint_section_headerlimitseenr   )r"   r#   r+   r   _search9   s`    






zSearchCommand._searchc             C   s`   d| |i}t jj|r$d| |i}| jjj jtjf|}x|j	 D ]}|j
||| qFW |S )Nz
%s__substrz%s__glob)r
   utilZis_glob_patternr&   r6   r7   r8   hawkeyZICASErunr;   )r+   r?   r!   ZneedleZfdictqr-   r   r   r   r1      s    zSearchCommand._search_countedc             C   s    | j js| jjtjtjd d S )N)stdoutstderr)r2   quietcliZredirect_loggerloggingZWARNINGINFO)r+   r   r   r   pre_configure   s    zSearchCommand.pre_configurec             C   sD   | j js| jj  | jj}d|_d|_d|_| j jp:| j j	| j _d S )NTF)
r2   rJ   rK   Zredirect_repo_progressdemandsZavailable_reposZfresh_metadataZsack_activationr   Zquery_string_action)r+   rO   r   r   r   	configure   s    
zSearchCommand.configurec             C   s   t jtd | j| jjS )NzSearching Packages: )r<   debugr   rC   r2   r   )r+   r   r   r   rF      s    zSearchCommand.runN)r   r   )__name__
__module____qualname____doc__aliasesr   r   staticmethodr   rC   r1   rN   rP   rF   r   r   r   r   r   (   s   	O		r   )Z
__future__r   r   r   r/   Zdnf.clir   Zdnf.cli.option_parserr   Zdnf.i18nr   r   r	   r
   Zdnf.match_counterZdnf.utilrE   rL   Z	getLoggerr<   ZCommandr   r   r   r   r   <module>   s   
