
    ,Ofm                    R   d dl mZ d dlZd dlmZ d dlmZ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Z	d dlZ	d dlZ	d dl	mZ d dlmZmZmZmZ d dlmZ er6d 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 d dlm Z  d dl!m"Z"  G d de	jF                  jH                        Z%y)    )annotationsN)datetime)TYPE_CHECKINGAny)Consts)	AttributeNotSetOpt
is_defined)PaginatedList)Event)Gist)
Membership)Organization)Permissions)Plan)Project)
Repository)UserKeyc                     e Zd ZdZdGdZdHdZedHd       ZedId       ZdJdZ	dKdZ
edHd       ZedId	       ZedId
       ZedLd       ZedId       ZedJd       ZedMd       ZedJd       ZedId       ZedHd       ZedJd       ZedHd       ZedJd       ZedHd       ZedHd       ZedId       ZedNd       ZedHd       ZedJd       ZedHd       ZedOd       ZedId       Z edHd       Z!edId       Z"edHd        Z#edLd!       Z$edPd"       Z%edQd#       Z&edLd$       Z'edJd%       Z(edJd&       Z)edHd'       Z*edHd(       Z+edHd)       Z,edRd*       Z-edHd+       Z.edHd,       Z/edSd-       Z0edJd.       Z1edLd/       Z2edHd0       Z3edMd1       Z4edHd2       Z5dTd3Z6dUd4Z7dUd5Z8e9fdVd6Z:dWd7Z;dXd8Z<dYdZd9Z=dTd:Z>dTd;Z?dTd<Z@d[d=ZAe9e9e9f	 	 	 	 	 	 	 d\d>ZBd]d?ZCd]d@ZDd]dAZEd^dBZFedHdC       ZGd_dDZHd`dEZIyF)a	NamedUserz
    This class represents NamedUsers.

    The reference can be found here
    https://docs.github.com/en/rest/reference/users#get-a-user

    c                   t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _	        t         | _
        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _        t         | _         t         | _!        t         | _"        t         | _#        t         | _$        t         | _%        t         | _&        t         | _'        t         | _(        t         | _)        t         | _*        t         | _+        t         | _,        t         | _-        y N).r	   _avatar_url_bio_blog_collaborators_company_contributions_created_at_disk_usage_email_events_url
