From 568cb2a677563006bdce85a04519c12184575ba2 Mon Sep 17 00:00:00 2001 From: Garrett May Date: Tue, 23 May 2017 10:44:31 -0400 Subject: [PATCH 1/5] list models methods and tests --- test/test_natural_language_understanding.py | 25 +++++++++++++++++++ .../natural_language_understanding_v1.py | 21 ++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/test/test_natural_language_understanding.py b/test/test_natural_language_understanding.py index 6c720ecbe..a81eaf168 100644 --- a/test/test_natural_language_understanding.py +++ b/test/test_natural_language_understanding.py @@ -122,3 +122,28 @@ def test_url_analyze(self): features.Emotion(document=False)], url="http://cnn.com", xpath="/bogus/xpath", language="en") assert len(responses.calls) == 1 + + @responses.activate + def test_listModels(self): + nlu_url = "http://bogus.com/v1/models" + responses.add(responses.GET, nlu_url, status=200, body="{\"resulting_key\": true}", + content_type='application/json') + nlu = NaturalLanguageUnderstandingV1(version='2016-01-23', + url='http://bogus.com', + username='username', + password='password') + nlu.listModels(); + assert len(responses.calls) == 1 + + @responses.activate + def test_deleteModel(self): + model_id = "invalid_model_id" + nlu_url = "http://bogus.com/v1/models/" + model_id + responses.add(responses.DELETE, nlu_url, status=200, + content_type='application/json') + nlu = NaturalLanguageUnderstandingV1(version='2016-01-23', + url='http://bogus.com', + username='username', + password='password') + nlu.deleteModel(model_id); + assert len(responses.calls) == 1 diff --git a/watson_developer_cloud/natural_language_understanding_v1.py b/watson_developer_cloud/natural_language_understanding_v1.py index c30de5c8f..e8afabe5b 100644 --- a/watson_developer_cloud/natural_language_understanding_v1.py +++ b/watson_developer_cloud/natural_language_understanding_v1.py @@ -82,3 +82,24 @@ def analyze(self, features, text=None, url=None, html=None, headers={'content-type': 'application/json'}, json=body, accept_json=True) + def listModels(self): + """ + Lists the custom models available for your service instance + :return: dict of available custom models + """ + return self.request(method='GET', url='/v1/models', + params={"version": self.version}, + accept_json=True) + + def deleteModel(self, model_id=None): + """ + Deletes a custom model + :param model_id: The ID of the model to delete + :return: dict of analyzed text + """ + if model_id is None: + raise ValueError("Missing parameter 'model_id'") + + return self.request(method='DELETE', url='/v1/models/'+model_id, + params={"version": self.version}, + accept_json=True) From ac1a124bf34b11146162b9ae98d48897779c318c Mon Sep 17 00:00:00 2001 From: Garrett May Date: Tue, 23 May 2017 11:00:24 -0400 Subject: [PATCH 2/5] Update natural_language_understanding_v1.py --- watson_developer_cloud/natural_language_understanding_v1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/watson_developer_cloud/natural_language_understanding_v1.py b/watson_developer_cloud/natural_language_understanding_v1.py index e8afabe5b..67b1f3e3c 100644 --- a/watson_developer_cloud/natural_language_understanding_v1.py +++ b/watson_developer_cloud/natural_language_understanding_v1.py @@ -95,7 +95,7 @@ def deleteModel(self, model_id=None): """ Deletes a custom model :param model_id: The ID of the model to delete - :return: dict of analyzed text + :return: dict with status of model deletion """ if model_id is None: raise ValueError("Missing parameter 'model_id'") From 32c544f2243ae1539f5f0d481aa3a256ebc0fc24 Mon Sep 17 00:00:00 2001 From: Garrett May Date: Tue, 23 May 2017 13:19:59 -0400 Subject: [PATCH 3/5] Update natural_language_understanding_v1.py --- watson_developer_cloud/natural_language_understanding_v1.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/watson_developer_cloud/natural_language_understanding_v1.py b/watson_developer_cloud/natural_language_understanding_v1.py index 67b1f3e3c..14c33257a 100644 --- a/watson_developer_cloud/natural_language_understanding_v1.py +++ b/watson_developer_cloud/natural_language_understanding_v1.py @@ -91,15 +91,13 @@ def listModels(self): params={"version": self.version}, accept_json=True) - def deleteModel(self, model_id=None): + def deleteModel(self, model_id): """ Deletes a custom model :param model_id: The ID of the model to delete :return: dict with status of model deletion """ - if model_id is None: - raise ValueError("Missing parameter 'model_id'") - return self.request(method='DELETE', url='/v1/models/'+model_id, + return self.request(method='DELETE', url='/v1/models/{0}'.format(model_id), params={"version": self.version}, accept_json=True) From 7925eaf32a2cc5d843a92130e0ff862880cc66a4 Mon Sep 17 00:00:00 2001 From: Jeffrey Stylos Date: Tue, 23 May 2017 13:52:20 -0400 Subject: [PATCH 4/5] renaming methods to use snake case, fixing test case --- test/test_natural_language_understanding.py | 13 +++++++------ .../natural_language_understanding_v1.py | 8 +++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/test/test_natural_language_understanding.py b/test/test_natural_language_understanding.py index a81eaf168..762f1a903 100644 --- a/test/test_natural_language_understanding.py +++ b/test/test_natural_language_understanding.py @@ -124,26 +124,27 @@ def test_url_analyze(self): assert len(responses.calls) == 1 @responses.activate - def test_listModels(self): + def test_list_models(self): nlu_url = "http://bogus.com/v1/models" - responses.add(responses.GET, nlu_url, status=200, body="{\"resulting_key\": true}", + responses.add(responses.GET, nlu_url, status=200, + body="{\"resulting_key\": true}", content_type='application/json') nlu = NaturalLanguageUnderstandingV1(version='2016-01-23', url='http://bogus.com', username='username', password='password') - nlu.listModels(); + nlu.list_models() assert len(responses.calls) == 1 @responses.activate - def test_deleteModel(self): + def test_delete_model(self): model_id = "invalid_model_id" nlu_url = "http://bogus.com/v1/models/" + model_id responses.add(responses.DELETE, nlu_url, status=200, - content_type='application/json') + body="{}", content_type='application/json') nlu = NaturalLanguageUnderstandingV1(version='2016-01-23', url='http://bogus.com', username='username', password='password') - nlu.deleteModel(model_id); + nlu.delete_model(model_id) assert len(responses.calls) == 1 diff --git a/watson_developer_cloud/natural_language_understanding_v1.py b/watson_developer_cloud/natural_language_understanding_v1.py index 14c33257a..0d4c0b9e5 100644 --- a/watson_developer_cloud/natural_language_understanding_v1.py +++ b/watson_developer_cloud/natural_language_understanding_v1.py @@ -82,7 +82,8 @@ def analyze(self, features, text=None, url=None, html=None, headers={'content-type': 'application/json'}, json=body, accept_json=True) - def listModels(self): + + def list_models(self): """ Lists the custom models available for your service instance :return: dict of available custom models @@ -91,13 +92,14 @@ def listModels(self): params={"version": self.version}, accept_json=True) - def deleteModel(self, model_id): + def delete_model(self, model_id): """ Deletes a custom model :param model_id: The ID of the model to delete :return: dict with status of model deletion """ - return self.request(method='DELETE', url='/v1/models/{0}'.format(model_id), + return self.request(method='DELETE', + url='/v1/models/{0}'.format(model_id), params={"version": self.version}, accept_json=True) From a3a52ca17dfcbf83934a679bf4a21ed0739b947e Mon Sep 17 00:00:00 2001 From: Jeffrey Stylos Date: Tue, 23 May 2017 14:04:07 -0400 Subject: [PATCH 5/5] adding changelog --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ed625919..2a894d658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Change Log ========== +## Version unreleased + +_2017-??-??_ + +* Added: Natural Language Understanding model management APIs + ## Version 0.26.0 _2017-05-16_ @@ -9,7 +15,6 @@ _2017-05-16_ * Added: Tone Analyzer `tone_chat` * Fixed: Unicode issues in Python 3 - ## Version 0.25.2 _2017-03-21_