o
    0js                     @   s"  d Z ddlZddlZddlmZmZ ddlZddlmZm	Z	 ddl
mZ ddlmZmZmZmZmZ ddlmZ eeZejd	d
d eD edZdedB dedB fddZeddZejdg dd							d7deedB ejdedf deedB ejddf deedB ejddf deedB ejddf d eedB ejd!df d"ed#eddfd$d%Zejd&g d'd	(	d8d)eeejd*df d"ed#eddfd+d,Zejd-d.gd	d9d/eeejd0df d#eddfd1d2Zejd3d4gd	d9d/eeejd0df d#eddfd5d6Z dS ):a  Contains commands to interact with papers on the Hugging Face Hub.

Usage:
    # list daily papers (most recently submitted)
    hf papers ls

    # list trending papers
    hf papers ls --sort=trending

    # list papers from a specific date, ordered by upvotes
    hf papers ls --date=2025-01-23

    # list today's papers, ordered by upvotes
    hf papers ls --date=today

    # list papers from a specific week
    hf papers ls --week=2025-W09

    # list papers by a specific submitter
    hf papers ls --submitter=someuser

    # search papers
    hf papers search "vision language"

    # get info about a paper
    hf papers info 2502.08025

    # read a paper as markdown
    hf papers read 2502.08025
    N)	Annotatedget_args)CLIErrorHfHubHTTPError)DailyPapersSort_T   )LimitOptTokenOptapi_object_to_dict
get_hf_apityper_factory)outPaperSortEnumc                 C   s   i | ]}||qS  r   ).0sr   r   [/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/huggingface_hub/cli/papers.py
<dictcomp>A   s    r   )typevaluereturnc                 C   s*   | du rdS |   dkrtj  S | S )z6Parse date option, converting 'today' to current date.Ntoday)lowerdatetimedater   	isoformat)r   r   r   r   _parse_dateD   s
   r   z Interact with papers on the Hub.)helpz	list | ls)zhf papers lszhf papers ls --sort trendingzhf papers ls --date 2025-01-23zhf papers ls --week 2025-W09z hf papers ls --submitter akhaliqzhf papers ls --format json)Zexamples2   r   z+Date in ISO format (YYYY-MM-DD) or 'today'.)r   callbackweekz'ISO week to filter by, e.g. '2025-W09'.monthz;Month to filter by in ISO format (YYYY-MM), e.g. '2025-02'.	submitterz$Filter by username of the submitter.sortzSort results.limittokenc                 C   s   t |d}|r
|jnd}g }	|j| |||||dD ] }
t|
}|dp%i }|dp1|dp1d|d< |	| qtj|	g d	d
d
dd dS )zList daily papers on the Hub.r%   N)r   r    r!   r"   r#   r$   submitted_byfullnameusername submitted_by_name)idtitleupvotescommentspublished_atr+   right)r.   r/   headersZ
alignments)r   r   Zlist_daily_papersr
   getappendr   table)r   r    r!   r"   r#   r$   r%   apisort_keyresults
paper_infoitemr'   r   r   r   	papers_lsP   s(   
'

r<   search)z"hf papers search "vision language"z1hf papers search "attention mechanism" --limit 10z*hf papers search "diffusion" --format json   queryzSearch query string.c                 C   s>   t |d}dd |j| |dD }tj|g dddid d	S )
zSearch papers on the Hub.r&   c                 S   s   g | ]}t |qS r   )r
   )r   r:   r   r   r   
<listcomp>   s    z!papers_search.<locals>.<listcomp>)r?   r$   )r,   r-   summaryr.   r0   r.   r1   r2   N)r   Zlist_papersr   r6   )r?   r$   r%   r7   r9   r   r   r   papers_search   s   
rB   infozhf papers info 2601.15621paper_idz'The arXiv paper ID (e.g. '2502.08025').c              
   C   b   t |d}z|j| d}W n ty) } z|jjdkr$td|  d| d}~ww t| dS )z"Get info about a paper on the Hub.r&   r,     Paper '' not found on the Hub.N)r   r:   r   responsestatus_coder   r   dict)rD   r%   r7   rC   er   r   r   papers_info      
rN   readzhf papers read 2601.15621c              
   C   rE   )zRead a paper as markdown.r&   rF   rG   rH   rI   N)r   Z
read_paperr   rJ   rK   r   r   text)rD   r%   r7   contentrM   r   r   r   papers_read   rO   rS   )NNNNNr   N)r>   N)N)!__doc__r   enumtypingr   r   ZtyperZhuggingface_hub.errorsr   r   Zhuggingface_hub.hf_apir   Z
_cli_utilsr   r	   r
   r   r   _outputr   Z_SORT_OPTIONSEnumstrr   r   Z
papers_clicommandOptionr<   ZArgumentrB   rN   rS   r   r   r   r   <module>   s   
	



2
