Source: flask-restful Version: 0.3.9-6 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20240115 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[2]: Entering directory '/<<PKGBUILDDIR>>/docs' > sphinx-build -b html -d _build/doctrees . _build/html > Running Sphinx v7.2.6 > making output directory... done > WARNING: The pre-Sphinx 1.0 'intersphinx_mapping' format is deprecated and > will be removed in Sphinx 8. Update to the current format as described in the > documentation. Hint: "intersphinx_mapping = {'<name>': ('six', > None)}".https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#confval-intersphinx_mapping > loading intersphinx inventory from > /usr/share/doc/python-flask-doc/html/objects.inv... > WARNING: failed to reach any of the inventories with the following issues: > intersphinx inventory '/usr/share/doc/python-flask-doc/html/objects.inv' not > fetchable due to <class 'FileNotFoundError'>: [Errno 2] No such file or > directory: '/usr/share/doc/python-flask-doc/html/objects.inv' > loading intersphinx inventory from > /usr/share/doc/python-werkzeug-doc/html/objects.inv... > WARNING: failed to reach any of the inventories with the following issues: > intersphinx inventory '/usr/share/doc/python-werkzeug-doc/html/objects.inv' > not fetchable due to <class 'FileNotFoundError'>: [Errno 2] No such file or > directory: '/usr/share/doc/python-werkzeug-doc/html/objects.inv' > loading intersphinx inventory from > /usr/share/doc/python3-doc/html/objects.inv... > loading intersphinx inventory from > /usr/share/doc/python3-doc/html/objects.inv... > loading intersphinx inventory from six/objects.inv... > WARNING: failed to reach any of the inventories with the following issues: > intersphinx inventory 'six/objects.inv' not fetchable due to <class > 'FileNotFoundError'>: [Errno 2] No such file or directory: > '/<<PKGBUILDDIR>>/docs/six/objects.inv' > building [mo]: targets for 0 po files that are out of date > writing output... > building [html]: targets for 9 source files that are out of date > updating environment: [new config] 9 added, 0 changed, 0 removed > [2Kreading sources... [ 11%] api > [2Kreading sources... [ 22%] extending > [2Kreading sources... [ 33%] fields > [2Kreading sources... [ 44%] index > [2Kreading sources... [ 56%] installation > [2Kreading sources... [ 67%] intermediate-usage > [2Kreading sources... [ 78%] quickstart > [2Kreading sources... [ 89%] reqparse > [2Kreading sources... [100%] testing > > /<<PKGBUILDDIR>>/flask_restful/__init__.py:docstring of > flask_restful.Api.unauthorized:1: WARNING: duplicate object description of > flask_restful.Api.unauthorized, other instance in api, use :no-index: for one > of them > /<<PKGBUILDDIR>>/docs/index.rst:6: WARNING: duplicate object description of > flask_restful, other instance in api, use :no-index: for one of them > /<<PKGBUILDDIR>>/docs/reqparse.rst:217: WARNING: Explicit markup ends without > a blank line; unexpected unindent. > looking for now-outdated files... none found > pickling environment... done > checking consistency... done > preparing documents... done > copying assets... copying static files... done > copying extra files... done > done > [2Kwriting output... [ 11%] api > [2Kwriting output... [ 22%] extending > [2Kwriting output... [ 33%] fields > [2Kwriting output... [ 44%] index > [2Kwriting output... [ 56%] installation > [2Kwriting output... [ 67%] intermediate-usage > [2Kwriting output... [ 78%] quickstart > [2Kwriting output... [ 89%] reqparse > [2Kwriting output... [100%] testing > > /<<PKGBUILDDIR>>/docs/intermediate-usage.rst:80: WARNING: undefined label: > 'blueprints' > generating indices... genindex py-modindex done > writing additional pages... search done > dumping search index in English (code: en)... done > dumping object inventory... done > build succeeded, 8 warnings. > > The HTML pages are in _build/html. > > Build finished. The HTML pages are in _build/html. > make[2]: Leaving directory '/<<PKGBUILDDIR>>/docs' > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:305: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_flask-restful/build; python3.12 -m > pytest tests > ============================= test session starts > ============================== > platform linux -- Python 3.12.1, pytest-7.4.4, pluggy-1.3.0 > rootdir: /<<PKGBUILDDIR>> > collected 318 items > > tests/test_accept.py ............ [ > 3%] > tests/test_api.py x.....................F............................... [ > 20%] > .......FF................... [ > 29%] > tests/test_api_with_blueprint.py ............. [ > 33%] > tests/test_cors.py .... [ > 34%] > tests/test_fields.py xxxx............................................... [ > 50%] > .................... [ > 57%] > tests/test_inputs.py xxxxxxx.xx.....................x.x [ > 67%] > tests/test_reqparse.py ................................................. [ > 83%] > ...F....................................FF........... > [100%] > > =================================== FAILURES > =================================== > _____________ APITestCase.test_error_router_falls_back_to_original > _____________ > > self = <tests.test_api.APITestCase > testMethod=test_error_router_falls_back_to_original> > > def test_error_router_falls_back_to_original(self): > """Verify that if an exception occurs in the Flask-RESTful error > handler, > the error_router will call the original flask error handler instead. > """ > app = Flask(__name__) > api = flask_restful.Api(app) > app.handle_exception = Mock() > api.handle_error = Mock(side_effect=Exception()) > api._has_fr_route = Mock(return_value=True) > exception = Mock(spec=HTTPException) > > with app.test_request_context('/foo'): > api.error_router(exception, app.handle_exception) > > > self.assertTrue(app.handle_exception.called_with(exception)) > > tests/test_api.py:509: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Mock id='139839121758240'>, name = 'called_with' > > def __getattr__(self, name): > if name in {'_mock_methods', '_mock_unsafe'}: > raise AttributeError(name) > elif self._mock_methods is not None: > if name not in self._mock_methods or name in _all_magics: > raise AttributeError("Mock object has no attribute %r" % name) > elif _is_magic(name): > raise AttributeError(name) > if not self._mock_unsafe and (not self._mock_methods or name not in > self._mock_methods): > if name.startswith(('assert', 'assret', 'asert', 'aseert', > 'assrt')) or name in _ATTRIB_DENY_LIST: > > raise AttributeError( > f"{name!r} is not a valid assertion. Use a spec " > f"for the mock if {name!r} is meant to be an attribute.") > E AttributeError: 'called_with' is not a valid assertion. Use a > spec for the mock if 'called_with' is meant to be an attribute. > > /usr/lib/python3/dist-packages/mock/mock.py:695: AttributeError > _____________________ APITestCase.test_media_types_method > ______________________ > > self = <tests.test_api.APITestCase testMethod=test_media_types_method> > > def test_media_types_method(self): > app = Flask(__name__) > api = flask_restful.Api(app) > > with app.test_request_context("/foo", headers={ > 'Accept': 'application/xml; q=.5' > }): > > self.assertEqual(api.mediatypes_method()(Mock()), > ['application/xml', 'application/json']) > E AssertionError: Lists differ: ['application/json'] != > ['application/xml', 'application/json'] > E > E First differing element 0: > E 'application/json' > E 'application/xml' > E > E Second list contains 1 additional elements. > E First extra element 1: > E 'application/json' > E > E - ['application/json'] > E + ['application/xml', 'application/json'] > > tests/test_api.py:527: AssertionError > ________________________ APITestCase.test_media_types_q > ________________________ > > self = <tests.test_api.APITestCase testMethod=test_media_types_q> > > def test_media_types_q(self): > app = Flask(__name__) > api = flask_restful.Api(app) > > with app.test_request_context("/foo", headers={ > 'Accept': 'application/json; q=1, application/xml; q=.5' > }): > > self.assertEqual(api.mediatypes(), > ['application/json', 'application/xml']) > E AssertionError: Lists differ: ['application/json'] != > ['application/json', 'application/xml'] > E > E Second list contains 1 additional elements. > E First extra element 1: > E 'application/xml' > E > E - ['application/json'] > E + ['application/json', 'application/xml'] > > tests/test_api.py:537: AssertionError > _____________________ ReqParseTestCase.test_parse_choices > ______________________ > > self = <tests.test_reqparse.ReqParseTestCase testMethod=test_parse_choices> > > def test_parse_choices(self): > app = Flask(__name__) > with app.app_context(): > req = Request.from_values("/bubble?foo=bar") > > parser = RequestParser() > parser.add_argument("foo", choices=["bat"]), > > > self.assertRaises(exceptions.BadRequest, lambda: > > parser.parse_args(req)) > > tests/test_reqparse.py:547: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_reqparse.py:547: in <lambda> > self.assertRaises(exceptions.BadRequest, lambda: parser.parse_args(req)) > flask_restful/reqparse.py:328: in parse_args > value, found = arg.parse(req, self.bundle_errors) > flask_restful/reqparse.py:184: in parse > source = self.source(request) > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > ___________________ ReqParseTestCase.test_strict_parsing_on > ____________________ > > self = <tests.test_reqparse.ReqParseTestCase > testMethod=test_strict_parsing_on> > > def test_strict_parsing_on(self): > req = Request.from_values("/bubble?foo=baz") > parser = RequestParser() > > self.assertRaises(exceptions.BadRequest, parser.parse_args, req, > > strict=True) > > tests/test_reqparse.py:823: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > flask_restful/reqparse.py:325: in parse_args > req.unparsed_arguments = dict(self.argument_class('').source(req)) if > strict else {} > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > _____________ ReqParseTestCase.test_strict_parsing_on_partial_hit > ______________ > > self = <tests.test_reqparse.ReqParseTestCase > testMethod=test_strict_parsing_on_partial_hit> > > def test_strict_parsing_on_partial_hit(self): > req = Request.from_values("/bubble?foo=1&bar=bees&n=22") > parser = RequestParser() > parser.add_argument('foo', type=int, location="args") > > self.assertRaises(exceptions.BadRequest, parser.parse_args, req, > > strict=True) > > tests/test_reqparse.py:836: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > flask_restful/reqparse.py:325: in parse_args > req.unparsed_arguments = dict(self.argument_class('').source(req)) if > strict else {} > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > =============================== warnings summary > =============================== > .pybuild/cpython3_3.12_flask-restful/build/tests/test_api.py:28 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_api.py:28: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unpack > will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:28 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:28: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_float > will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:38 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:38: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_boolean will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:50 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:50: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_rfc822_datetime_formatters will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:64 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_fields.py:64: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_iso8601_datetime_formatters will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:14 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:14: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_reverse_rfc822_datetime will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:25 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:25: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_reverse_iso8601_datetime will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:37 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:37: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_urls > will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:69 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:69: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_urls will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:91 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:91: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_url_error_message will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:112 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:112: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_bad_input will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:126 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:126: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_good_input will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:144 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:144: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_flags_good_input will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:157 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:157: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_flags_bad_input will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:243 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:243: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_isointerval will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:410 > .pybuild/cpython3_3.12_flask-restful/build/tests/test_inputs.py:410: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_isointervals will be ignored > > .pybuild/cpython3_3.12_flask-restful/build/tests/test_api.py::APITestCase::test_custom_error_message > .pybuild/cpython3_3.12_flask-restful/build/tests/test_api.py::APITestCase::test_handle_error_with_code > .pybuild/cpython3_3.12_flask-restful/build/tests/test_api.py::APITestCase::test_handle_server_error > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_flask-restful/build/flask_restful/__init__.py:283: > DeprecationWarning: 'propagate_exceptions' is deprecated and will be removed > in Flask 2.3. > if not isinstance(e, HTTPException) and current_app.propagate_exceptions: > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > =========================== short test summary info > ============================ > FAILED > tests/test_api.py::APITestCase::test_error_router_falls_back_to_original > FAILED tests/test_api.py::APITestCase::test_media_types_method - > AssertionErr... > FAILED tests/test_api.py::APITestCase::test_media_types_q - AssertionError: > L... > FAILED tests/test_reqparse.py::ReqParseTestCase::test_parse_choices - > werkzeu... > FAILED tests/test_reqparse.py::ReqParseTestCase::test_strict_parsing_on - > wer... > FAILED > tests/test_reqparse.py::ReqParseTestCase::test_strict_parsing_on_partial_hit > ============ 6 failed, 296 passed, 16 xfailed, 19 warnings in 1.36s > ============ > E: pybuild pybuild:391: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_flask-restful/build; python3.12 -m > pytest tests > I: pybuild base:305: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_flask-restful/build; python3.11 -m > pytest tests > ============================= test session starts > ============================== > platform linux -- Python 3.11.7, pytest-7.4.4, pluggy-1.3.0 > rootdir: /<<PKGBUILDDIR>> > collected 318 items > > tests/test_accept.py ............ [ > 3%] > tests/test_api.py x.....................F............................... [ > 20%] > .......FF................... [ > 29%] > tests/test_api_with_blueprint.py ............. [ > 33%] > tests/test_cors.py .... [ > 34%] > tests/test_fields.py xxxx............................................... [ > 50%] > .................... [ > 57%] > tests/test_inputs.py xxxxxxx.xx.....................x.x [ > 67%] > tests/test_reqparse.py ................................................. [ > 83%] > ...F....................................FF........... > [100%] > > =================================== FAILURES > =================================== > _____________ APITestCase.test_error_router_falls_back_to_original > _____________ > > self = <tests.test_api.APITestCase > testMethod=test_error_router_falls_back_to_original> > > def test_error_router_falls_back_to_original(self): > """Verify that if an exception occurs in the Flask-RESTful error > handler, > the error_router will call the original flask error handler instead. > """ > app = Flask(__name__) > api = flask_restful.Api(app) > app.handle_exception = Mock() > api.handle_error = Mock(side_effect=Exception()) > api._has_fr_route = Mock(return_value=True) > exception = Mock(spec=HTTPException) > > with app.test_request_context('/foo'): > api.error_router(exception, app.handle_exception) > > > self.assertTrue(app.handle_exception.called_with(exception)) > > tests/test_api.py:509: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <Mock id='140473142266896'>, name = 'called_with' > > def __getattr__(self, name): > if name in {'_mock_methods', '_mock_unsafe'}: > raise AttributeError(name) > elif self._mock_methods is not None: > if name not in self._mock_methods or name in _all_magics: > raise AttributeError("Mock object has no attribute %r" % name) > elif _is_magic(name): > raise AttributeError(name) > if not self._mock_unsafe and (not self._mock_methods or name not in > self._mock_methods): > if name.startswith(('assert', 'assret', 'asert', 'aseert', > 'assrt')) or name in _ATTRIB_DENY_LIST: > > raise AttributeError( > f"{name!r} is not a valid assertion. Use a spec " > f"for the mock if {name!r} is meant to be an attribute.") > E AttributeError: 'called_with' is not a valid assertion. Use a > spec for the mock if 'called_with' is meant to be an attribute. > > /usr/lib/python3/dist-packages/mock/mock.py:695: AttributeError > _____________________ APITestCase.test_media_types_method > ______________________ > > self = <tests.test_api.APITestCase testMethod=test_media_types_method> > > def test_media_types_method(self): > app = Flask(__name__) > api = flask_restful.Api(app) > > with app.test_request_context("/foo", headers={ > 'Accept': 'application/xml; q=.5' > }): > > self.assertEqual(api.mediatypes_method()(Mock()), > ['application/xml', 'application/json']) > E AssertionError: Lists differ: ['application/json'] != > ['application/xml', 'application/json'] > E > E First differing element 0: > E 'application/json' > E 'application/xml' > E > E Second list contains 1 additional elements. > E First extra element 1: > E 'application/json' > E > E - ['application/json'] > E + ['application/xml', 'application/json'] > > tests/test_api.py:527: AssertionError > ________________________ APITestCase.test_media_types_q > ________________________ > > self = <tests.test_api.APITestCase testMethod=test_media_types_q> > > def test_media_types_q(self): > app = Flask(__name__) > api = flask_restful.Api(app) > > with app.test_request_context("/foo", headers={ > 'Accept': 'application/json; q=1, application/xml; q=.5' > }): > > self.assertEqual(api.mediatypes(), > ['application/json', 'application/xml']) > E AssertionError: Lists differ: ['application/json'] != > ['application/json', 'application/xml'] > E > E Second list contains 1 additional elements. > E First extra element 1: > E 'application/xml' > E > E - ['application/json'] > E + ['application/json', 'application/xml'] > > tests/test_api.py:537: AssertionError > _____________________ ReqParseTestCase.test_parse_choices > ______________________ > > self = <tests.test_reqparse.ReqParseTestCase testMethod=test_parse_choices> > > def test_parse_choices(self): > app = Flask(__name__) > with app.app_context(): > req = Request.from_values("/bubble?foo=bar") > > parser = RequestParser() > parser.add_argument("foo", choices=["bat"]), > > > self.assertRaises(exceptions.BadRequest, lambda: > > parser.parse_args(req)) > > tests/test_reqparse.py:547: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_reqparse.py:547: in <lambda> > self.assertRaises(exceptions.BadRequest, lambda: parser.parse_args(req)) > flask_restful/reqparse.py:328: in parse_args > value, found = arg.parse(req, self.bundle_errors) > flask_restful/reqparse.py:184: in parse > source = self.source(request) > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > ___________________ ReqParseTestCase.test_strict_parsing_on > ____________________ > > self = <tests.test_reqparse.ReqParseTestCase > testMethod=test_strict_parsing_on> > > def test_strict_parsing_on(self): > req = Request.from_values("/bubble?foo=baz") > parser = RequestParser() > > self.assertRaises(exceptions.BadRequest, parser.parse_args, req, > > strict=True) > > tests/test_reqparse.py:823: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > flask_restful/reqparse.py:325: in parse_args > req.unparsed_arguments = dict(self.argument_class('').source(req)) if > strict else {} > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > _____________ ReqParseTestCase.test_strict_parsing_on_partial_hit > ______________ > > self = <tests.test_reqparse.ReqParseTestCase > testMethod=test_strict_parsing_on_partial_hit> > > def test_strict_parsing_on_partial_hit(self): > req = Request.from_values("/bubble?foo=1&bar=bees&n=22") > parser = RequestParser() > parser.add_argument('foo', type=int, location="args") > > self.assertRaises(exceptions.BadRequest, parser.parse_args, req, > > strict=True) > > tests/test_reqparse.py:836: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > flask_restful/reqparse.py:325: in parse_args > req.unparsed_arguments = dict(self.argument_class('').source(req)) if > strict else {} > flask_restful/reqparse.py:125: in source > value = getattr(request, l, None) > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:561: in json > return self.get_json() > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:607: in get_json > return self.on_json_loading_failed(None) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def on_json_loading_failed(self, e: ValueError | None) -> t.Any: > """Called if :meth:`get_json` fails and isn't silenced. > > If this method returns a value, it is used as the return value > for :meth:`get_json`. The default implementation raises > :exc:`~werkzeug.exceptions.BadRequest`. > > :param e: If parsing failed, this is the exception. It will be > ``None`` if the content type wasn't ``application/json``. > > .. versionchanged:: 2.3 > Raise a 415 error instead of 400. > """ > if e is not None: > raise BadRequest(f"Failed to decode JSON object: {e}") > > > raise UnsupportedMediaType( > "Did not attempt to load JSON data because the request" > " Content-Type was not 'application/json'." > ) > E werkzeug.exceptions.UnsupportedMediaType: 415 Unsupported Media Type: > Did not attempt to load JSON data because the request Content-Type was not > 'application/json'. > > /usr/lib/python3/dist-packages/werkzeug/wrappers/request.py:650: > UnsupportedMediaType > =============================== warnings summary > =============================== > .pybuild/cpython3_3.11_flask-restful/build/tests/test_api.py:28 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_api.py:28: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_unpack > will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:28 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:28: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_float > will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:38 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:38: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_boolean will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:50 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:50: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_rfc822_datetime_formatters will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:64 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_fields.py:64: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_iso8601_datetime_formatters will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:14 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:14: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_reverse_rfc822_datetime will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:25 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:25: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_reverse_iso8601_datetime will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:37 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:37: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_urls > will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:69 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:69: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_urls will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:91 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:91: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_url_error_message will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:112 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:112: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_bad_input will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:126 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:126: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_good_input will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:144 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:144: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_flags_good_input will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:157 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:157: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_regex_flags_bad_input will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:243 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:243: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_isointerval will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:410 > .pybuild/cpython3_3.11_flask-restful/build/tests/test_inputs.py:410: > PytestCollectionWarning: yield tests were removed in pytest 4.0 - > test_bad_isointervals will be ignored > > .pybuild/cpython3_3.11_flask-restful/build/tests/test_api.py::APITestCase::test_custom_error_message > .pybuild/cpython3_3.11_flask-restful/build/tests/test_api.py::APITestCase::test_handle_error_with_code > .pybuild/cpython3_3.11_flask-restful/build/tests/test_api.py::APITestCase::test_handle_server_error > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_flask-restful/build/flask_restful/__init__.py:283: > DeprecationWarning: 'propagate_exceptions' is deprecated and will be removed > in Flask 2.3. > if not isinstance(e, HTTPException) and current_app.propagate_exceptions: > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > =========================== short test summary info > ============================ > FAILED > tests/test_api.py::APITestCase::test_error_router_falls_back_to_original > FAILED tests/test_api.py::APITestCase::test_media_types_method - > AssertionErr... > FAILED tests/test_api.py::APITestCase::test_media_types_q - AssertionError: > L... > FAILED tests/test_reqparse.py::ReqParseTestCase::test_parse_choices - > werkzeu... > FAILED tests/test_reqparse.py::ReqParseTestCase::test_strict_parsing_on - > wer... > FAILED > tests/test_reqparse.py::ReqParseTestCase::test_strict_parsing_on_partial_hit > ============ 6 failed, 296 passed, 16 xfailed, 19 warnings in 1.33s > ============ > E: pybuild pybuild:391: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_flask-restful/build; python3.11 -m > pytest tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 > 3.11" returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2024/01/15/flask-restful_0.3.9-6_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240115;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240115&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.