9
9
from ..datetime_helpers import parse_datetime
10
10
import copy
11
11
12
+ from typing import Dict , List , Optional , Set , Tuple , TYPE_CHECKING , Union
13
+
14
+ if TYPE_CHECKING :
15
+ from .permissions_item import PermissionsRule
16
+ from .connection_item import ConnectionItem
17
+ import datetime
18
+
12
19
13
20
class DatasourceItem (object ):
14
21
class AskDataEnablement :
15
22
Enabled = "Enabled"
16
23
Disabled = "Disabled"
17
24
SiteDefault = "SiteDefault"
18
25
19
- def __init__ (self , project_id , name = None ):
26
+ def __init__ (self , project_id : str , name : str = None ) -> None :
20
27
self ._ask_data_enablement = None
21
28
self ._certified = None
22
29
self ._certification_note = None
23
30
self ._connections = None
24
- self ._content_url = None
31
+ self ._content_url : Optional [ str ] = None
25
32
self ._created_at = None
26
33
self ._datasource_type = None
27
34
self ._description = None
28
35
self ._encrypt_extracts = None
29
36
self ._has_extracts = None
30
- self ._id = None
31
- self ._initial_tags = set ()
32
- self ._project_name = None
33
- self ._revisions = None
37
+ self ._id : Optional [ str ] = None
38
+ self ._initial_tags : Set = set ()
39
+ self ._project_name : Optional [ str ] = None
40
+ self ._revisions : List = None
34
41
self ._updated_at = None
35
42
self ._use_remote_query_agent = None
36
43
self ._webpage_url = None
37
44
self .description = None
38
45
self .name = name
39
- self .owner_id = None
46
+ self .owner_id : Optional [ str ] = None
40
47
self .project_id = project_id
41
- self .tags = set ()
48
+ self .tags : Set [ str ] = set ()
42
49
43
50
self ._permissions = None
44
51
self ._data_quality_warnings = None
45
52
53
+ return None
54
+
46
55
@property
47
- def ask_data_enablement (self ):
56
+ def ask_data_enablement (self ) -> Optional [ "DatasourceItem.AskDataEnablement" ] :
48
57
return self ._ask_data_enablement
49
58
50
59
@ask_data_enablement .setter
51
60
@property_is_enum (AskDataEnablement )
52
- def ask_data_enablement (self , value ):
61
+ def ask_data_enablement (self , value : Optional [ "DatasourceItem.AskDataEnablement" ] ):
53
62
self ._ask_data_enablement = value
54
63
55
64
@property
56
- def connections (self ):
65
+ def connections (self ) -> Optional [ List [ "ConnectionItem" ]] :
57
66
if self ._connections is None :
58
67
error = "Datasource item must be populated with connections first."
59
68
raise UnpopulatedPropertyError (error )
60
69
return self ._connections ()
61
70
62
71
@property
63
- def permissions (self ):
72
+ def permissions (self ) -> Optional [ List [ "PermissionsRule" ]] :
64
73
if self ._permissions is None :
65
74
error = "Project item must be populated with permissions first."
66
75
raise UnpopulatedPropertyError (error )
67
76
return self ._permissions ()
68
77
69
78
@property
70
- def content_url (self ):
79
+ def content_url (self ) -> Optional [ str ] :
71
80
return self ._content_url
72
81
73
82
@property
74
- def created_at (self ):
83
+ def created_at (self ) -> Optional [ "datetime.datetime" ] :
75
84
return self ._created_at
76
85
77
86
@property
78
- def certified (self ):
87
+ def certified (self ) -> Optional [ bool ] :
79
88
return self ._certified
80
89
81
90
@certified .setter
82
91
@property_not_nullable
83
92
@property_is_boolean
84
- def certified (self , value ):
93
+ def certified (self , value : Optional [ bool ] ):
85
94
self ._certified = value
86
95
87
96
@property
88
- def certification_note (self ):
97
+ def certification_note (self ) -> Optional [ str ] :
89
98
return self ._certification_note
90
99
91
100
@certification_note .setter
92
- def certification_note (self , value ):
101
+ def certification_note (self , value : Optional [ str ] ):
93
102
self ._certification_note = value
94
103
95
104
@property
@@ -98,7 +107,7 @@ def encrypt_extracts(self):
98
107
99
108
@encrypt_extracts .setter
100
109
@property_is_boolean
101
- def encrypt_extracts (self , value ):
110
+ def encrypt_extracts (self , value : Optional [ bool ] ):
102
111
self ._encrypt_extracts = value
103
112
104
113
@property
@@ -109,53 +118,53 @@ def dqws(self):
109
118
return self ._data_quality_warnings ()
110
119
111
120
@property
112
- def has_extracts (self ):
121
+ def has_extracts (self ) -> Optional [ bool ] :
113
122
return self ._has_extracts
114
123
115
124
@property
116
- def id (self ):
125
+ def id (self ) -> Optional [ str ] :
117
126
return self ._id
118
127
119
128
@property
120
- def project_id (self ):
129
+ def project_id (self ) -> str :
121
130
return self ._project_id
122
131
123
132
@project_id .setter
124
133
@property_not_nullable
125
- def project_id (self , value ):
134
+ def project_id (self , value : str ):
126
135
self ._project_id = value
127
136
128
137
@property
129
- def project_name (self ):
138
+ def project_name (self ) -> Optional [ str ] :
130
139
return self ._project_name
131
140
132
141
@property
133
- def datasource_type (self ):
142
+ def datasource_type (self ) -> Optional [ str ] :
134
143
return self ._datasource_type
135
144
136
145
@property
137
- def description (self ):
146
+ def description (self ) -> Optional [ str ] :
138
147
return self ._description
139
148
140
149
@description .setter
141
- def description (self , value ):
150
+ def description (self , value : str ):
142
151
self ._description = value
143
152
144
153
@property
145
- def updated_at (self ):
154
+ def updated_at (self ) -> Optional [ "datetime.datetime" ] :
146
155
return self ._updated_at
147
156
148
157
@property
149
- def use_remote_query_agent (self ):
158
+ def use_remote_query_agent (self ) -> Optional [ bool ] :
150
159
return self ._use_remote_query_agent
151
160
152
161
@use_remote_query_agent .setter
153
162
@property_is_boolean
154
- def use_remote_query_agent (self , value ):
163
+ def use_remote_query_agent (self , value : bool ):
155
164
self ._use_remote_query_agent = value
156
165
157
166
@property
158
- def webpage_url (self ):
167
+ def webpage_url (self ) -> Optional [ str ] :
159
168
return self ._webpage_url
160
169
161
170
@property
@@ -282,7 +291,7 @@ def _set_values(
282
291
self ._webpage_url = webpage_url
283
292
284
293
@classmethod
285
- def from_response (cls , resp , ns ) :
294
+ def from_response (cls , resp : str , ns : Dict ) -> List [ "DatasourceItem" ] :
286
295
all_datasource_items = list ()
287
296
parsed_response = ET .fromstring (resp )
288
297
all_datasource_xml = parsed_response .findall (".//t:datasource" , namespaces = ns )
@@ -333,16 +342,16 @@ def from_response(cls, resp, ns):
333
342
return all_datasource_items
334
343
335
344
@staticmethod
336
- def _parse_element (datasource_xml , ns ) :
337
- id_ = datasource_xml .get ('id' , None )
338
- name = datasource_xml .get (' name' , None )
339
- datasource_type = datasource_xml .get (' type' , None )
340
- description = datasource_xml .get (' description' , None )
341
- content_url = datasource_xml .get (' contentUrl' , None )
342
- created_at = parse_datetime (datasource_xml .get (' createdAt' , None ))
343
- updated_at = parse_datetime (datasource_xml .get (' updatedAt' , None ))
344
- certification_note = datasource_xml .get (' certificationNote' , None )
345
- certified = str (datasource_xml .get (' isCertified' , None )).lower () == ' true'
345
+ def _parse_element (datasource_xml : ET . Element , ns : Dict ) -> Tuple :
346
+ id_ = datasource_xml .get ("id" , None )
347
+ name = datasource_xml .get (" name" , None )
348
+ datasource_type = datasource_xml .get (" type" , None )
349
+ description = datasource_xml .get (" description" , None )
350
+ content_url = datasource_xml .get (" contentUrl" , None )
351
+ created_at = parse_datetime (datasource_xml .get (" createdAt" , None ))
352
+ updated_at = parse_datetime (datasource_xml .get (" updatedAt" , None ))
353
+ certification_note = datasource_xml .get (" certificationNote" , None )
354
+ certified = str (datasource_xml .get (" isCertified" , None )).lower () == " true"
346
355
certification_note = datasource_xml .get ("certificationNote" , None )
347
356
certified = str (datasource_xml .get ("isCertified" , None )).lower () == "true"
348
357
content_url = datasource_xml .get ("contentUrl" , None )
0 commit comments