
    "j3                     	   d Z ddlZddl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mZmZmZmZmZmZmZmZmZ ddlmZmZ  G d	 d
eej                  Z G d deej                  ZddhZee ej        dd          f         Zdedz  dedz  dedz  fdZ  ed          Z!e!"                    dg d          ej#        ej$        ddej%        ej&        dfdedee ej'        ddd          f         d ee ej'        d!d"d#          f         d$ed%ed&ed'ed(eddfd)            Z(e!"                    d*d+d,g          ej%        ej&        dfded-ed&ed'ed(eddfd.            Z)e!"                    d/g d0          ddd1ej%        ej&        dfded2ee ej'        d3d4          f         deedz   ej'        d5d6          f         deedz   ej'        d7d8          f         d9ee* ej'        d:d;d<          f         d&ed'ed(eddfd=            Z+e!"                    d>d?d@g          ddej%        ej&        dfded-edeedz   ej'        d5dA          f         deedz   ej'        d7dB          f         d&ed'ed(eddfdC            Z,e!"                    dDdEdFg          dd1ej%        ej&        dfded-ed>eedz   ej'        dGdH          f         dIee* ej'        dJdKdL          f         d&ed'ed(eddfdM            Z-e!"                    dNdOdPg          dd1ej%        ej&        dfded-ed>eedz   ej'        dGdQ          f         dIee* ej'        dJdKdL          f         d&ed'ed(eddfdR            Z.e!"                    dSdTg          ej%        ej&        dfded-edUee ej        dV          f         d&ed'ed(eddfdW            Z/e!"                    dXdYdZg          dd1ej%        ej&        dfded-ed>eedz   ej'        dGd[          f         dIee* ej'        dJdKdL          f         d&ed'ed(eddfd\            Z0e!"                    d]d^g          ej%        ej&        dfded-ed&ed'ed(eddfd_            Z1dS )`zYContains commands to interact with discussions and pull requests on the Hugging Face Hub.    N)Path)	Annotated)	constants   )
	AuthorOptFormatWithAutoOptLimitOpt	RepoIdArgRepoTypeRepoTypeOptTokenOptapi_object_to_dict
get_hf_apityper_factory)OutputFormatWithAutooutc                   "    e Zd ZdZdZdZdZdZdS )DiscussionStatusopenclosedmergeddraftallN)__name__
__module____qualname__r   r   r   r   r        i/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/huggingface_hub/cli/discussions.pyr   r   (   s'        DFFE
CCCr   r   c                       e Zd ZdZdZdZdS )DiscussionKindr   
discussionpull_requestN)r   r   r   r   r"   r#   r   r   r   r!   r!   0   s        
CJ!LLLr   r!   r   r   z&The discussion or pull request number.)helpminbody	body_filereturnc                     | |t          j        d          |Gt          |          dk    rt          j                                        S |                    d          S | S )zFResolve body text from --body or --body-file (supports '-' for stdin).Nz'Cannot use both --body and --body-file.-zutf-8)encoding)typerBadParameterstrsysstdinread	read_text)r&   r'   s     r   
_read_bodyr3   F   sd    I1 !JKKKy>>S  9>>###""G"444Kr   z0Manage discussions and pull requests on the Hub.)r$   z	list | ls)z%hf discussions list username/my-modelzIhf discussions list username/my-model --kind pull_request --status mergedzFhf discussions list username/my-dataset --type dataset --status closedzBhf discussions list username/my-model --author alice --format json)examples   repo_idstatusz-sz--statusz4Filter by status (open, closed, merged, draft, all).kindz-kz--kindz/Filter by kind (discussion, pull_request, all).authorlimit	repo_typeformattokenc                    t          |          }|t          j        k    rd}	n|t          j        k    rd}	nd}	|t          j        k    rd}
n|j        }
g }|                    | ||
|	|j                  D ]K}|j        t          v r|j	        |j        k    r!|
                    |           t          |          |k    r nLd |D             }t          j        |g dddd	i
           dS )z-List discussions and pull requests on a repo.r=   r   r   N)r6   r9   discussion_typediscussion_statusr;   c                 ,    g | ]}t          |          S r   )r   ).0ds     r   
