mirror of
				https://github.com/gsi-upm/senpy
				synced 2025-11-04 01:08:16 +00:00 
			
		
		
		
	Fix POST. Closes senpy/senpy#56
This commit is contained in:
		@@ -69,7 +69,7 @@ def encoded_url(url=None, base=None):
 | 
			
		||||
        if request.method == 'GET':
 | 
			
		||||
            url = request.full_path[1:]  # Remove the first slash
 | 
			
		||||
        else:
 | 
			
		||||
            hash(frozenset(request.form.params().items()))
 | 
			
		||||
            hash(frozenset(request.parameters.items()))
 | 
			
		||||
            code = 'hash:{}'.format(hash)
 | 
			
		||||
 | 
			
		||||
    code = code or base64.urlsafe_b64encode(url.encode()).decode()
 | 
			
		||||
 
 | 
			
		||||
@@ -15,9 +15,12 @@ try:
 | 
			
		||||
    from gsitk.datasets.datasets import DatasetManager
 | 
			
		||||
    from gsitk.evaluation.evaluation import Evaluation as Eval
 | 
			
		||||
    from sklearn.pipeline import Pipeline
 | 
			
		||||
    GSITK_AVAILABLE = True
 | 
			
		||||
    import pkg_resources
 | 
			
		||||
    GSITK_VERSION = pkg_resources.get_distribution("gsitk").version.split()
 | 
			
		||||
    GSITK_AVAILABLE = GSITK_VERSION > (0, 1, 9, 1)  # Earlier versions have a bug
 | 
			
		||||
    modules = locals()
 | 
			
		||||
except ImportError:
 | 
			
		||||
    logger.warn(IMPORTMSG)
 | 
			
		||||
    logger.warning(IMPORTMSG)
 | 
			
		||||
    GSITK_AVAILABLE = False
 | 
			
		||||
    GSITK_VERSION = ()
 | 
			
		||||
    DatasetManager = Eval = Pipeline = raise_exception
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,20 @@ class BlueprintsTest(TestCase):
 | 
			
		||||
        logging.debug("Got response: %s", js)
 | 
			
		||||
        assert "@context" in js
 | 
			
		||||
        assert "entries" in js
 | 
			
		||||
        assert len(js['analysis']) == 1
 | 
			
		||||
 | 
			
		||||
    def test_analysis_post(self):
 | 
			
		||||
        """
 | 
			
		||||
        The results for a POST request should be the same as for a GET request.
 | 
			
		||||
        """
 | 
			
		||||
        resp = self.client.post("/api/", data={'i': 'My aloha mohame',
 | 
			
		||||
                                               'with_parameters': True})
 | 
			
		||||
        self.assertCode(resp, 200)
 | 
			
		||||
        js = parse_resp(resp)
 | 
			
		||||
        logging.debug("Got response: %s", js)
 | 
			
		||||
        assert "@context" in js
 | 
			
		||||
        assert "entries" in js
 | 
			
		||||
        assert len(js['analysis']) == 1
 | 
			
		||||
 | 
			
		||||
    def test_analysis_extra(self):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,19 @@ class ModelsTest(TestCase):
 | 
			
		||||
            except Error:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
    def test_client_post(self):
 | 
			
		||||
        endpoint = 'http://dummy/'
 | 
			
		||||
        client = Client(endpoint)
 | 
			
		||||
        with patch_requests('http://dummy/', Results()):
 | 
			
		||||
            resp = client.analyse('hello')
 | 
			
		||||
            assert isinstance(resp, Results)
 | 
			
		||||
        with patch_requests('http://dummy/', Error('Nothing'), method='POST'):
 | 
			
		||||
            try:
 | 
			
		||||
                client.analyse(input='hello', method='POST', algorithm='NONEXISTENT')
 | 
			
		||||
                raise Exception('Exceptions should be raised. This is not golang')
 | 
			
		||||
            except Error:
 | 
			
		||||
                pass
 | 
			
		||||
 | 
			
		||||
    def test_plugins(self):
 | 
			
		||||
        endpoint = 'http://dummy/'
 | 
			
		||||
        client = Client(endpoint)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
#!/bin/env python
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import pickle
 | 
			
		||||
import shutil
 | 
			
		||||
import tempfile
 | 
			
		||||
 | 
			
		||||
from unittest import TestCase
 | 
			
		||||
from unittest import TestCase, skipIf
 | 
			
		||||
from senpy.models import Results, Entry, EmotionSet, Emotion, Plugins
 | 
			
		||||
from senpy import plugins
 | 
			
		||||
from senpy.plugins.conversion.emotion.centroids import CentroidConversion
 | 
			
		||||
from senpy.gsitk_compat import GSITK_AVAILABLE
 | 
			
		||||
 | 
			
		||||
import pandas as pd
 | 
			
		||||
 | 
			
		||||
@@ -346,13 +346,15 @@ class PluginsTest(TestCase):
 | 
			
		||||
        smart_metrics = results[0].metrics[0]
 | 
			
		||||
        assert abs(smart_metrics['accuracy'] - 1) < 0.01
 | 
			
		||||
 | 
			
		||||
    @skipIf(not GSITK_AVAILABLE, "GSITK is not available")
 | 
			
		||||
    def test_evaluation(self):
 | 
			
		||||
        if sys.version_info < (3, 0):
 | 
			
		||||
        self._test_evaluation()
 | 
			
		||||
 | 
			
		||||
    @skipIf(GSITK_AVAILABLE, "GSITK is available")
 | 
			
		||||
    def test_evaluation_unavailable(self):
 | 
			
		||||
        with self.assertRaises(Exception) as context:
 | 
			
		||||
            self._test_evaluation()
 | 
			
		||||
        self.assertTrue('GSITK ' in str(context.exception))
 | 
			
		||||
        else:
 | 
			
		||||
            self._test_evaluation()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def make_mini_test(fpath):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user