33from ..datetime_helpers import parse_datetime
44
55
6+ from typing import List , Optional , TYPE_CHECKING
7+
8+ if TYPE_CHECKING :
9+ import datetime
10+
11+
612class JobItem (object ):
713 class FinishCode :
814 """
915 Status codes as documented on
1016 https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref_jobs_tasks_and_schedules.htm#query_job
1117 """
1218
13- Success = 0
14- Failed = 1
15- Cancelled = 2
19+ Success : int = 0
20+ Failed : int = 1
21+ Cancelled : int = 2
1622
1723 def __init__ (
1824 self ,
19- id_ ,
20- job_type ,
21- progress ,
22- created_at ,
23- started_at = None ,
24- completed_at = None ,
25- finish_code = 0 ,
26- notes = None ,
27- mode = None ,
28- flow_run = None ,
25+ id_ : str ,
26+ job_type : str ,
27+ progress : str ,
28+ created_at : "datetime.datetime" ,
29+ started_at : Optional [ "datetime.datetime" ] = None ,
30+ completed_at : Optional [ "datetime.datetime" ] = None ,
31+ finish_code : int = 0 ,
32+ notes : Optional [ List [ str ]] = None ,
33+ mode : Optional [ str ] = None ,
34+ flow_run : Optional [ FlowRunItem ] = None
2935 ):
3036 self ._id = id_
3137 self ._type = job_type
@@ -34,48 +40,48 @@ def __init__(
3440 self ._started_at = started_at
3541 self ._completed_at = completed_at
3642 self ._finish_code = finish_code
37- self ._notes = notes or []
43+ self ._notes : List [ str ] = notes or []
3844 self ._mode = mode
3945 self ._flow_run = flow_run
4046
4147 @property
42- def id (self ):
48+ def id (self ) -> str :
4349 return self ._id
4450
4551 @property
46- def type (self ):
52+ def type (self ) -> str :
4753 return self ._type
4854
4955 @property
50- def progress (self ):
56+ def progress (self ) -> str :
5157 return self ._progress
5258
5359 @property
54- def created_at (self ):
60+ def created_at (self ) -> "datetime.datetime" :
5561 return self ._created_at
5662
5763 @property
58- def started_at (self ):
64+ def started_at (self ) -> Optional [ "datetime.datetime" ] :
5965 return self ._started_at
6066
6167 @property
62- def completed_at (self ):
68+ def completed_at (self ) -> Optional [ "datetime.datetime" ] :
6369 return self ._completed_at
6470
6571 @property
66- def finish_code (self ):
72+ def finish_code (self ) -> int :
6773 return self ._finish_code
6874
6975 @property
70- def notes (self ):
76+ def notes (self ) -> List [ str ] :
7177 return self ._notes
7278
7379 @property
74- def mode (self ):
80+ def mode (self ) -> Optional [ str ] :
7581 return self ._mode
7682
7783 @mode .setter
78- def mode (self , value ) :
84+ def mode (self , value : str ) -> None :
7985 # check for valid data here
8086 self ._mode = value
8187
@@ -94,7 +100,7 @@ def __repr__(self):
94100 )
95101
96102 @classmethod
97- def from_response (cls , xml , ns ):
103+ def from_response (cls , xml , ns ) -> List [ "JobItem" ] :
98104 parsed_response = ET .fromstring (xml )
99105 all_tasks_xml = parsed_response .findall (".//t:job" , namespaces = ns )
100106
@@ -136,23 +142,23 @@ def _parse_element(cls, element, ns):
136142
137143class BackgroundJobItem (object ):
138144 class Status :
139- Pending = "Pending"
140- InProgress = "InProgress"
141- Success = "Success"
142- Failed = "Failed"
143- Cancelled = "Cancelled"
145+ Pending : str = "Pending"
146+ InProgress : str = "InProgress"
147+ Success : str = "Success"
148+ Failed : str = "Failed"
149+ Cancelled : str = "Cancelled"
144150
145151 def __init__ (
146152 self ,
147- id_ ,
148- created_at ,
149- priority ,
150- job_type ,
151- status ,
152- title = None ,
153- subtitle = None ,
154- started_at = None ,
155- ended_at = None ,
153+ id_ : str ,
154+ created_at : "datetime.datetime" ,
155+ priority : int ,
156+ job_type : str ,
157+ status : str ,
158+ title : Optional [ str ] = None ,
159+ subtitle : Optional [ str ] = None ,
160+ started_at : Optional [ "datetime.datetime" ] = None ,
161+ ended_at : Optional [ "datetime.datetime" ] = None ,
156162 ):
157163 self ._id = id_
158164 self ._type = job_type
@@ -165,49 +171,49 @@ def __init__(
165171 self ._subtitle = subtitle
166172
167173 @property
168- def id (self ):
174+ def id (self ) -> str :
169175 return self ._id
170176
171177 @property
172- def name (self ):
178+ def name (self ) -> Optional [ str ] :
173179 """For API consistency - all other resource endpoints have a name attribute which is used to display what
174180 they are. Alias title as name to allow consistent handling of resources in the list sample."""
175181 return self ._title
176182
177183 @property
178- def status (self ):
184+ def status (self ) -> str :
179185 return self ._status
180186
181187 @property
182- def type (self ):
188+ def type (self ) -> str :
183189 return self ._type
184190
185191 @property
186- def created_at (self ):
192+ def created_at (self ) -> "datetime.datetime" :
187193 return self ._created_at
188194
189195 @property
190- def started_at (self ):
196+ def started_at (self ) -> Optional [ "datetime.datetime" ] :
191197 return self ._started_at
192198
193199 @property
194- def ended_at (self ):
200+ def ended_at (self ) -> Optional [ "datetime.datetime" ] :
195201 return self ._ended_at
196202
197203 @property
198- def title (self ):
204+ def title (self ) -> Optional [ str ] :
199205 return self ._title
200206
201207 @property
202- def subtitle (self ):
208+ def subtitle (self ) -> Optional [ str ] :
203209 return self ._subtitle
204210
205211 @property
206- def priority (self ):
212+ def priority (self ) -> int :
207213 return self ._priority
208214
209215 @classmethod
210- def from_response (cls , xml , ns ):
216+ def from_response (cls , xml , ns ) -> List [ "BackgroundJobItem" ] :
211217 parsed_response = ET .fromstring (xml )
212218 all_tasks_xml = parsed_response .findall (".//t:backgroundJob" , namespaces = ns )
213219 return [cls ._parse_element (x , ns ) for x in all_tasks_xml ]
0 commit comments