
    ,OfU                        d dl mZ d dlZd dlmZmZ d dlmZ d dlZ	d dl
Z	d dlZ	d dlZ	d dlZ	d dl	mZ d dlmZ d dlmZmZmZmZ er*d dlmZ d d	lmZ d d
l
mZ d dlmZ d dlmZ d dlmZ d dlmZ  G d de      Zy)    )annotationsN)TYPE_CHECKINGAny)
deprecated)Consts)UnknownObjectException)	AttributeCompletableGithubObjectNotSetOpt)
Membership)	NamedUser)Organization)PaginatedList)Permissions)
Repository)TeamDiscussionc                  &   e Zd ZdZd+dZd,dZed-d       Zed-d       Zed,d       Z	ed,d       Z
ed,d       Zed,d	       Zed,d
       Zed-d       Zed,d       Zed,d       Zed,d       Zed.d       Zed,d       Zed/d       Zed,d       Zd0dZefd1dZd2dZd3dZd4dZ ed      d5d       Zd6dZd+dZeeeeef	 	 	 	 	 	 	 	 	 	 	 	 	 d7dZ d8dZ!d9dZ"efd:d Z#d;d!Z$d<d"Z%d=d#Z&d>d$Z'd0d%Z(d0d&Z)d3d'Z*ed-d(       Z+d?d)Z,y*)@Teamz
    This class represents Teams.

    The reference can be found here
    https://docs.github.com/en/rest/reference/teams

    c                N   t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _	        t         | _
        t         | _        t         | _        t         | _        t         | _        t         | _        y N)r   _id_members_count_members_url_name_description_notification_setting_permission_repos_count_repositories_url_slug_url_organization_privacy_parent	_html_urlselfs    +lib/python3.12/site-packages/github/Team.py_initAttributeszTeam._initAttributesb   ss    #).4,2%+
,25;"+1,217%+
$*	JP(.4:)/    c                z    | j                  | j                  j                  | j                  j                  d      S )N)idname)get__repr__r   valuer   r'   s    r)   __repr__zTeam.__repr__s   s*    txx~~tzz?O?O PQQr+   c                d    | j                  | j                         | j                  j                  S r   )_completeIfNotSetr   r0   r'   s    r)   r-   zTeam.idv   s"    txx(xx~~r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   members_countzTeam.members_count{   s(    t223""(((r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   members_urlzTeam.members_url   (    t001  &&&r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   r.   z	Team.name   $    tzz*zzr+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   descriptionzTeam.description   r8   r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   notification_settingzTeam.notification_setting   s(    t99:))///r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   
permissionzTeam.permission   s(    t//0%%%r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r   r0   r'   s    r)   repos_countzTeam.repos_count   r8   r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r    r0   r'   s    r)   repositories_urlzTeam.repositories_url   s(    t556%%+++r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r!   r0   r'   s    r)   slugz	Team.slug   r:   r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r"   r0   r'   s    r)   urlzTeam.url   s"    tyy)yyr+   c                d    | j                  | j                         | j                  j                  S r   )r3   r#   r0   r'   s    r)   organizationzTeam.organization   s(    t112!!'''r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r$   r0   r'   s    r)   privacyzTeam.privacy   s$    t}}-}}"""r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r%   r0   r'   s    r)   parentzTeam.parent   s$    t||,||!!!r+   c                d    | j                  | j                         | j                  j                  S r   )r3   r&   r0   r'   s    r)   html_urlzTeam.html_url   s$    t~~.~~###r+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}y)a  
        This API call is deprecated. Use `add_membership` instead.
        https://docs.github.com/en/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy

        :calls: `PUT /teams/{id}/members/{user} <https://docs.github.com/en/rest/reference/teams>`_
        PUT	/members/N
isinstancegithubr   
_requesterrequestJsonAndCheckrH   	_identityr(   memberheadersdatas       r)   add_to_memberszTeam.add_to_members   sV     &&"2"2"<"<=EvE=;;EdhhZyY_YiYiXjCklr+   c                :   t        |t        j                  j                        sJ |       |t        u st        |t              sJ |       |t        ur|dv sJ d|i}nddi}| j
                  j                  d| j                   d|j                   |      \  }}y)zq
        :calls: `PUT /teams/{id}/memberships/{user} <https://docs.github.com/en/rest/reference/teams>`_
        )r[   
maintainerroler[   rR   /memberships/inputN)	rU   rV   r   r   strrW   rX   rH   rY   )r(   r[   ra   put_parametersr\   r]   s         r)   add_membershipzTeam.add_membership   s     &&"2"2"<"<=EvE=v~D#!6<<6v3333N
 N ;;dhhZ}V-=-=,>?~ < 
r+   c                   t        |t              s+t        |t        j                  j                        sJ |       t        |t        j                  j                        r|j                  }nt
        j                  j                  |      }| j                  j                  d| j                   d|       \  }}t        j                  j                  | j                  ||d      S )z
        :calls: `GET /orgs/{org}/memberships/team/{team_id}/{username} <https://docs.github.com/en/rest/reference/teams#get-team-membership-for-a-user>`_
        GETrb   T	completed)rU   re   rV   r   rY   urllibparsequoterW   rX   rH   r   rZ   s       r)   get_team_membershipzTeam.get_team_membership   s     &#&*VV=M=M=W=W*X`Z``Xff..889%%F\\''/F;;EdhhZ}]c\dCef  ++DOOWdVZ+[[r+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}y)zq
        :calls: `PUT /teams/{id}/repos/{org}/{repo} <https://docs.github.com/en/rest/reference/teams>`_
        rR   /repos/NrU   rV   r   rW   rX   rH   rY   r(   repor\   r]   s       r)   add_to_reposzTeam.add_to_repos   sV     $ 1 1 < <=CtC=;;EdhhZwW[WeWeVfCghr+   c                   t        |t        j                  j                        st        |t              sJ |       t        |t        j                  j                        r|j                  }nt
        j                  j                  |      }	 | j                  j                  d| j                   d| dt        j                  i      \  }}t        j                  j                  | j                  ||d   d      S # t        $ r Y yw xY w)	zq
        :calls: `GET /teams/{id}/repos/{org}/{repo} <https://docs.github.com/en/rest/reference/teams>`_
        ri   rq   Acceptr\   permissionsTrj   N)rU   rV   r   re   rY   rl   rm   rn   rW   rX   rH   r   teamRepositoryPermissionsr   r   rs   s       r)   get_repo_permissionzTeam.get_repo_permission   s     $ 1 1 < <=DRUAV\X\\VdF--889>>D<<%%d+D	 OO??88*GD6*!6#C#CD @ MGT
 %%11$//7DQ^L_ko1pp% 		s   A/C= =	D	D	zf
        Team.set_repo_permission() is deprecated, use Team.update_team_repository() instead.
        )reasonc                    t        |t        j                  j                        sJ |       d|i}| j                  j	                  d| j
                   d|j                   |      \  }}y)z
        :calls: `PUT /teams/{id}/repos/{org}/{repo} <https://docs.github.com/en/rest/reference/teams>`_
        :param repo: :class:`github.Repository.Repository`
        :param permission: string
        :rtype: None
        r@   rR   rq   rc   Nrr   )r(   rt   r@   rf   r\   r]   s         r)   set_repo_permissionzTeam.set_repo_permission  sk     $ 1 1 < <=CtC=*
 ;;dhhZwt~~&67~ < 
r+   c                   t        |t        j                  j                        st        |t              sJ |       t        |t              sJ |       t        |t        j                  j                        r|j                  }nt
        j                  j                  |      }d|i}| j                  j                  d| j                  j                   d| j                   d| |      \  }}}|dk(  S )z
        :calls: `PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo} <https://docs.github.com/en/rest/reference/teams#check-team-permissions-for-a-repository>`_
        r@   rR   z/teams/rq   rc      )rU   rV   r   re   rY   rl   rm   rn   rW   requestJsonrJ   rH   rF   )r(   rt   r@   repo_url_paramrf   status_s          r)   update_team_repositoryzTeam.update_team_repository  s     $ 1 1 < <=DRUAV\X\\V*c*6J6*dF--889!^^N#\\//5N*
 22  $$%WTYYKw~>NO  3 
1
 }r+   c                V    | j                   j                  d| j                        \  }}y)zo
        :calls: `DELETE /teams/{id} <https://docs.github.com/en/rest/reference/teams#delete-a-team>`_
        DELETEN)rW   rX   rH   )r(   r\   r]   s      r)   deletezTeam.delete-  s"     ;;HdhhOr+   c           	        t        |t              sJ |       |t        u st        |t              sJ |       |t        u st        |t              sJ |       |t        u st        |t              sJ |       |t        u s"t        |t        t	        d      f      sJ |       |ddt        fv sJ |       t        j
                  ||||||d      }| j                  j                  d| j                  |      \  }}	| j                  |	       y)zn
        :calls: `PATCH /teams/{id} <https://docs.github.com/en/rest/reference/teams#update-a-team>`_
        Nnotifications_enablednotifications_disabled)r.   r<   r@   rL   parent_team_idr>   PATCHrc   )
rU   re   r   inttyperemove_unset_itemsrW   rX   rH   _useAttributes)
r(   r.   r<   r@   rL   r   r>   post_parametersr\   r]   s
             r)   editz	Team.edit3  s    $$*d*$f$
;(DQkQDV#z*c'BNJNB& Jw$<EgE<':nsDQUJFW+XhZhhX#(?AY[a'bbxdxxb 33*(""0(<	
 ;;GTXXUd;eD!r+   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zo
        :calls: `GET /teams/{id}/teams <https://docs.github.com/en/rest/reference/teams#list-teams>`_
        z/teamsN)rV   r   r   rW   rH   r'   s    r)   	get_teamszTeam.get_teamsS  sB     ##11KKOOxxj	
 	
r+   c                    t         j                  j                  t         j                  j                  | j                  | j                   dddt
        j                  i      S )z{
        :calls: `GET /teams/{id}/discussions <https://docs.github.com/en/rest/reference/teams#list-discussions>`_
        z/discussionsNrw   rx   )rV   r   r   rW   rH   r   mediaTypeTeamDiscussionsPreviewr'   s    r)   get_discussionszTeam.get_discussions^  sW     ##11!!00OOxxj%vEEF 2 
 	
r+   c                   |t         u st        |t              sJ |       i }|t         ur|dv sJ ||d<   t        j                  j	                  t        j
                  j
                  | j                  | j                   d|      S )zx
        :calls: `GET /teams/{id}/members <https://docs.github.com/en/rest/reference/teams#list-team-members>`_
        )r[   r`   allra   z/members)r   rU   re   rV   r   r   rW   rH   )r(   ra   url_parameterss      r)   get_memberszTeam.get_membersj  s     v~D#!6<<6)+v::::%)N6"##11&&OOxxj!	
 	
r+   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zd
        :calls: `GET /teams/{id}/repos <https://docs.github.com/en/rest/reference/teams>`_
        z/reposN)rV   r   r   rW   rH   r'   s    r)   	get_reposzTeam.get_reposz  sB     ##11(($//dhhZv;NPT
 	
r+   c                    t         j                  j                  t         j                  j                  | j                  | j                   dddt
        j                  i      S )zr
        :calls: `GET /teams/{id}/invitations <https://docs.github.com/en/rest/reference/teams#members>`_
        z/invitationsNrw   rx   )rV   r   r   rW   rH   r   &mediaTypeOrganizationInvitationPreviewr'   s    r)   invitationszTeam.invitations  sW     ##11&&OOxxj%vLLM 2 
 	
r+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}}|dk(  S )zm
        :calls: `GET /teams/{id}/members/{user} <https://docs.github.com/en/rest/reference/teams>`_
        ri   rS   r   )rU   rV   r   rW   r   rH   rY   )r(   r[   r   r\   r]   s        r)   has_in_memberszTeam.has_in_members  sc     &&"2"2"<"<=EvE= $ ; ;EdhhZyY_YiYiXjCk l}r+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}}|dk(  S )zs
        :calls: `GET /teams/{id}/repos/{owner}/{repo} <https://docs.github.com/en/rest/reference/teams>`_
        ri   rq   r   )rU   rV   r   rW   r   rH   rY   )r(   rt   r   r\   r]   s        r)   has_in_reposzTeam.has_in_repos  sc     $ 1 1 < <=CtC= $ ; ;EdhhZwW[WeWeVfCg h}r+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}y)z
        :calls: `DELETE /teams/{team_id}/memberships/{username} <https://docs.github.com/en/rest/reference/teams#remove-team-membership-for-a-user>`_
        r   rb   NrT   rZ   s       r)   remove_membershipzTeam.remove_membership  sW     &&"2"2"<"<=EvE=;;H