<listcomp>z#discussion_list.<locals>.<listcomp>   s!    888q""888r   )numtitleis_pull_requestr7   r9   
created_atrF   right)headersid_key
alignments)r   r   r   r   r!   r   valueget_repo_discussions_CLIENT_SIDE_STATUSESr7   appendlenr   table)r6   r7   r8   r9   r:   r;   r<   r=   api
api_statusapi_discussion_typediscussionsrD   itemss                 r   discussion_listrY   T   sD   D 5
!
!
!C !&&&

	#*	*	*


 ~!!!""jK%%+$/ &     <000QX5M5M1{u$$E % 98K888EIUUU7#	     r   infoz'hf discussions info username/my-model 5z5hf discussions info username/my-model 5 --format jsonrF   c                     t          |          }|                    | ||j                  }t          j        |           dS )z,Get info about a discussion or pull request.r?   r6   discussion_numr;   N)r   get_discussion_detailsrN   r   dictr6   rF   r;   r<   r=   rT   detailss          r   discussion_inforb      sQ     5
!
!
!C((/ )  G
 HWr   create)z<hf discussions create username/my-model --title "Bug report"zWhf discussions create username/my-model --title "Feature request" --body "Please add X"zIhf discussions create username/my-model --title "Fix typo" --pull-requestzUhf discussions create username/my-dataset --type dataset --title "Data quality issue"FrG   z--titlez,The title of the discussion or pull request.z--bodyz$The description (supports Markdown).z--body-filez4Read the description from a file. Use '-' for stdin.r#   z--pull-requestz--prz.Create a pull request instead of a discussion.c                    t          ||          }t          |          }	|	                    | |||j        |          }
|rdnd}|r
d|
j         nd}t          j        d| d|
j         d	|  |
j        |
j        |
           dS )z2Create a new discussion or pull request on a repo.r?   )r6   rG   descriptionr;   r#   zpull requestr"   zrefs/pr/NzCreated z #z on )rF   urlref)r3   r   create_discussionrN   rF   r   resultrf   )r6   rG   r&   r'   r#   r;   r<   r=   re   rT   r"   r8   rg   s                r   discussion_createrj      s    Z T9--K
5
!
!
!C&&/! '  J *;>>|D)5
?
%Z^
%
%
%4CJ?$??*.??g??Z^YcYgmpqqqqqqr   commentzIhf discussions comment username/my-model 5 --body "Thanks for reporting!"z9hf discussions comment username/my-model 5 --body "LGTM!"z%The comment text (supports Markdown).z0Read the comment from a file. Use '-' for stdin.c                     t          ||          }|t          j        d          t          |          }|                    | |||j                   t          j        d| d|  ||            dS )z(Comment on a discussion or pull request.Nz)Either --body or --body-file is required.r?   r6   r]   rk   r;   zCommented on # in rF   repo)r3   r,   r-   r   comment_discussionrN   r   ri   )	r6   rF   r&   r'   r;   r<   r=   rk   rT   s	            r   discussion_commentrr      s    : y))G !LMMM
5
!
!
!C/	     J22222'JJJJJJr   closez(hf discussions close username/my-model 5zIhf discussions close username/my-model 5 --comment "Closing as resolved."z	--commentz)An optional comment to post when closing.yesz--yesz-yzSkip confirmation prompt.c                     t          j        d| d|  d|           t          |          }|                    | |d||j                   t          j        d| d	|  || 
           dS )z#Close a discussion or pull request.zClose # on ''?rt   r?   r   r6   r]   
