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
37
+ self ._id : Optional [ str ] = None
38
+ self ._initial_tags : Set = set ()
39
+ self ._project_name : Optional [ str ] = None
33
40
self ._updated_at = None
34
41
self ._use_remote_query_agent = None
35
42
self ._webpage_url = None
36
43
self .description = None
37
44
self .name = name
38
- self .owner_id = None
45
+ self .owner_id : Optional [ str ] = None
39
46
self .project_id = project_id
40
- self .tags = set ()
47
+ self .tags : Set [ str ] = set ()
41
48
42
49
self ._permissions = None
43
50
self ._data_quality_warnings = None
44
51
52
+ return None
53
+
45
54
@property
46
- def ask_data_enablement (self ):
55
+ def ask_data_enablement (self ) -> Optional [ "DatasourceItem.AskDataEnablement" ] :
47
56
return self ._ask_data_enablement
48
57
49
58
@ask_data_enablement .setter
50
59
@property_is_enum (AskDataEnablement )
51
- def ask_data_enablement (self , value ):
60
+ def ask_data_enablement (self , value : Optional [ "DatasourceItem.AskDataEnablement" ] ):
52
61
self ._ask_data_enablement = value
53
62
54
63
@property
55
- def connections (self ):
64
+ def connections (self ) -> Optional [ List [ "ConnectionItem" ]] :
56
65
if self ._connections is None :
57
66
error = "Datasource item must be populated with connections first."
58
67
raise UnpopulatedPropertyError (error )
59
68
return self ._connections ()
60
69
61
70
@property
62
- def permissions (self ):
71
+ def permissions (self ) -> Optional [ List [ "PermissionsRule" ]] :
63
72
if self ._permissions is None :
64
73
error = "Project item must be populated with permissions first."
65
74
raise UnpopulatedPropertyError (error )
66
75
return self ._permissions ()
67
76
68
77
@property
69
- def content_url (self ):
78
+ def content_url (self ) -> Optional [ str ] :
70
79
return self ._content_url
71
80
72
81
@property
73
- def created_at (self ):
82
+ def created_at (self ) -> Optional [ "datetime.datetime" ] :
74
83
return self ._created_at
75
84
76
85
@property
77
- def certified (self ):
86
+ def certified (self ) -> Optional [ bool ] :
78
87
return self ._certified
79
88
80
89
@certified .setter
81
90
@property_not_nullable
82
91
@property_is_boolean
83
- def certified (self , value ):
92
+ def certified (self , value : Optional [ bool ] ):
84
93
self ._certified = value
85
94
86
95
@property
87
- def certification_note (self ):
96
+ def certification_note (self ) -> Optional [ str ] :
88
97
return self ._certification_note
89
98
90
99
@certification_note .setter
91
- def certification_note (self , value ):
100
+ def certification_note (self , value : Optional [ str ] ):
92
101
self ._certification_note = value
93
102
94
103
@property
@@ -97,7 +106,7 @@ def encrypt_extracts(self):
97
106
98
107
@encrypt_extracts .setter
99
108
@property_is_boolean
100
- def encrypt_extracts (self , value ):
109
+ def encrypt_extracts (self , value : Optional [ bool ] ):
101
110
self ._encrypt_extracts = value
102
111
103
112
@property
@@ -108,53 +117,53 @@ def dqws(self):
108
117
return self ._data_quality_warnings ()
109
118
110
119
@property
111
- def has_extracts (self ):
120
+ def has_extracts (self ) -> Optional [ bool ] :
112
121
return self ._has_extracts
113
122
114
123
@property
115
- def id (self ):
124
+ def id (self ) -> Optional [ str ] :
116
125
return self ._id
117
126
118
127
@property
119
- def project_id (self ):
128
+ def project_id (self ) -> str :
120
129
return self ._project_id
121
130
122
131
@project_id .setter
123
132
@property_not_nullable
124
- def project_id (self , value ):
133
+ def project_id (self , value : str ):
125
134
self ._project_id = value
126
135
127
136
@property
128
- def project_name (self ):
137
+ def project_name (self ) -> Optional [ str ] :
129
138
return self ._project_name
130
139
131
140
@property
132
- def datasource_type (self ):
141
+ def datasource_type (self ) -> Optional [ str ] :
133
142
return self ._datasource_type
134
143
135
144
@property
136
- def description (self ):
145
+ def description (self ) -> Optional [ str ] :
137
146
return self ._description
138
147
139
148
@description .setter
140
- def description (self , value ):
149
+ def description (self , value : str ):
141
150
self ._description = value
142
151
143
152
@property
144
- def updated_at (self ):
153
+ def updated_at (self ) -> Optional [ "datetime.datetime" ] :
145
154
return self ._updated_at
146
155
147
156
@property
148
- def use_remote_query_agent (self ):
157
+ def use_remote_query_agent (self ) -> Optional [ bool ] :
149
158
return self ._use_remote_query_agent
150
159
151
160
@use_remote_query_agent .setter
152
161
@property_is_boolean
153
- def use_remote_query_agent (self , value ):
162
+ def use_remote_query_agent (self , value : bool ):
154
163
self ._use_remote_query_agent = value
155
164
156
165
@property
157
- def webpage_url (self ):
166
+ def webpage_url (self ) -> Optional [ str ] :
158
167
return self ._webpage_url
159
168
160
169
def _set_connections (self , connections ):
@@ -271,7 +280,7 @@ def _set_values(
271
280
self ._webpage_url = webpage_url
272
281
273
282
@classmethod
274
- def from_response (cls , resp , ns ) :
283
+ def from_response (cls , resp : str , ns : Dict ) -> List [ "DatasourceItem" ] :
275
284
all_datasource_items = list ()
276
285
parsed_response = ET .fromstring (resp )
277
286
all_datasource_xml = parsed_response .findall (".//t:datasource" , namespaces = ns )
@@ -322,16 +331,16 @@ def from_response(cls, resp, ns):
322
331
return all_datasource_items
323
332
324
333
@staticmethod
325
- def _parse_element (datasource_xml , ns ) :
326
- id_ = datasource_xml .get ('id' , None )
327
- name = datasource_xml .get (' name' , None )
328
- datasource_type = datasource_xml .get (' type' , None )
329
- description = datasource_xml .get (' description' , None )
330
- content_url = datasource_xml .get (' contentUrl' , None )
331
- created_at = parse_datetime (datasource_xml .get (' createdAt' , None ))
332
- updated_at = parse_datetime (datasource_xml .get (' updatedAt' , None ))
333
- certification_note = datasource_xml .get (' certificationNote' , None )
334
- certified = str (datasource_xml .get (' isCertified' , None )).lower () == ' true'
334
+ def _parse_element (datasource_xml : ET . Element , ns : Dict ) -> Tuple :
335
+ id_ = datasource_xml .get ("id" , None )
336
+ name = datasource_xml .get (" name" , None )
337
+ datasource_type = datasource_xml .get (" type" , None )
338
+ description = datasource_xml .get (" description" , None )
339
+ content_url = datasource_xml .get (" contentUrl" , None )
340
+ created_at = parse_datetime (datasource_xml .get (" createdAt" , None ))
341
+ updated_at = parse_datetime (datasource_xml .get (" updatedAt" , None ))
342
+ certification_note = datasource_xml .get (" certificationNote" , None )
343
+ certified = str (datasource_xml .get (" isCertified" , None )).lower () == " true"
335
344
certification_note = datasource_xml .get ("certificationNote" , None )
336
345
certified = str (datasource_xml .get ("isCertified" , None )).lower () == "true"
337
346
content_url = datasource_xml .get ("contentUrl" , None )
0 commit comments