def test_decode(content_type):
    decoder = Mock()
    with patch.dict(_encoders._decoders_map, {content_type: decoder},
                    clear=True):
        _encoders.decode(42, content_type)

        decoder.assert_called_once_with(42)
예제 #2
0
def test_request(content_type_header):
    headers = {
        content_type_header: _content_types.JSON,
        "Accept": _content_types.CSV
    }

    request = _worker.Request(test.environ(data="42", headers=headers))

    assert request.content_type == _content_types.JSON
    assert request.accept == _content_types.CSV
    assert request.content == "42"

    headers = {
        content_type_header: _content_types.NPY,
        "Accept": _content_types.CSV
    }
    request = _worker.Request(
        test.environ(data=_encoders.encode([6, 9.3], _content_types.NPY),
                     headers=headers))

    assert request.content_type == _content_types.NPY
    assert request.accept == _content_types.CSV

    result = _encoders.decode(request.data, _content_types.NPY)
    np.testing.assert_array_equal(result, np.array([6, 9.3]))
def test_request():
    request = test.request(data='42')

    assert request.content_type == _content_types.JSON
    assert request.accept == _content_types.JSON
    assert request.content == '42'

    request = test.request(data=_encoders.encode([6, 9.3], _content_types.NPY),
                           content_type=_content_types.NPY,
                           accept=_content_types.CSV)

    assert request.content_type == _content_types.NPY
    assert request.accept == _content_types.CSV

    result = _encoders.decode(request.data, _content_types.NPY)
    np.testing.assert_array_equal(result, np.array([6, 9.3]))
예제 #4
0
def default_input_fn(input_data, content_type):
    """Takes request data and de-serializes the data into an object for prediction.

        When an InvokeEndpoint operation is made against an Endpoint running SageMaker model server,
        the model server receives two pieces of information:

            - The request Content-Type, for example "application/json"
            - The request data, which is at most 5 MB (5 * 1024 * 1024 bytes) in size.

        The input_fn is responsible to take the request data and pre-process it before prediction.

    Args:
        input_data (obj): the request data.
        content_type (str): the request Content-Type.

    Returns:
        (obj): data ready for prediction.
    """
    return _encoders.decode(input_data, content_type)
def test_decode_error():
    with pytest.raises(_errors.UnsupportedFormatError):
        _encoders.decode(42, _content_types.OCTET_STREAM)