new_statusrk   r;   zClosed #rn   ro   Nr   confirmr   change_discussion_statusrN   ri   r6   rF   rk   rt   r;   r<   r=   rT   s           r   discussion_closer     s    < K/#//G///S9999
5
!
!
!C  / !    J,#,,7,,#GDDDDDDr   reopenz)hf discussions reopen username/my-model 5zZhf discussions reopen username/my-model 5 --comment "Reopening for further investigation."z+An optional comment to post when reopening.c                     t          j        d| d|  d|           t          |          }|                    | |d||j                   t          j        d| d	|  || 
           dS )z+Reopen a closed discussion or pull request.zReopen #rv   rw   rx   r?   r   ry   z
Reopened #rn   ro   Nr{   r~   s           r   discussion_reopenr   D  s    < K0300W000c::::
5
!
!
!C  / !    J.C..W..CgFFFFFFr   renamez9hf discussions rename username/my-model 5 "Updated title"	new_titlezThe new title.c                     t          |          }|                    | |||j                   t          j        d| d|  || |           dS )z$Rename a discussion or pull request.r?   )r6   r]   r   r;   z	Renamed #rn   )rF   rp   rG   N)r   rename_discussionrN   r   ri   )r6   rF   r   r;   r<   r=   rT   s          r   discussion_renamer   n  sq    ( 5
!
!
!C/	     J-3--G--3WIVVVVVVr   mergez(hf discussions merge username/my-model 5zEhf discussions merge username/my-model 5 --comment "Merging, thanks!"z)An optional comment to post when merging.c                     t          j        d| d|  d|           t          |          }|                    | |||j                   t          j        d| d|  || 	           d
S )zMerge a pull request.zMerge #rv   rw   rx   r?   rm   zMerged #rn   ro   N)r   r|   r   merge_pull_requestrN   ri   r~   s           r   discussion_merger     s    < K/#//G///S9999
5
!
!
!C/	     J,#,,7,,#GDDDDDDr   diffz'hf discussions diff username/my-model 5c                     t          |          }|                    | ||j                  }|j        rt	          j        |j                   dS t	          j        d           dS )z Show the diff of a pull request.r?   r\   zNo diff available.N)r   r^   rN   r   r   textr`   s          r   discussion_diffr     st     5
!
!
!C((/ )  G
 | '%&&&&&r   )2__doc__enumr/   pathlibr   typingr   r,   huggingface_hubr   
_cli_utilsr   r   r	   r
   r   r   r   r   r   r   _outputr   r   r.   Enumr   r!   rP   intArgumentDiscussionNumArgr3   discussions_clicommandr   r   modelautoOptionrY   rb   boolrj   rr   r   r   r   r   r   r   r   r   <module>r      s
   ` _  



              % % % % % %                        / . . . . . . .    sDI   " " " " "S$) " " " "7+  EN5   S4Z D4K C$J      -%WXXX      $ 	 	%^ 4 9-= ==G	
 	
 	
	= B	
 	
 	
	=$ %=& '=( )=* +=, -=. 
/= = = =@ 
1?    &^ 4 9 	  	
  
   "      0 	 	 	%^ 4 9C/r /r/r?	
 	
 	
	/r d
7	
 	
 	
	/r  tG	
 	
 	
	!/r. A	
 	
 	
	//r> ?/r@ A/rB C/rD 
E/r /r /r /rd SC     	 	%^ 4 9' K  K K	 K d
8	
 	
 	
	 K tC	
 	
 	
	 K" # K$ % K& ' K( 
) K  K  K  KF 2S     	 	%^ 4 9) E  E E	 E d
<	
 	
 	
	 E 
,	
 	
 	
	
 E$ % E& ' E( ) E* 
+ E  E  E  EF 3d     	 	%^ 4 9) G  G G	 G d
>	
 	
 	
	 G 
,	
 	
 	
	
 G$ % G& ' G( ) G* 
+ G  G  G  GF C    &^ 4 9W WW	W !	
 	
 	
	W W W W 
W W W W0 2O     	 	%^ 4 9)E EE	E d
<	
 	
 	
	E 
,	
 	
 	
	
E$ %E& 'E( )E* 
+E E E ED 
1    &^ 4 9' ''	' ' 	'
 ' 
' ' ' ' ' 'r   