Skip to content

Commit 25799f3

Browse files
committed
PENG-3689 - Introducing support for datasets functionality
1 parent 361cfd8 commit 25799f3

File tree

2 files changed

+43
-29
lines changed

2 files changed

+43
-29
lines changed

ns1/dataset.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,34 @@ def __repr__(self):
3030
self.__getitem__("recipient_emails"),
3131
)
3232

33-
def __getitem__(self, item):
33+
def __getitem__(self, item: str):
3434
if not self.data:
3535
raise DatasetException("dataset not loaded")
3636
return self.data.get(item, None)
3737

3838
def reload(self, callback=None, errback=None):
3939
"""
4040
Reload dataset data from the API.
41+
:param callback: function call back once the call has completed
42+
:param errback: function call back if the call fails
4143
"""
4244
return self.load(reload=True, callback=callback, errback=errback)
4345

44-
def load(self, id=None, callback=None, errback=None, reload=False):
46+
def load(self, id: str = None, callback=None, errback=None, reload=False):
4547
"""
4648
Load dataset data from the API.
4749
:param str id: dataset id to load
50+
:param callback: function call back once the call has completed
51+
:param bool reload: whether to reuse the instance data instead of fetching it from the server
4852
"""
4953
if not reload and self.data:
50-
raise DatasetException("dataset already loaded")
54+
return self.data
5155
if id is None and self.data:
5256
id = self.__getitem__("id")
5357
if id is None:
5458
raise DatasetException("no dataset id: did you mean to create?")
5559

56-
def success(result, *args):
60+
def success(result: dict, *args):
5761
self.data = result
5862
if callback:
5963
return callback(self)
@@ -62,7 +66,7 @@ def success(result, *args):
6266

6367
return self._rest.retrieve(id, callback=success, errback=errback)
6468

65-
def loadFromDict(self, dt):
69+
def loadFromDict(self, dt: dict):
6670
"""
6771
Load dataset data from a dictionary.
6872
:param dict dt: dictionary containing *at least* either an id or domain/path/target
@@ -83,18 +87,20 @@ def loadFromDict(self, dt):
8387
def delete(self, callback=None, errback=None):
8488
"""
8589
Delete the dataset.
90+
:param callback: function call back once the call has completed
91+
:param errback: function call back if the call fails
8692
"""
8793
id = self.__getitem__("id")
8894
return self._rest.delete(id, callback=callback, errback=errback)
8995

9096
def create(
9197
self,
92-
name,
93-
datatype,
94-
repeat,
95-
timeframe,
96-
export_type,
97-
recipient_emails,
98+
name: str,
99+
datatype: dict,
100+
repeat: dict,
101+
timeframe: dict,
102+
export_type: str,
103+
recipient_emails: list,
98104
callback=None,
99105
errback=None,
100106
**kwargs
@@ -109,6 +115,8 @@ def create(
109115
:param str timeframe: timeframe settings for the data to be pulled
110116
:param str export_type: output format of the report
111117
:param str recipient_emails: list of user emails that will receive a copy of the report
118+
:param callback: function call back once the call has completed
119+
:param errback: function call back if the call fails
112120
"""
113121
if self.data:
114122
raise DatasetException("dataset already loaded")
@@ -120,14 +128,16 @@ def create(
120128
timeframe,
121129
export_type,
122130
recipient_emails,
123-
callback=None,
124-
errback=None,
131+
callback=callback,
132+
errback=errback,
125133
**kwargs
126134
)
127135

128136
def listDatasets(self, callback=None, errback=None):
129137
"""
130138
Lists all datasets currently configured.
139+
:param callback: function call back once the call has completed
140+
:param errback: function call back if the call fails
131141
:return: a list of Dataset objects
132142
"""
133143

@@ -142,9 +152,13 @@ def success(result, *args):
142152

143153
return Datasets(self.config).list(callback=success, errback=errback)
144154

145-
def retrieveReport(self, rp_id, dt_id=None, callback=None, errback=None):
155+
def retrieveReport(self, rp_id: str, dt_id: str = None, callback=None, errback=None):
146156
"""
147157
Retrieves a generated report given a dataset id and a report id
158+
:param str rp_id: the id of the generated report to download
159+
:param str dt_id: the id of the dataset that the above report belongs to
160+
:param callback: function call back once the call has completed
161+
:param errback: function call back if the call fails
148162
:return: generated report
149163
"""
150164

ns1/rest/datasets.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ class Datasets(resource.BaseResource):
1515

1616
def _buildBody(
1717
self,
18-
name,
19-
datatype,
20-
repeat,
21-
timeframe,
22-
export_type,
23-
recipient_emails,
18+
name: str,
19+
datatype: dict,
20+
repeat: dict,
21+
timeframe: dict,
22+
export_type: str,
23+
recipient_emails: list,
2424
**kwargs
2525
):
2626
body = {
@@ -36,12 +36,12 @@ def _buildBody(
3636

3737
def create(
3838
self,
39-
name,
40-
datatype,
41-
repeat,
42-
timeframe,
43-
export_type,
44-
recipient_emails,
39+
name: str,
40+
datatype: dict,
41+
repeat: dict,
42+
timeframe: dict,
43+
export_type: str,
44+
recipient_emails: list,
4545
callback=None,
4646
errback=None,
4747
**kwargs
@@ -63,7 +63,7 @@ def create(
6363
errback=errback,
6464
)
6565

66-
def delete(self, dtId, callback=None, errback=None):
66+
def delete(self, dtId: str, callback=None, errback=None):
6767
return self._make_request(
6868
"DELETE",
6969
"%s/%s" % (self.ROOT, dtId),
@@ -79,15 +79,15 @@ def list(self, callback=None, errback=None):
7979
errback=errback,
8080
)
8181

82-
def retrieve(self, dtId, callback=None, errback=None):
82+
def retrieve(self, dtId: str, callback=None, errback=None):
8383
return self._make_request(
8484
"GET",
8585
"%s/%s" % (self.ROOT, dtId),
8686
callback=callback,
8787
errback=errback,
8888
)
8989

90-
def retrieveReport(self, dtId, rpId, callback=None, errback=None):
90+
def retrieveReport(self, dtId: str, rpId: str, callback=None, errback=None):
9191
return self._make_request(
9292
"GET",
9393
"%s/%s/reports/%s" % (self.ROOT, dtId, rpId),

0 commit comments

Comments
 (0)