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_content_type(content_type_header): response = test.request(headers={content_type_header: _content_types.CSV}) assert response.content_type == _content_types.CSV response = _worker.Request( test.environ(headers={"ContentType": _content_types.NPY})) assert response.content_type == _content_types.NPY
def request( path="/", base_url=None, query_string=None, method="GET", input_stream=None, content_length=None, headers=None, data=None, charset="utf-8", mimetype=None, ): _environ = environ( path, base_url, query_string, method, input_stream, content_length, headers, data, charset, mimetype, ) return _worker.Request(_environ)
def request(path='/', base_url=None, query_string=None, accept=None, method='GET', input_stream=None, content_type=None, content_length=None, headers=None, data=None, charset='utf-8', mimetype=None): headers = headers or {} if accept: headers['accept'] = accept environ_builder = werkzeug_test.EnvironBuilder( path=path, base_url=base_url, query_string=query_string, method=method, input_stream=input_stream, content_type=content_type, content_length=content_length, headers=headers, data=data, charset=charset, mimetype=mimetype) return _worker.Request(environ_builder.get_environ())
def transform(self): # type: () -> _worker.Response """Responsible to make predictions against the model. Returns: (worker.Response): a Flask response object with the following args: * Args: response: the serialized data to return accept: the content-type that the data was transformed to. """ request = _worker.Request() try: data = self._input_fn(request.content, request.content_type) except _errors.UnsupportedFormatError as e: return self._error_response(e, http_client.UNSUPPORTED_MEDIA_TYPE) prediction = self._predict_fn(data, self._model) try: result = self._output_fn(prediction, request.accept) except _errors.UnsupportedFormatError as e: return self._error_response(e, http_client.NOT_ACCEPTABLE) if isinstance(result, tuple): # transforms tuple in Response for backwards compatibility return _worker.Response(response=result[0], accept=result[1]) return result
def test_request_with_accept(serving_env): serving_env.default_accept = "application/NPY" request = _worker.Request( test.environ(headers={"Accept": _content_types.CSV}), serving_env=serving_env) assert request.accept == "text/csv"
def request(path='/', base_url=None, query_string=None, method='GET', input_stream=None, content_length=None, headers=None, data=None, charset='utf-8', mimetype=None): _environ = environ(path, base_url, query_string, method, input_stream, content_length, headers, data, charset, mimetype) return _worker.Request(_environ)
def transform(self): # type: () -> _worker.Response """Take a request with input data, deserialize it, make a prediction, and return a serialized response. Returns: sagemaker_containers.beta.framework.worker.Response: a Flask response object with the following args: * response: the serialized data to return * accept: the content type that the data was serialized into """ request = _worker.Request() result = self._transform_fn(self._model, request.content, request.content_type, request.accept) if isinstance(result, tuple): # transforms tuple in Response for backwards compatibility return _worker.Response(response=result[0], accept=result[1]) return result
def transform(self): # type: () -> _worker.Response """Responsible to make predictions against the model. Returns: (worker.Response): a Flask response object with the following args: * Args: response: the serialized data to return accept: the content-type that the data was transformed to. """ request = _worker.Request() data = self._input_fn(request.content, request.content_type) prediction = self._predict_fn(data, self._model) result = self._output_fn(prediction, request.accept) if isinstance(result, tuple): # transforms tuple in Response for backwards compatibility return _worker.Response(response=result[0], accept=result[1]) return result
def test_request_without_accept(serving_env): serving_env.default_accept = "application/json" request = _worker.Request(test.environ(), serving_env=serving_env) assert request.accept == "application/json"