Ë
    Q^(h¦/  ã                   óF  — d Z ddlmZ ddlmZ ddlmZmZmZmZ ddl	m
Z
 ddlmZ ed   Ze G d	„ d
«      «       Ze G d„ de«      «       Ze G d„ d«      «       Ze G d„ de«      «       Ze G d„ de«      «       Ze G d„ de«      «       Ze G d„ de«      «       Zdedefd„Zy)a  
Data structures to interact with Discussions and Pull Requests on the Hub.

See [the Discussions and Pull Requests guide](https://huggingface.co/docs/hub/repositories-pull-requests-discussions)
for more information on Pull Requests, Discussions, and the community tab.
é    )Ú	dataclass)Údatetime)ÚListÚLiteralÚOptionalÚUnioné   )Ú	constants)Úparse_datetime)ÚopenÚclosedÚmergedÚdraftc                   óž   — e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   eed<   e	ed	<   eed
<   e
dee   fd„«       Ze
defd„«       Zy)Ú
Discussiona  
    A Discussion or Pull Request on the Hub.

    This dataclass is not intended to be instantiated directly.

    Attributes:
        title (`str`):
            The title of the Discussion / Pull Request
        status (`str`):
            The status of the Discussion / Pull Request.
            It must be one of:
                * `"open"`
                * `"closed"`
                * `"merged"` (only for Pull Requests )
                * `"draft"` (only for Pull Requests )
        num (`int`):
            The number of the Discussion / Pull Request.
        repo_id (`str`):
            The id (`"{namespace}/{repo_name}"`) of the repo on which
            the Discussion / Pull Request was open.
        repo_type (`str`):
            The type of the repo on which the Discussion / Pull Request was open.
            Possible values are: `"model"`, `"dataset"`, `"space"`.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        is_pull_request (`bool`):
            Whether or not this is a Pull Request.
        created_at (`datetime`):
            The `datetime` of creation of the Discussion / Pull Request.
        endpoint (`str`):
            Endpoint of the Hub. Default is https://huggingface.co.
        git_reference (`str`, *optional*):
            (property) Git reference to which changes can be pushed if this is a Pull Request, `None` otherwise.
        url (`str`):
            (property) URL of the discussion on the Hub.
    ÚtitleÚstatusÚnumÚrepo_idÚ	repo_typeÚauthorÚis_pull_requestÚ
created_atÚendpointÚreturnc                 ó:   — | j                   rd| j                  › �S y)z‰
        If this is a Pull Request , returns the git reference to which changes can be pushed.
        Returns `None` otherwise.
        zrefs/pr/N)r   r   ©Úselfs    úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/huggingface_hub/community.pyÚgit_referencezDiscussion.git_referenceE   s!   € ð ×ÒØ˜dŸh™h˜ZÐ(Ð(Øó    c                 ó  — | j                   �| j                   t        j                  k(  r(| j                  › d| j                  › d| j
                  › �S | j                  › d| j                   › d| j                  › d| j
                  › �S )z-Returns the URL of the discussion on the Hub.ú/z/discussions/zs/)r   r
   ÚREPO_TYPE_MODELr   r   r   r   s    r   ÚurlzDiscussion.urlO   sp   € ð �>‰>Ð! T§^¡^´y×7PÑ7PÒ%PØ—m‘m�_ A d§l¡l ^°=ÀÇÁÀ
ÐKÐKØ—-‘-�  $§.¡.Ð!1°°D·L±L°>ÀÈtÏxÉxÈjÐYÐYr!   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__ÚDiscussionStatusÚintÚboolr   Úpropertyr   r    r%   © r!   r   r   r      su   … ñ$ðL ƒJØÓØ	ƒHØƒLØƒNØƒKØÓØÓØƒMàð˜x¨™}ò ó ðð ðZ�Sò Zó ñZr!   r   c                   ón   — e Zd ZU dZed   ed<   eee   edf   ed<   e	e   ed<   e	e   ed<   e	e   ed<   y)	ÚDiscussionWithDetailsa7	  
    Subclass of [`Discussion`].

    Attributes:
        title (`str`):
            The title of the Discussion / Pull Request
        status (`str`):
            The status of the Discussion / Pull Request.
            It can be one of:
                * `"open"`
                * `"closed"`
                * `"merged"` (only for Pull Requests )
                * `"draft"` (only for Pull Requests )
        num (`int`):
            The number of the Discussion / Pull Request.
        repo_id (`str`):
            The id (`"{namespace}/{repo_name}"`) of the repo on which
            the Discussion / Pull Request was open.
        repo_type (`str`):
            The type of the repo on which the Discussion / Pull Request was open.
            Possible values are: `"model"`, `"dataset"`, `"space"`.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        is_pull_request (`bool`):
            Whether or not this is a Pull Request.
        created_at (`datetime`):
            The `datetime` of creation of the Discussion / Pull Request.
        events (`list` of [`DiscussionEvent`])
            The list of [`DiscussionEvents`] in this Discussion or Pull Request.
        conflicting_files (`Union[List[str], bool, None]`, *optional*):
            A list of conflicting files if this is a Pull Request.
            `None` if `self.is_pull_request` is `False`.
            `True` if there are conflicting files but the list can't be retrieved.
        target_branch (`str`, *optional*):
            The branch into which changes are to be merged if this is a
            Pull Request . `None`  if `self.is_pull_request` is `False`.
        merge_commit_oid (`str`, *optional*):
            If this is a merged Pull Request , this is set to the OID / SHA of
            the merge commit, `None` otherwise.
        diff (`str`, *optional*):
            The git diff if this is a Pull Request , `None` otherwise.
        endpoint (`str`):
            Endpoint of the Hub. Default is https://huggingface.co.
        git_reference (`str`, *optional*):
            (property) Git reference to which changes can be pushed if this is a Pull Request, `None` otherwise.
        url (`str`):
            (property) URL of the discussion on the Hub.
    ÚDiscussionEventÚeventsNÚconflicting_filesÚtarget_branchÚmerge_commit_oidÚdiff)
