Skip to content

Commit accb19d

Browse files
feature: adding explainability boolean to the various job submission methods (#15)
Co-authored-by: Douglas Holman <[email protected]>
1 parent f09caa2 commit accb19d

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

modzy/jobs.py

+30-17
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
class Jobs:
1616
"""The `Jobs` object.
1717
18-
This object is used to retreive information about jobs from the API.
18+
This object is used to retrieve information about jobs from the API.
1919
2020
Note:
2121
This class should not be instantiated directly but rather accessed through the `jobs`
@@ -68,8 +68,8 @@ def get_history(self, user=None, access_key=None, start_date=None, end_date=None
6868
Args:
6969
user (Optional[str]): Name of the job submitter
7070
access_key (Optional[str]): Identifier of the access key to be assigned to the user
71-
start_date (Optional[datetime, str]): initial date to filter recods
72-
end_date (Optional[datetime, str]): final date to filter recods
71+
start_date (Optional[datetime, str]): initial date to filter records
72+
end_date (Optional[datetime, str]): final date to filter records
7373
model (Optional[str]): Model name or version identifier
7474
status (Optional[str]): Status of the jobs (all, pending, terminated)
7575
sort_by (Optional[str]): attribute name to sort results
@@ -183,13 +183,14 @@ def block_until_complete(self, job, timeout=60, poll_interval=5):
183183
raise Timeout('timed out before completion')
184184
# TODO: should probably ramp up poll_interval as wait time increases
185185

186-
def submit_text(self, model, version, source, source_name='job'):
186+
def submit_text(self, model, version, source, explain=False, source_name='job'):
187187
"""Submits text data for a single source `Job`.
188188
189189
Args:
190190
model (Union[str, Model]): The model identifier or a `Model` instance.
191191
version (str): The model version string.
192192
source (dict): A mapping of model input filename to text string.
193+
explain (bool): indicates if you desire an explainable result for your model.`
193194
source_name (Optional[str]): The source name. Defaults to 'job'.
194195
195196
Returns:
@@ -209,16 +210,17 @@ def submit_text(self, model, version, source, source_name='job'):
209210
})
210211
"""
211212
sources = {source_name: source}
212-
return self.submit_text_bulk(model, version, sources)
213+
return self.submit_text_bulk(model, version, sources, explain)
213214

214-
def submit_text_bulk(self, model, version, sources):
215+
def submit_text_bulk(self, model, version, sources, explain=False):
215216
"""Submits text data for a multiple source `Job`.
216217
217218
Args:
218219
model (Union[str, Model]): The model identifier or a `Model` instance.
219220
version (str): The model version string.
220221
sources (dict): A mapping of source names to text sources. Each source should be a
221222
mapping of model input filename to text string.
223+
explain (bool): indicates if you desire an explainable result for your model.`
222224
223225
Returns:
224226
Job: The submitted `Job` instance.
@@ -251,6 +253,7 @@ def submit_text_bulk(self, model, version, sources):
251253
"identifier": identifier,
252254
"version": version
253255
},
256+
"explain": explain,
254257
"input": {
255258
"type": "text",
256259
"sources": sources
@@ -260,13 +263,14 @@ def submit_text_bulk(self, model, version, sources):
260263
response = self._api_client.http.post(self._base_route, body)
261264
return Job(response, self._api_client)
262265

263-
def submit_bytes(self, model, version, source, source_name='job'):
266+
def submit_bytes(self, model, version, source, explain=False, source_name='job'):
264267
"""Submits bytes-like data for a single source `Job`.
265268
266269
Args:
267270
model (Union[str, Model]): The model identifier or a `Model` instance.
268271
version (str): The model version string.
269272
source (dict): A mapping of model input filename to bytes-like object.
273+
explain (bool): indicates if you desire an explainable result for your model.`
270274
source_name (Optional[str]): The source name. Defaults to 'job'.
271275
272276
Returns:
@@ -286,16 +290,17 @@ def submit_bytes(self, model, version, source, source_name='job'):
286290
})
287291
"""
288292
sources = {source_name: source}
289-
return self.submit_bytes_bulk(model, version, sources)
293+
return self.submit_bytes_bulk(model, version, sources, explain)
290294

291-
def submit_bytes_bulk(self, model, version, sources):
295+
def submit_bytes_bulk(self, model, version, sources, explain=False):
292296
"""Submits bytes-like data for a multiple source `Job`.
293297
294298
Args:
295299
model (Union[str, Model]): The model identifier or a `Model` instance.
296300
version (str): The model version string.
297301
sources (dict): A mapping of source names to text sources. Each source should be a
298302
mapping of model input filename to bytes-like object.
303+
explain (bool): indicates if you desire an explainable result for your model.`
299304
300305
Returns:
301306
Job: The submitted `Job` instance.
@@ -334,6 +339,7 @@ def submit_bytes_bulk(self, model, version, sources):
334339
"identifier": identifier,
335340
"version": version
336341
},
342+
"explain": explain,
337343
"input": {
338344
"type": "embedded",
339345
"sources": sources
@@ -343,13 +349,14 @@ def submit_bytes_bulk(self, model, version, sources):
343349
response = self._api_client.http.post(self._base_route, body)
344350
return Job(response, self._api_client)
345351

346-
def submit_files(self, model, version, source, source_name='job'):
352+
def submit_files(self, model, version, source, explain=False, source_name='job'):
347353
"""Submits filepath or file-like data for a single source `Job`.
348354
349355
Args:
350356
model (Union[str, Model]): The model identifier or a `Model` instance.
351357
version (str): The model version string.
352358
source (dict): A mapping of model input filename to filepath or file-like object.
359+
explain (bool): indicates if you desire an explainable result for your model.`
353360
source_name (Optional[str]): The source name. Defaults to 'job'.
354361
355362
Returns:
@@ -371,16 +378,17 @@ def submit_files(self, model, version, source, source_name='job'):
371378
})
372379
"""
373380
sources = {source_name: source}
374-
return self.submit_files_bulk(model, version, sources)
381+
return self.submit_files_bulk(model, version, sources, explain)
375382

376-
def submit_files_bulk(self, model, version, sources):
383+
def submit_files_bulk(self, model, version, sources, explain=False):
377384
"""Submits filepath or file-like data data for a multiple source `Job`.
378385
379386
Args:
380387
model (Union[str, Model]): The model identifier or a `Model` instance.
381388
version (str): The model version string.
382389
sources (dict): A mapping of source names to text sources. Each source should be a
383390
mapping of model input filename to filepath or file-like object.
391+
explain (bool): indicates if you desire an explainable result for your model.`
384392
385393
Returns:
386394
Job: The submitted `Job` instance.
@@ -411,9 +419,9 @@ def submit_files_bulk(self, model, version, sources):
411419
}
412420
for source, inputs in sources.items()
413421
}
414-
return self.submit_bytes_bulk(model, version, sources)
422+
return self.submit_bytes_bulk(model, version, sources, explain)
415423

