def test_bin_data():
    a = np.array([1, 2, 3])
    serialized = pickle.dumps(a)
    data = {"binData": serialized}
    arr = get_data_from_json(data)
    assert not isinstance(arr, np.ndarray)
    assert arr == serialized
Ejemplo n.º 2
0
    def Predict():
        request = extract_message()
        sanity_check_request(request)

        features = get_data_from_json(request)
        names = request.get("data",{}).get("names")
        
        predictions = predict(user_model,features,names)

        # If predictions is an numpy array or we used the default data then return as numpy array
        if isinstance(predictions, np.ndarray) or "data" in request:
            predictions = np.array(predictions)
            if len(predictions.shape)>1:
                class_names = get_class_names(user_model, predictions.shape[1])
            else:
                class_names = []
            data = array_to_rest_datadef(predictions, class_names, request.get("data",{}))
            response = {"data":data,"meta":{}}
        else:
            response = {"binData":predictions,"meta":{}}
            
        tags = get_custom_tags(user_model)
        if tags:
            response["meta"]["tags"] = tags
        metrics = get_custom_metrics(user_model)
        if metrics:
            response["meta"]["metrics"] = metrics
        return jsonify(response)
def test_normal_data():
    data = {"data": {"tensor": {"shape": [1, 1], "values": [1]}}}
    arr = get_data_from_json(data)
    assert isinstance(arr, np.ndarray)
    assert arr.shape[0] == 1
    assert arr.shape[1] == 1
    assert arr[0][0] == 1
    def TransformInput():
        request = extract_message()
        sanity_check_request(request)

        features = get_data_from_json(request)
        names = request.get("data", {}).get("names")

        transformed = transform_input(user_model, features, names)

        # If predictions is an numpy array or we used the default data then return as numpy array
        if isinstance(transformed, np.ndarray) or "data" in request:
            new_feature_names = get_feature_names(user_model, names)
            transformed = np.array(transformed)
            data = array_to_rest_datadef(transformed, new_feature_names,
                                         request.get("data", {}))
            response = {"data": data, "meta": {}}
        else:
            response = {"binData": transformed, "meta": {}}

        tags = get_custom_tags(user_model)
        if tags:
            response["meta"]["tags"] = tags
        metrics = get_custom_metrics(user_model)
        if metrics:
            response["meta"]["metrics"] = metrics
        return jsonify(response)
    def TransformOutput():
        request = extract_message()
        sanity_check_request(request)

        features = get_data_from_json(request)
        names = request.get("data", {}).get("names")

        transformed = transform_output(user_model, features, names)

        if isinstance(transformed, np.ndarray) or "data" in request:
            new_class_names = get_class_names(user_model, names)
            data = array_to_rest_datadef(transformed, new_class_names,
                                         request.get("data", {}))
            response = {"data": data, "meta": {}}
        else:
            response = {"binData": transformed, "meta": {}}

        tags = get_custom_tags(user_model)
        if tags:
            response["meta"]["tags"] = tags
        metrics = get_custom_metrics(user_model)
        if metrics:
            response["meta"]["metrics"] = metrics
        return jsonify(response)
def test_bad_data():
    with pytest.raises(SeldonMicroserviceException):
        data = {"foo": "bar"}
        arr = get_data_from_json(data)
def test_str_data():
    data = {"strData": "my string data"}
    arr = get_data_from_json(data)
    assert not isinstance(arr, np.ndarray)
    assert arr == "my string data"