R_`f`p`p_qFrsr+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}y)a  
        This API call is deprecated. Use `remove_membership` instead:
        https://docs.github.com/en/rest/reference/teams#add-or-update-team-membership-for-a-user-legacy

        :calls: `DELETE /teams/{id}/members/{user} <https://docs.github.com/en/rest/reference/teams>`_
        r   rS   NrT   rZ   s       r)   remove_from_memberszTeam.remove_from_members  sW     &&"2"2"<"<=EvE=;;H
R[\b\l\l[mFnor+   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}y)zv
        :calls: `DELETE /teams/{id}/repos/{owner}/{repo} <https://docs.github.com/en/rest/reference/teams>`_
        r   rq   Nrr   rs   s       r)   remove_from_reposzTeam.remove_from_repos  sW     $ 1 1 < <=CtC=;;H
RYZ^ZhZhYiFjkr+   c                    | j                   S r   )r-   r'   s    r)   rY   zTeam._identity  s    wwr+   c                   d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _        d|v r| j                  |d         | _	        d	|v r| j                  |d	         | _
        d
|v r| j                  |d
         | _        d|v r| j                  |d         | _        d|v r2| j                  t        j                  j                  |d         | _        d|v r| j                  |d         | _        d|v r2| j                  t        j$                  j$                  |d         | _        d|v r| j                  |d         | _        y y )Nr-   r5   r7   r.   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   )_makeIntAttributer   r   _makeStringAttributer   r   r   r   r   r   r    r!   r"   _makeClassAttributerV   r   r#   r$   r   r%   r&   )r(   
attributess     r)   r   zTeam._useAttributes  s   :--j.>?DHj("&"8"8O9T"UDJ& $ 9 9*]:S TDZ22:f3EFDJJ& $ 9 9*]:S TD!Z/)-)B)B:NdCe)fD&:%#88L9QRDJ& $ 6 6z-7P QD+%)%>%>zJ\?]%^D"Z22:f3EFDJJ11*U2CDDIZ'!%!9!9&:M:M:Z:Z\fgu\v!wD
" 55j6KLDMz!33FKK4D4DjQYFZ[DL#!66z*7MNDN $r+   N)returnNone)r   re   )r   r   )r   r   )r   r   )r[   r   r   r   )r[   r   ra   Opt[str]r   r   )r[   zstr | NamedUserr   r   )rt   r   r   r   )rt   r   r   zPermissions | None)rt   r   r@   re   r   r   )rt   r   r@   re   r   bool)r.   re   r<   r   r@   r   rL   r   r   zOpt[int]r>   r   r   r   )r   zPaginatedList[Team])r   zPaginatedList[TeamDiscussion])ra   r   r   PaginatedList[NamedUser])r   zPaginatedList[Repository])r   r   )r[   r   r   r   )rt   r   r   r   )r   zdict[str, Any]r   r   )-__name__
__module____qualname____doc__r*   r1   propertyr-   r5   r7   r.   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   r^   r   rg   ro   ru   r{   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r    r+   r)   r   r   Y   s9   0"R   ) ) ' '     ' ' 0 0 & & ' ' , ,       ( ( # # " " $ $m BH 
&
\i& 



 (P !'%"#))/"" " 	"
 " !" '" 
"@	


 ,2 
 


tpl  Or+   r   ) 
__future__r   urllib.parserl   typingr   r   r   github.NamedUserrV   github.Organizationgithub.PaginatedListgithub.Repositorygithub.TeamDiscussionr   github.GithubExceptionr   github.GithubObjectr	   r
   r   r   github.Membershipr   r   r   r   github.Permissionsr   r   r   r   r   r+   r)   <module>r      sX   ~ #  % !       9 O O,*02.,4O" Or+   