1+ from datetime import datetime
12import xml .etree .ElementTree as ET
23from .exceptions import UnpopulatedPropertyError
34from .property_decorators import (
89from ..datetime_helpers import parse_datetime
910from .reference_item import ResourceReference
1011
12+ from typing import Dict , List , Optional , TYPE_CHECKING
13+
14+ if TYPE_CHECKING :
15+ from ..server .pager import Pager
16+
1117
1218class UserItem (object ):
1319
14- tag_name = "user"
20+ tag_name : str = "user"
1521
1622 class Roles :
1723 Interactor = "Interactor"
@@ -39,23 +45,27 @@ class Auth:
3945 SAML = "SAML"
4046 ServerDefault = "ServerDefault"
4147
42- def __init__ (self , name = None , site_role = None , auth_setting = None ):
43- self ._auth_setting = None
44- self ._domain_name = None
45- self ._external_auth_user_id = None
46- self ._id = None
47- self ._last_login = None
48+ def __init__ (
49+ self , name : Optional [str ] = None , site_role : Optional [str ] = None , auth_setting : Optional [str ] = None
50+ ) -> None :
51+ self ._auth_setting : Optional [str ] = None
52+ self ._domain_name : Optional [str ] = None
53+ self ._external_auth_user_id : Optional [str ] = None
54+ self ._id : Optional [str ] = None
55+ self ._last_login : Optional [datetime ] = None
4856 self ._workbooks = None
49- self ._favorites = None
57+ self ._favorites : Optional [ Dict [ str , List ]] = None
5058 self ._groups = None
51- self .email = None
52- self .fullname = None
53- self .name = name
54- self .site_role = site_role
55- self .auth_setting = auth_setting
59+ self .email : Optional [str ] = None
60+ self .fullname : Optional [str ] = None
61+ self .name : Optional [str ] = name
62+ self .site_role : Optional [str ] = site_role
63+ self .auth_setting : Optional [str ] = auth_setting
64+
65+ return None
5666
5767 @property
58- def auth_setting (self ):
68+ def auth_setting (self ) -> Optional [ str ] :
5969 return self ._auth_setting
6070
6171 @auth_setting .setter
@@ -64,32 +74,32 @@ def auth_setting(self, value):
6474 self ._auth_setting = value
6575
6676 @property
67- def domain_name (self ):
77+ def domain_name (self ) -> Optional [ str ] :
6878 return self ._domain_name
6979
7080 @property
71- def external_auth_user_id (self ):
81+ def external_auth_user_id (self ) -> Optional [ str ] :
7282 return self ._external_auth_user_id
7383
7484 @property
75- def id (self ):
85+ def id (self ) -> Optional [ str ] :
7686 return self ._id
7787
7888 @property
79- def last_login (self ):
89+ def last_login (self ) -> Optional [ datetime ] :
8090 return self ._last_login
8191
8292 @property
83- def name (self ):
93+ def name (self ) -> Optional [ str ] :
8494 return self ._name
8595
8696 @name .setter
8797 @property_not_empty
88- def name (self , value ):
98+ def name (self , value : str ):
8999 self ._name = value
90100
91101 @property
92- def site_role (self ):
102+ def site_role (self ) -> Optional [ str ] :
93103 return self ._site_role
94104
95105 @site_role .setter
@@ -99,36 +109,36 @@ def site_role(self, value):
99109 self ._site_role = value
100110
101111 @property
102- def workbooks (self ):
112+ def workbooks (self ) -> "Pager" :
103113 if self ._workbooks is None :
104114 error = "User item must be populated with workbooks first."
105115 raise UnpopulatedPropertyError (error )
106116 return self ._workbooks ()
107117
108118 @property
109- def favorites (self ):
119+ def favorites (self ) -> Dict [ str , List ] :
110120 if self ._favorites is None :
111121 error = "User item must be populated with favorites first."
112122 raise UnpopulatedPropertyError (error )
113123 return self ._favorites
114124
115125 @property
116- def groups (self ):
126+ def groups (self ) -> "Pager" :
117127 if self ._groups is None :
118128 error = "User item must be populated with groups first."
119129 raise UnpopulatedPropertyError (error )
120130 return self ._groups ()
121131
122- def to_reference (self ):
132+ def to_reference (self ) -> ResourceReference :
123133 return ResourceReference (id_ = self .id , tag_name = self .tag_name )
124134
125- def _set_workbooks (self , workbooks ):
135+ def _set_workbooks (self , workbooks ) -> None :
126136 self ._workbooks = workbooks
127137
128- def _set_groups (self , groups ):
138+ def _set_groups (self , groups ) -> None :
129139 self ._groups = groups
130140
131- def _parse_common_tags (self , user_xml , ns ):
141+ def _parse_common_tags (self , user_xml , ns ) -> "UserItem" :
132142 if not isinstance (user_xml , ET .Element ):
133143 user_xml = ET .fromstring (user_xml ).find (".//t:user" , namespaces = ns )
134144 if user_xml is not None :
@@ -178,7 +188,7 @@ def _set_values(
178188 self ._domain_name = domain_name
179189
180190 @classmethod
181- def from_response (cls , resp , ns ):
191+ def from_response (cls , resp , ns ) -> List [ "UserItem" ] :
182192 all_user_items = []
183193 parsed_response = ET .fromstring (resp )
184194 all_user_xml = parsed_response .findall (".//t:user" , namespaces = ns )
@@ -210,7 +220,7 @@ def from_response(cls, resp, ns):
210220 return all_user_items
211221
212222 @staticmethod
213- def as_reference (id_ ):
223+ def as_reference (id_ ) -> ResourceReference :
214224 return ResourceReference (id_ , UserItem .tag_name )
215225
216226 @staticmethod
@@ -241,5 +251,5 @@ def _parse_element(user_xml, ns):
241251 domain_name ,
242252 )
243253
244- def __repr__ (self ):
254+ def __repr__ (self ) -> str :
245255 return "<User {} name={} role={}>" .format (self .id , self .name , self .site_role )
0 commit comments