r&   r'   r(   r)   r   r+   r   r*   r.   r   r0   r!   r   r2   r2   W   sJ   … ñ0ðd Ð"Ñ#Ó#Ø˜T #™Y¨¨dÐ2Ñ3Ó3Ø˜C‘=Ó Ø˜s‘mÓ#Ø
�3‰-Ôr!   r2   c                   óD   — e Zd ZU dZeed<   eed<   eed<   eed<   eed<   y)r3   aÜ  
    An event in a Discussion or Pull Request.

    Use concrete classes:
        * [`DiscussionComment`]
        * [`DiscussionStatusChange`]
        * [`DiscussionCommit`]
        * [`DiscussionTitleChange`]

    Attributes:
        id (`str`):
            The ID of the event. An hexadecimal string.
        type (`str`):
            The type of the event.
        created_at (`datetime`):
            A [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime)
            object holding the creation timestamp for the event.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
    ÚidÚtyper   r   Ú_eventN)r&   r'   r(   r)   r*   r+   r   Údictr0   r!   r   r3   r3   ’   s&   … ñð, 	ƒGØ
ƒIØÓØƒKàƒLØMr!   r3   c                   ó¤   — e Zd ZU dZeed<   eed<   eed<   edefd„«       Zede	fd„«       Z
edefd„«       Zedee   fd	„«       Zedefd
„«       Zy)ÚDiscussionCommentaz  A comment in a Discussion / Pull Request.

    Subclass of [`DiscussionEvent`].


    Attributes:
        id (`str`):
            The ID of the event. An hexadecimal string.
        type (`str`):
            The type of the event.
        created_at (`datetime`):
            A [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime)
            object holding the creation timestamp for the event.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        content (`str`):
            The raw markdown content of the comment. Mentions, links and images are not rendered.
        edited (`bool`):
            Whether or not this comment has been edited.
        hidden (`bool`):
            Whether or not this comment has been hidden.
    ÚcontentÚeditedÚhiddenr   c                 ó,   — | j                   d   d   d   S )z&The rendered comment, as a HTML stringÚdataÚlatestÚhtml©r<   r   s    r   ÚrenderedzDiscussionComment.renderedÑ   s   € ð �{‰{˜6Ñ" 8Ñ,¨VÑ4Ð4r!   c                 ó>   — t        | j                  d   d   d   «      S )ú+The last edit time, as a `datetime` object.rD   rE   Ú	updatedAt)r   r<   r   s    r   Úlast_edited_atz DiscussionComment.last_edited_atÖ   s"   € ô ˜dŸk™k¨&Ñ1°(Ñ;¸KÑHÓIÐIr!   c                 óf   — | j                   d   d   j                  di «      j                  dd«      S )rJ   rD   rE   r   ÚnameÚdeleted)r<   Úgetr   s    r   Úlast_edited_byz DiscussionComment.last_edited_byÛ   s2   € ð �{‰{˜6Ñ" 8Ñ,×0Ñ0°¸2Ó>×BÑBÀ6È9ÓUÐUr!   c                 ó&   — | j                   d   d   S )zThe edit history of the commentrD   ÚhistoryrG   r   s    r   Úedit_historyzDiscussionComment.edit_historyà   s   € ð �{‰{˜6Ñ" 9Ñ-Ð-r!   c                 ó,   — t        | j                  «      S )N)ÚlenrT   r   s    r   Únumber_of_editsz!DiscussionComment.number_of_editså   s   € ä�4×$Ñ$Ó%Ð%r!   N)r&   r'   r(   r)   r*   r+   r.   r/   rH   r   rL   rQ   r   r=   rT   r-   rW   r0   r!   r   r?   r?   ³   s§   … ñð0 ƒLØƒLØƒLàð5˜#ò 5ó ð5ð ðJ ò Jó ðJð ðV ò Vó ðVð ð.˜d 4™jò .ó ð.ð ð& ò &ó ñ&r!   r?   c                   ó   — e Zd ZU dZeed<   y)ÚDiscussionStatusChangeaV  A change of status in a Discussion / Pull Request.

    Subclass of [`DiscussionEvent`].

    Attributes:
        id (`str`):
            The ID of the event. An hexadecimal string.
        type (`str`):
            The type of the event.
        created_at (`datetime`):
            A [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime)
            object holding the creation timestamp for the event.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        new_status (`str`):
            The status of the Discussion / Pull Request after the change.
            It can be one of:
                * `"open"`
                * `"closed"`
                * `"merged"` (only for Pull Requests )
    Ú
