From d6cb1bf1d90b5617e87c3edda62ab5f2a7ff848d Mon Sep 17 00:00:00 2001 From: Newmu Date: Fri, 12 Sep 2014 13:12:25 -0400 Subject: [PATCH] Added api error handeling and updated docs --- indicoio/images/features.py | 14 ++++++++++---- indicoio/images/fer.py | 6 +++++- indicoio/text/lang.py | 6 +++++- indicoio/text/sentiment.py | 18 +++++++++++++----- indicoio/utils/__init__.py | 2 ++ 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/indicoio/images/features.py b/indicoio/images/features.py index 83c95af..d6b049b 100644 --- a/indicoio/images/features.py +++ b/indicoio/images/features.py @@ -31,8 +31,11 @@ def facial_features(image): data_dict = json.dumps({"face": image}) response = requests.post("http://api.indico.io/facialfeatures", data=data_dict, headers=JSON_HEADERS) - response_dict = json.loads(response.content) - return response_dict['response'] + response_dict = response.json() + if 'response' not in response_dict: + raise ValueError(response_dict.values()[0]) + else: + return response_dict['response'] def image_features(image): """ @@ -67,5 +70,8 @@ def image_features(image): image = image_preprocess(image) data_dict = json.dumps({"image": image}) response = requests.post("http://api.indico.io/imagefeatures", data=data_dict, headers=JSON_HEADERS) - response_dict = json.loads(response.content) - return response_dict['Features'] \ No newline at end of file + response_dict = response.json() + if 'Features' not in response_dict: + raise ValueError(response_dict.values()[0]) + else: + return response_dict['Features'] \ No newline at end of file diff --git a/indicoio/images/fer.py b/indicoio/images/fer.py index d9fcf94..f66e063 100644 --- a/indicoio/images/fer.py +++ b/indicoio/images/fer.py @@ -30,4 +30,8 @@ def fer(image): data_dict = json.dumps({"face": image}) response = requests.post("http://api.indico.io/fer", data=data_dict, headers=JSON_HEADERS) - return json.loads(response.content) + response_dict = response.json() + if len(response_dict) < 2: + raise ValueError(response_dict.values()[0]) + else: + return response_dict diff --git a/indicoio/text/lang.py b/indicoio/text/lang.py index fd56ac6..d4b6767 100644 --- a/indicoio/text/lang.py +++ b/indicoio/text/lang.py @@ -28,4 +28,8 @@ def language(text): data_dict = json.dumps({'text': text}) response = requests.post("http://api.indico.io/language", data=data_dict, headers=JSON_HEADERS) - return json.loads(response.content) \ No newline at end of file + response_dict = response.json() + if len(response_dict) < 2: + raise ValueError(response_dict.values()[0]) + else: + return response_dict \ No newline at end of file diff --git a/indicoio/text/sentiment.py b/indicoio/text/sentiment.py index 8e7f004..ba5e8fe 100644 --- a/indicoio/text/sentiment.py +++ b/indicoio/text/sentiment.py @@ -32,13 +32,17 @@ def political(text): data_dict = json.dumps({'text': text}) response = requests.post("http://api.indico.io/political", data=data_dict, headers=JSON_HEADERS) - return json.loads(response.content) + response_dict = response.json() + if len(response_dict) < 2: + raise ValueError(response_dict.values()[0]) + else: + return response_dict def posneg(text): """ Given input text, returns a scalar estimate of the sentiment of that text. Values are roughly in the range 0 to 1 with 0.5 indicating neutral sentiment. - Likewise, 0 would suggest very negative sentiment and 1 would suggest very positive sentiment. + For reference, 0 suggests very negative sentiment and 1 suggests very positive sentiment. Example usage: @@ -48,13 +52,17 @@ def posneg(text): >>> text = 'Thanks everyone for the birthday wishes!! It was a crazy few days ><' >>> sentiment = sentiment(text) >>> sentiment - {u'Sentiment': 0.6946439339979863} + 0.6946439339979863 :param text: The text to be analyzed. :type text: str or unicode - :rtype: Dictionary containing Sentiment key with a float value + :rtype: Float """ data_dict = json.dumps({'text': text}) response = requests.post("http://api.indico.io/sentiment", data=data_dict, headers=JSON_HEADERS) - return json.loads(response.content) + response_dict = response.json() + if 'Sentiment' not in response_dict: + raise ValueError(response_dict.values()[0]) + else: + return response_dict['Sentiment'] diff --git a/indicoio/utils/__init__.py b/indicoio/utils/__init__.py index cd39b3d..12c83ab 100644 --- a/indicoio/utils/__init__.py +++ b/indicoio/utils/__init__.py @@ -93,6 +93,8 @@ def image_preprocess(image): """ if isinstance(image,list): image = np.asarray(image) + if type(image).__module__ != np.__name__: + raise ValueError('Image was not of type numpy.ndarray or list.') if image.max() > 1: image = image/255. if len(image.shape) == 2: