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)
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]))
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)