new_statusN©r&   r'   r(   r)   r*   r+   r0   r!   r   rY   rY   ê   s   … ñð. „Or!   rY   c                   ó&   — e Zd ZU dZeed<   eed<   y)ÚDiscussionCommitaã  A commit in a Pull Request.

    Subclass of [`DiscussionEvent`].

    Attributes:
        id (`str`):
            The ID of the event. An hexadecimal string.
        type (`str`):
            The type of the event.
        created_at (`datetime`):
            A [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime)
            object holding the creation timestamp for the event.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        summary (`str`):
            The summary of the commit.
        oid (`str`):
            The OID / SHA of the commit, as a hexadecimal string.
    ÚsummaryÚoidNr[   r0   r!   r   r]   r]     s   … ñð* ƒLØ	„Hr!   r]   c                   ó&   — e Zd ZU dZeed<   eed<   y)ÚDiscussionTitleChangeaò  A rename event in a Discussion / Pull Request.

    Subclass of [`DiscussionEvent`].

    Attributes:
        id (`str`):
            The ID of the event. An hexadecimal string.
        type (`str`):
            The type of the event.
        created_at (`datetime`):
            A [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime)
            object holding the creation timestamp for the event.
        author (`str`):
            The username of the Discussion / Pull Request author.
            Can be `"deleted"` if the user has been deleted since.
        old_title (`str`):
            The previous title for the Discussion / Pull Request.
        new_title (`str`):
            The new title.
    Ú	old_titleÚ	new_titleNr[   r0   r!   r   ra   ra   !  s   … ñð* ƒNØ„Nr!   ra   Úeventr   c           	      ó¶  — | d   }| d   }t        | d   «      }t        |||| j                  di «      j                  dd«      | ¬«      }|dk(  r&t        di |¤| d	   d
   | d	   d   | d	   d   d   dœ¤ŽS |dk(  rt	        di |¤d| d	   d   i¤ŽS |dk(  rt        di |¤| d	   d   | d	   d   dœ¤ŽS |dk(  rt        di |¤| d	   d   | d	   d   dœ¤ŽS t        di |¤ŽS )z.Instantiates a [`DiscussionEvent`] from a dictr:   r;   Ú	createdAtr   rN   rO   )r:   r;   r   r   r<   ÚcommentrD   rA   rB   rE   Úraw)rA   rB   r@   zstatus-changerZ   r   ÚcommitÚsubjectr_   )r^   r_   ztitle-changeÚfromÚto)rb   rc   r0   )r   r=   rP   r?   rY   r]   ra   r3   )rd   Úevent_idÚ
event_typer   Úcommon_argss        r   Údeserialize_eventrp   <  sY  € à˜$‘K€HØ˜F‘m€JÜ  kÑ 2Ó3€JäØØØØ�y‰y˜ 2Ó&×*Ñ*¨6°9Ó=Øô€Kð �YÒÜ ñ 
Øð
à˜‘= Ñ*Ø˜‘= Ñ*Ø˜&‘M (Ñ+¨EÑ2ó	
ð 	
ð �_Ò$Ü%ñ 
Øñ
à˜V‘} XÑ.ò
ð 	
ð �XÒÜñ 
Øð
à˜&‘M )Ñ,Ø�f‘˜eÑ$ó
ð 	
ð
 �^Ò#Ü$ñ 
Øð
à˜F‘m FÑ+Ø˜F‘m DÑ)ó
ð 	
ô Ñ)˜[Ñ)Ð)r!   N)r)   Údataclassesr   r   Útypingr   r   r   r   Ú r
   Úutilsr   r,   r   r2   r3   r?   rY   r]   ra   r=   rp   r0   r!   r   ú<module>ru      s  ðñõ "Ý ß 1Ó 1å Ý !ð Ð>Ñ?Ð ð ÷@Zð @Zó ð@ZðF ô7˜Jó 7ó ð7ðt ÷Nð Nó ðNð@ ô3&˜ó 3&ó ð3&ðl ô˜_ó ó ðð6 ô�ó ó ðð4 ô˜Oó ó ðð4'*˜Tð '* oô '*r!   