416-
def submit_aws_s3(self, model, version, source, access_key_id, secret_access_key, region, source_name='job'):
424+
def submit_aws_s3(self, model, version, source, access_key_id, secret_access_key, region, explain=False, source_name='job'):
417425
"""Submits AwS S3 hosted data for a single source `Job`.
418426
419427
Args:
@@ -423,6 +431,7 @@ def submit_aws_s3(self, model, version, source, access_key_id, secret_access_key
423431
access_key_id (str): The AWS Access Key ID.
424432
secret_access_key (str): The AWS Secret Access Key.
425433
region (str): The AWS Region.
434+
explain (bool): indicates if you desire an explainable result for your model.`
426435
source_name (Optional[str]): The source name. Defaults to 'job'.
427436
428437
Returns:
@@ -452,9 +461,9 @@ def submit_aws_s3(self, model, version, source, access_key_id, secret_access_key
452461
)
453462
"""
454463
sources = {source_name: source}
455-
return self.submit_aws_s3_bulk(model, version, sources, access_key_id, secret_access_key, region)
464+
return self.submit_aws_s3_bulk(model, version, sources, access_key_id, secret_access_key, region, explain)
456465

457-
def submit_aws_s3_bulk(self, model, version, sources, access_key_id, secret_access_key, region):
466+
def submit_aws_s3_bulk(self, model, version, sources, access_key_id, secret_access_key, region, explain=False):
458467
"""Submits AwS S3 hosted data for a multiple source `Job`.
459468
460469
Args:
@@ -465,6 +474,7 @@ def submit_aws_s3_bulk(self, model, version, sources, access_key_id, secret_acce
465474
access_key_id (str): The AWS Access Key ID.
466475
secret_access_key (str): The AWS Secret Access Key.
467476
region (str): The AWS Region.
477+
explain (bool): indicates if you desire an explainable result for your model.`
468478
469479
Returns:
470480
Job: The submitted `Job` instance.
@@ -515,6 +525,7 @@ def submit_aws_s3_bulk(self, model, version, sources, access_key_id, secret_acce
515525
"identifier": identifier,
516526
"version": version
517527
},
528+
"explain": explain,
518529
"input": {
519530
"type": "aws-s3",
520531
"accessKeyID": access_key_id,
@@ -527,7 +538,7 @@ def submit_aws_s3_bulk(self, model, version, sources, access_key_id, secret_acce
527538
response = self._api_client.http.post(self._base_route, body)
528539
return Job(response, self._api_client)
529540

530-
def submit_jdbc(self, model, version, url, username, password, driver, query):
541+
def submit_jdbc(self, model, version, url, username, password, driver, query, explain=False):
531542
"""Submits jdbc query as input for a `Job`, each row is interpreted as a input.
532543
Modzy will create a data source with the parameters provided and will execute
533544
the query provided, then will match the inputs defined of the model with the columns
@@ -541,6 +552,7 @@ def submit_jdbc(self, model, version, url, username, password, driver, query):
541552
password (str): the password to access the database
542553
driver (str): full driver class name
543554
query (str): the query to execute
555+
explain (bool): indicates if you desire an explainable result for your model.`
544556
545557
Returns:
546558
Job: The submitted `Job` instance.
@@ -577,6 +589,7 @@ def submit_jdbc(self, model, version, url, username, password, driver, query):
577589
"identifier": identifier,
578590
"version": version
579591
},
592+
"explain": explain,
580593
"input": {
581594
"type": "jdbc",
582595
"url": url,

0 commit comments

Comments
 (0)