_followers_followers_url
_following_following_url
_gists_url_gravatar_id	_hireable	_html_url_id_invitation_teams_url_inviter	_location_login_name_node_id_organizations_url_owned_private_repos_permissions_plan_private_gists_public_gists_public_repos_received_events_url
_repos_url_role_site_admin_starred_url_subscriptions_url_suspended_at_team_count_total_private_repos_twitter_username_type_updated_at_urlselfs    0lib/python3.12/site-packages/github/NamedUser.py_initAttributeszNamedUser._initAttributes^   sV   +1+1	,2
.4/5.406+1-3+1*0.4*0.4*03917)/#)5;".406&,%+
(.284:!4:&,
.4-3-34:!*0%+
,2,2289?+14:!8>%+
06$*	    c                P    | j                  d| j                  j                  i      S )Nlogin)get__repr__r0   valuerG   s    rI   __repr__zNamedUser.__repr__   s"    $++*;*; <==rK   c                d    | j                  | j                         | j                  j                  S r   )_completeIfNotSetr2   rO   rG   s    rI   node_idzNamedUser.node_id   $    t}}-}}"""rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rC   rO   rG   s    rI   twitter_usernamezNamedUser.twitter_username   s(    t556%%+++rK   c                D    t        | j                  | j                  f      S r   )hashidrM   rG   s    rI   __hash__zNamedUser.__hash__   s    TWWdjj)**rK   c                    t        |t        |             xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )
isinstancetyperM   rY   )rH   others     rI   __eq__zNamedUser.__eq__   s:    %d,bu{{1JbtwwZ_ZbZbObbrK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   
avatar_urlzNamedUser.avatar_url   (    t//0%%%rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   biozNamedUser.bio   "    tyy)yyrK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   blogzNamedUser.blog   $    tzz*zzrK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   collaboratorszNamedUser.collaborators   (    t223""(((rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   companyzNamedUser.company   rT   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r   rO   rG   s    rI   contributionszNamedUser.contributions   rk   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r    rO   rG   s    rI   
created_atzNamedUser.created_at   rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r!   rO   rG   s    rI   
disk_usagezNamedUser.disk_usage   rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r"   rO   rG   s    rI   emailzNamedUser.email   $    t{{+{{   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r#   rO   rG   s    rI   
events_urlzNamedUser.events_url   rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r$   rO   rG   s    rI   	followerszNamedUser.followers   $    t/$$$rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r%   rO   rG   s    rI   followers_urlzNamedUser.followers_url   rk   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r&   rO   rG   s    rI   	followingzNamedUser.following   r{   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r'   rO   rG   s    rI   following_urlzNamedUser.following_url   rk   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r(   rO   rG   s    rI   	gists_urlzNamedUser.gists_url   r{   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r)   rO   rG   s    rI   gravatar_idzNamedUser.gravatar_id   (    t001  &&&rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r*   rO   rG   s    rI   hireablezNamedUser.hireable   $    t~~.~~###rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r+   rO   rG   s    rI   html_urlzNamedUser.html_url   r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r,   rO   rG   s    rI   rY   zNamedUser.id   s"    txx(xx~~rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r-   rO   rG   s    rI   invitation_teams_urlzNamedUser.invitation_teams_url   s(    t99:))///rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r.   rO   rG   s    rI   inviterzNamedUser.inviter  rT   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r/   rO   rG   s    rI   locationzNamedUser.location	  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r0   rO   rG   s    rI   rM   zNamedUser.login  rv   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r1   rO   rG   s    rI   namezNamedUser.name  rh   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r3   rO   rG   s    rI   organizations_urlzNamedUser.organizations_url  (    t667&&,,,rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r4   rO   rG   s    rI   owned_private_reposzNamedUser.owned_private_repos  (    t889((...rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r5   rO   rG   s    rI   permissionszNamedUser.permissions"  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r6   rO   rG   s    rI   planzNamedUser.plan'  rh   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r7   rO   rG   s    rI   private_gistszNamedUser.private_gists,  rk   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r8   rO   rG   s    rI   public_gistszNamedUser.public_gists1  (    t112!!'''rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r9   rO   rG   s    rI   public_reposzNamedUser.public_repos6  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r:   rO   rG   s    rI   received_events_urlzNamedUser.received_events_url;  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r;   rO   rG   s    rI   	repos_urlzNamedUser.repos_url@  r{   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r<   rO   rG   s    rI   rolezNamedUser.roleE  rh   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r=   rO   rG   s    rI   
site_adminzNamedUser.site_adminJ  rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r>   rO   rG   s    rI   starred_urlzNamedUser.starred_urlO  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r?   rO   rG   s    rI   subscriptions_urlzNamedUser.subscriptions_urlT  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   r@   rO   rG   s    rI   suspended_atzNamedUser.suspended_atY  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rA   rO   rG   s    rI   
team_countzNamedUser.team_count^  rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rB   rO   rG   s    rI   total_private_reposzNamedUser.total_private_reposc  r   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rD   rO   rG   s    rI   r]   zNamedUser.typeh  rh   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rE   rO   rG   s    rI   
updated_atzNamedUser.updated_atm  rb   rK   c                d    | j                  | j                         | j                  j                  S r   )rR   rF   rO   rG   s    rI   urlzNamedUser.urlr  re   rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zq
        :calls: `GET /users/{user}/events <https://docs.github.com/en/rest/reference/activity#events>`_
        z/eventsNgithubr   r   
_requesterr   rG   s    rI   
get_eventszNamedUser.get_eventsw  s@     ##11&,,2D2DdooZ^ZbZbYccjWkmqrrrK   c                |    t         j                  j                  t        | j                  | j                   dd      S )zt
        :calls: `GET /users/{user}/followers <https://docs.github.com/en/rest/reference/users#followers>`_
        z
/followersNr   r   r   r   r   rG   s    rI   get_followerszNamedUser.get_followers}  6     ##11)T__QUQYQYPZZdNegkllrK   c                |    t         j                  j                  t        | j                  | j                   dd      S )zt
        :calls: `GET /users/{user}/following <https://docs.github.com/en/rest/reference/users#followers>`_
        z
/followingNr   rG   s    rI   get_followingzNamedUser.get_following  r   rK   c                4   |t         u st        |t              sJ |       t               }t	        |      r|j                  d      |d<   t        j                  j                  t        j                  j                  | j                  | j                   d|      S )zf
        :calls: `GET /users/{user}/gists <https://docs.github.com/en/rest/reference/gists>`_
        z%Y-%m-%dT%H:%M:%SZsincez/gists)r	   r\   r   dictr   strftimer   r   r   r   r   )rH   r   url_parameterss      rI   	get_gistszNamedUser.get_gists  s}     *UH"=DuD=e&+nn5I&JN7###11KKdoo$((6/BN
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )z
        :calls: `GET /users/{user}/keys <https://docs.github.com/en/rest/reference/users#create-a-public-ssh-key-for-the-authenticated-user>`_
        z/keysN)r   r   r   r   r   rG   s    rI   get_keyszNamedUser.get_keys  s@     ##11&..2H2H$//^b^f^f]ggl[mosttrK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zd
        :calls: `GET /users/{user}/orgs <https://docs.github.com/en/rest/reference/orgs>`_
        z/orgsN)r   r   r   r   r   rG   s    rI   get_orgszNamedUser.get_orgs  sB     ##11,,doo$((5?QSW
 	
rK   c                    t        |t              sJ |       d|i}t        j                  j                  t        j                  j                  | j
                  | j                   d|dt        j                  i      S )z
        :calls: `GET /users/{user}/projects <https://docs.github.com/en/rest/reference/projects#list-user-projects>`_
        statez	/projectsAccept)headers)	r\   strr   r   r   r   r   r   mediaTypeProjectsPreview)rH   r   r   s      rI   get_projectszNamedUser.get_projects  st     %%,u,%!5)##11NN""OOxxj	"v>>? 2 
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zx
        :calls: `GET /users/{user}/events/public <https://docs.github.com/en/rest/reference/activity#events>`_
        z/events/publicNr   rG   s    rI   get_public_eventszNamedUser.get_public_events  s?     ##11LLDHH:^1Ld
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )z
        :calls: `GET /users/{user}/received_events/public <https://docs.github.com/en/rest/reference/activity#events>`_
        z/received_events/publicNr   rG   s    rI   get_public_received_eventsz$NamedUser.get_public_received_events  sC     ##11LLOOxxj/0	
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zz
        :calls: `GET /users/{user}/received_events <https://docs.github.com/en/rest/reference/activity#events>`_
        z/received_eventsNr   rG   s    rI   get_received_eventszNamedUser.get_received_events  sA     ##11LLDHH:=M1NPT
 	
rK   c                    t        |t              sJ |       | j                  j                  dd| j                   d|       \  }}t
        j                  j                  | j                  ||d      S )zh
        :calls: `GET /repos/{owner}/{repo} <https://docs.github.com/en/rest/reference/repos>`_
        GETz/repos//T	completed)r\   r   r   requestJsonAndCheckrM   r   r   )rH   r   r   datas       rI   get_repozNamedUser.get_repo  sl     $$*d*$;;EWTZZLXYZ^Y_C`a  ++DOOWdVZ+[[rK   c                   |t         u st        |t              sJ |       |t         u st        |t              sJ |       |t         u st        |t              sJ |       t               }|t         ur||d<   |t         ur||d<   |t         ur||d<   t        j
                  j                  t        j                  j                  | j                  | j                   d|      S )zf
        :calls: `GET /users/{user}/repos <https://docs.github.com/en/rest/reference/repos>`_
        r]   sort	directionz/repos)	r	   r\   r   r   r   r   r   r   r   )rH   r]   r   r   r   s        rI   	get_reposzNamedUser.get_repos  s     v~D#!6<<6v~D#!6<<6F"jC&@K)K@v%)N6"v%)N6"F"*3N;'##11((OOxxj	
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zt
        :calls: `GET /users/{user}/starred <https://docs.github.com/en/rest/reference/activity#starring>`_
        z/starredNr   r   r   r   r   rG   s    rI   get_starredzNamedUser.get_starred  B     ##11(($//dhhZx;PRV
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zz
        :calls: `GET /users/{user}/subscriptions <https://docs.github.com/en/rest/reference/activity#watching>`_
        z/subscriptionsNr   rG   s    rI   get_subscriptionszNamedUser.get_subscriptions  sD     ##11((OOxxj'	
 	
rK   c                    t         j                  j                  t         j                  j                  | j                  | j                   dd      S )zt
        :calls: `GET /users/{user}/watched <https://docs.github.com/en/rest/reference/activity#starring>`_
        z/watchedNr   rG   s    rI   get_watchedzNamedUser.get_watched  r   rK   c                    t        |t        j                  j                        sJ |       | j                  j	                  d| j
                   d|j                         \  }}}|dk(  S )z
        :calls: `GET /users/{user}/following/{target_user} <https://docs.github.com/en/rest/reference/users#check-if-a-user-follows-another-user>`_
        r   z/following/   )r\   r   r   r   requestJsonr   	_identity)rH   r   statusr   r   s        rI   has_in_followingzNamedUser.has_in_following	  sc     )V%5%5%?%?@K)K@ $ ; ;EdhhZ{[d[n[nZoCp q}rK   c                    | j                   S r   )rM   rG   s    rI   r   zNamedUser._identity  s    zzrK   c                   t        |t              s+t        |t        j                  j                        sJ |       t        |t        j                  j                        r|j                  }t
        j                  j                  |      }| j                  j                  dd| d| j                         \  }}t        j                  j                  | j                  ||d      S )z
        :calls: `GET /orgs/{org}/memberships/{username} <https://docs.github.com/en/rest/reference/orgs#check-organization-membership-for-a-user>`_
        r   z/orgs/z/memberships/Tr   )r\   r   r   r   rM   urllibparsequoter   r   r   )rH   orgr   r   s       rI   get_organization_membershipz%NamedUser.get_organization_membership  s     #s#z#v7J7J7W7W'X]Z]]Xc6..;;<))Cll  %;;EVC5P]^b^h^h]iCjk  ++DOOWdVZ+[[rK   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 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| j1                  t2        j4                  j4                  |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| j1                  t2        jD                  jD                  |d         | _#        d|v r2| j1                  t2        jH                  jH                  |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 r| j	                  |d(         | _0        d)|v r| j	                  |d)         | _1        d*|v r| j                  |d*         | _2        d+|v r| j                  |d+         | _3        d,|v r| j                  |d,         | _4        d-|v r| j                  |d-         | _5        y y ).Nra   rd   rg   rj   rm   ro   rq   rs   ru   rx   rz   r}   r   r   r   r   r   r   rY   r   r   r   rM   r   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   r]   r   r   )6_makeStringAttributer   r   r   _makeIntAttributer   r   r   _makeDatetimeAttributer    r!   r"   r#   r$   r%   r&   r'   r(   r)   _makeBoolAttributer*   r+   r,   r-   _makeClassAttributer   r   r.   r/   r0   r1   r2   r3   r4   r   r5   r   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   )rH   
attributess     rI   _useAttributeszNamedUser._useAttributes   s   :%#88L9QRDJ11*U2CDDIZ22:f3EFDJj("&"8"8O9T"UD
" 55j6KLDMj("&"8"8O9T"UD:%#:::l;STD:%#55j6NODj 33Jw4GHDK:%#88L9QRD*$"44Z5LMDOj("&";";J<W"XD*$"44Z5LMDOj("&";";J<W"XD*$"77
;8OPDOJ& $ 9 9*]:S TD#!44Z
5KLDN#!66z*7MNDN:--j.>?DH!Z/)-)B)B:NdCe)fD&
" 44V5E5E5O5OQ[\eQfgDM#!66z*7MNDNj 33Jw4GHDKZ22:f3EFDJ
" 55j6KLDM*,&*&?&?
K^@_&`D# J.(,(>(>zJ_?`(aD%J& $ 8 89K9K9W9WYcdqYr sDZ11&++2B2BJvDVWDJj("&"8"8O9T"UDZ'!%!7!7
>8R!SDZ'!%!7!7
>8R!SD J.(,(A(A*MbBc(dD%*$"77
;8OPDOZ22:f3EFDJ:%#66z,7OPDJ& $ 9 9*]:S TD*,&*&?&?
K^@_&`D#Z'!%!<!<Z=W!XD:%#55j6NOD J.(,(>(>zJ_?`(aD%+%)%>%>zJ\?]%^D"Z22:f3EFDJ:%#:::l;STDJ11*U2CDDI rK   N)returnNone)r	  r   )r	  z
str | None)r	  int)r^   r   r	  bool)r	  z
int | None)r	  r   )r	  zbool | None)r	  r   )r	  r   )r	  zPlan | None)r	  r  )r	  zdatetime | None)r	  zPaginatedList[Event])r	  zPaginatedList[NamedUser])r   zOpt[datetime]r	  zPaginatedList[Gist])r	  zPaginatedList[UserKey])r	  zPaginatedList[Organization])open)r   r   r	  zPaginatedList[Project])r   r   r	  r   )r]   Opt[str]r   r  r   r  r	  PaginatedList[Repository])r	  r  )r   r   r	  r  )r   zstr | Organizationr	  r   )r  zdict[str, Any]r	  r
  )J__name__
__module____qualname____doc__rJ   rP   propertyrS   rV   rZ   r_   ra   rd   rg   rj   rm   ro   rq   rs   ru   rx   rz   r}   r   r   r   r   r   r   rY   r   r   r   rM   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   rI   r   r   U   sM   -+^> # # , ,+c & &       ) ) # # ) ) & & & & ! ! & & % % ) ) % % ) ) % % ' ' $ $ $ $   0 0 # # $ $ ! !     - - / / ' '     ) ) ( ( ( ( / / % %     & & ' ' - - ( ( & & / /     & &  smm 06 

u


	

\  $	

 
 	

 
#
4
	

  	\ZErK   r   )&
__future__r   urllib.parser   r   typingr   r   github.Eventr   github.Gistgithub.GithubObjectgithub.Organizationgithub.PaginatedListgithub.Permissionsgithub.Plangithub.Repositoryr   r   r	   r
   r   r   r   r   github.Membershipr   r   r   r   github.Projectr   r   github.UserKeyr   GithubObjectCompletableGithubObjectr   r  rK   rI   <module>r&     sr   n #   %          B B ." ,0. &,&eE##;; eErK   