Your message dated Thu, 18 Jun 2026 12:48:56 +0000
with message-id <[email protected]>
and subject line Bug#1140267: fixed in python-falcon 4.3.1-1
has caused the Debian Bug report #1140267,
regarding python-falcon: FTBFS: cbor2.CBORDecodeError: error decoding semantic
tag: unknown unsigned integer subtype 0x1e
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1140267: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1140267
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:python-falcon
Version: 4.2.0-2
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202606/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-falcon, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
make: pyversions: No such file or directory
py3versions: no X-Python3-Version in control file, using supported versions
debian/rules:40: warning: overriding recipe for target
'override_dh_installchangelogs'
/usr/share/openstack-pkg-tools/pkgos.make:59: warning: ignoring old recipe for
target 'override_dh_installchangelogs'
dh clean --buildsystem=python_distutils --with python3
debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
make[1]: pyversions: No such file or directory
py3versions: no X-Python3-Version in control file, using supported versions
debian/rules:40: warning: overriding recipe for target
'override_dh_installchangelogs'
/usr/share/openstack-pkg-tools/pkgos.make:59: warning: ignoring old recipe for
target 'override_dh_installchangelogs'
rm -rf build .stestr *.egg-info .pytest_cache
find falcon/ -iname '*.c' -delete
find . -iname '*.pyc' -delete
[... snipped ...]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uvicorn-2-6-port]
PASSED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uvicorn-32-38-random]
PASSED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uvicorn--47-The
content of this comment is part of a test.\n] PASSED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uwsgi-7--hashlib]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uwsgi-2-6-port]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uwsgi-32-38-random]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[uwsgi--47-The
content of this comment is part of a test.\n] SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[waitress-7--hashlib]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[waitress-2-6-port]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[waitress-32-38-random]
SKIPPED [ 99%]
tests/test_wsgi_servers.py::TestWSGIServer::test_static_file_byte_range[waitress--47-The
content of this comment is part of a test.\n] SKIPPED [ 99%]
tests/test_wsgiref_inputwrapper_with_size.py::TestWsgiRefInputWrapper::test_resources_can_read_request_stream_during_tests
PASSED [100%]
=================================== FAILURES ===================================
____________________________ test_media[True-True] _____________________________
custom_text = True, custom_data = True
conductor = <falcon.testing.client.ASGIConductor object at 0x7f0ddaa8e2e0>
@pytest.mark.parametrize('custom_text', [True, False])
@pytest.mark.parametrize('custom_data', [True, False])
@pytest.mark.skipif(msgpack is None, reason='msgpack is required for this
test')
async def test_media(custom_text, custom_data, conductor): # NOQA: C901
# TODO(kgriffs): Refactor to reduce McCabe score
sample_doc = {
'answer': 42,
'runes': b'\xe1\x9a\xa0\xe1\x9b\x87\xe1\x9a\xbb'.decode(),
'ascii': 'hello world',
}
sample_doc_bin = sample_doc.copy()
sample_doc_bin['bits'] = os.urandom(32)
sample_doc_bin['array'] = [0, 1, 2]
class Resource:
def __init__(self):
self.finished = asyncio.Event()
self.docs_received = []
self.deserialize_error_count = 0
async def on_websocket(self, req, ws):
try:
await ws.accept()
await ws.send_media(sample_doc)
self.docs_received.append(await ws.receive_media())
await ws.send_media(sample_doc,
falcon.WebSocketPayloadType.TEXT)
self.docs_received.append(await ws.receive_media())
await ws.send_media(sample_doc_bin,
falcon.WebSocketPayloadType.BINARY)
self.docs_received.append(await ws.receive_media())
for __ in range(3):
try:
await ws.receive_media()
except ValueError:
self.deserialize_error_count += 1
finally:
self.finished.set()
app = conductor.app
resource = Resource()
app.add_route('/', resource)
if custom_text:
if rapidjson is None:
pytest.skip('rapidjson is required for this test')
# Let's say we want to use a faster JSON library. You could also
use this
# pattern to add serialization support for custom types that
aren't
# normally JSON-serializable out of the box.
class RapidJSONHandler(media.TextBaseHandlerWS):
def serialize(self, media: object) -> str:
return rapidjson.dumps(media, ensure_ascii=False)
# The raw TEXT payload will be passed as a Unicode string
def deserialize(self, payload: str) -> object:
return rapidjson.loads(payload)
app.ws_options.media_handlers[falcon.WebSocketPayloadType.TEXT] = (
RapidJSONHandler()
)
if custom_data:
if cbor2 is None:
pytest.skip('cbor2 is required for this test')
class CBORHandler(media.BinaryBaseHandlerWS):
def serialize(self, media: object) -> bytes:
return cbor2.dumps(media)
# The raw BINARY payload will be passed as a byte string
def deserialize(self, payload: bytes) -> object:
return cbor2.loads(payload)
app.ws_options.media_handlers[falcon.WebSocketPayloadType.BINARY] =
(
CBORHandler()
)
async with conductor as c:
async with c.simulate_ws() as ws:
for __ in range(2):
doc = await ws.receive_json()
await ws.send_json(doc)
if custom_data:
data = await ws.receive_data()
cbor2.loads(data) # NOTE(kgriffs): Validate serialization
format
await ws.send_data(data)
else:
doc = await ws.receive_msgpack()
await ws.send_msgpack(doc)
# NOTE(kgriffs): The first one will work, but we include it to
# ensure we aren't getting any false-positives.
await ws.send_text('"DEADBEEF"')
await ws.send_text('DEADBEEF')
await ws.send_data(b'\xde\xad\xbe\xef')
await resource.finished.wait()
> assert resource.deserialize_error_count == 2
E assert 1 == 2
E + where 1 = <asgi.test_ws.test_media.<locals>.Resource object at
0x7f0dda7bd160>.deserialize_error_count
tests/asgi/test_ws.py:515: AssertionError
------------------------------ Captured log call -------------------------------
ERROR falcon:app.py:1349 [FALCON] Unhandled exception in ASGI app
Traceback (most recent call last):
File "/<<PKGBUILDDIR>>/falcon/asgi/app.py", line 1243, in _handle_websocket
await on_websocket(req, web_socket, **params)
File "/<<PKGBUILDDIR>>/tests/asgi/test_ws.py", line 447, in on_websocket
await ws.receive_media()
File "/<<PKGBUILDDIR>>/falcon/asgi/ws.py", line 476, in receive_media
return self._mh_bin_deserialize(data)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/<<PKGBUILDDIR>>/tests/asgi/test_ws.py", line 487, in deserialize
return cbor2.loads(payload)
~~~~~~~~~~~^^^^^^^^^
cbor2.CBORDecodeError: error decoding semantic tag: unknown unsigned integer
subtype 0x1e
____________________________ test_media[True-False] ____________________________
custom_text = False, custom_data = True
conductor = <falcon.testing.client.ASGIConductor object at 0x7f0ddaa0cad0>
@pytest.mark.parametrize('custom_text', [True, False])
@pytest.mark.parametrize('custom_data', [True, False])
@pytest.mark.skipif(msgpack is None, reason='msgpack is required for this
test')
async def test_media(custom_text, custom_data, conductor): # NOQA: C901
# TODO(kgriffs): Refactor to reduce McCabe score
sample_doc = {
'answer': 42,
'runes': b'\xe1\x9a\xa0\xe1\x9b\x87\xe1\x9a\xbb'.decode(),
'ascii': 'hello world',
}
sample_doc_bin = sample_doc.copy()
sample_doc_bin['bits'] = os.urandom(32)
sample_doc_bin['array'] = [0, 1, 2]
class Resource:
def __init__(self):
self.finished = asyncio.Event()
self.docs_received = []
self.deserialize_error_count = 0
async def on_websocket(self, req, ws):
try:
await ws.accept()
await ws.send_media(sample_doc)
self.docs_received.append(await ws.receive_media())
await ws.send_media(sample_doc,
falcon.WebSocketPayloadType.TEXT)
self.docs_received.append(await ws.receive_media())
await ws.send_media(sample_doc_bin,
falcon.WebSocketPayloadType.BINARY)
self.docs_received.append(await ws.receive_media())
for __ in range(3):
try:
await ws.receive_media()
except ValueError:
self.deserialize_error_count += 1
finally:
self.finished.set()
app = conductor.app
resource = Resource()
app.add_route('/', resource)
if custom_text:
if rapidjson is None:
pytest.skip('rapidjson is required for this test')
# Let's say we want to use a faster JSON library. You could also
use this
# pattern to add serialization support for custom types that
aren't
# normally JSON-serializable out of the box.
class RapidJSONHandler(media.TextBaseHandlerWS):
def serialize(self, media: object) -> str:
return rapidjson.dumps(media, ensure_ascii=False)
# The raw TEXT payload will be passed as a Unicode string
def deserialize(self, payload: str) -> object:
return rapidjson.loads(payload)
app.ws_options.media_handlers[falcon.WebSocketPayloadType.TEXT] = (
RapidJSONHandler()
)
if custom_data:
if cbor2 is None:
pytest.skip('cbor2 is required for this test')
class CBORHandler(media.BinaryBaseHandlerWS):
def serialize(self, media: object) -> bytes:
return cbor2.dumps(media)
# The raw BINARY payload will be passed as a byte string
def deserialize(self, payload: bytes) -> object:
return cbor2.loads(payload)
app.ws_options.media_handlers[falcon.WebSocketPayloadType.BINARY] =
(
CBORHandler()
)
async with conductor as c:
async with c.simulate_ws() as ws:
for __ in range(2):
doc = await ws.receive_json()
await ws.send_json(doc)
if custom_data:
data = await ws.receive_data()
cbor2.loads(data) # NOTE(kgriffs): Validate serialization
format
await ws.send_data(data)
else:
doc = await ws.receive_msgpack()
await ws.send_msgpack(doc)
# NOTE(kgriffs): The first one will work, but we include it to
# ensure we aren't getting any false-positives.
await ws.send_text('"DEADBEEF"')
await ws.send_text('DEADBEEF')
await ws.send_data(b'\xde\xad\xbe\xef')
await resource.finished.wait()
> assert resource.deserialize_error_count == 2
E assert 1 == 2
E + where 1 = <asgi.test_ws.test_media.<locals>.Resource object at
0x7f0dda7be270>.deserialize_error_count
tests/asgi/test_ws.py:515: AssertionError
------------------------------ Captured log call -------------------------------
ERROR falcon:app.py:1349 [FALCON] Unhandled exception in ASGI app
Traceback (most recent call last):
File "/<<PKGBUILDDIR>>/falcon/asgi/app.py", line 1243, in _handle_websocket
await on_websocket(req, web_socket, **params)
File "/<<PKGBUILDDIR>>/tests/asgi/test_ws.py", line 447, in on_websocket
await ws.receive_media()
File "/<<PKGBUILDDIR>>/falcon/asgi/ws.py", line 476, in receive_media
return self._mh_bin_deserialize(data)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/<<PKGBUILDDIR>>/tests/asgi/test_ws.py", line 487, in deserialize
return cbor2.loads(payload)
~~~~~~~~~~~^^^^^^^^^
cbor2.CBORDecodeError: error decoding semantic tag: unknown unsigned integer
subtype 0x1e
=========================== short test summary info ============================
FAILED tests/asgi/test_ws.py::test_media[True-True] - assert 1 == 2
FAILED tests/asgi/test_ws.py::test_media[True-False] - assert 1 == 2
================= 2 failed, 3934 passed, 180 skipped in 33.32s =================
make[1]: *** [debian/rules:27: override_dh_auto_install] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:11: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit
status 2
--------------------------------------------------------------------------------
--- End Message ---
--- Begin Message ---
Source: python-falcon
Source-Version: 4.3.1-1
Done: Thomas Goirand <[email protected]>
We believe that the bug you reported is fixed in the latest version of
python-falcon, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Thomas Goirand <[email protected]> (supplier of updated python-falcon package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Thu, 18 Jun 2026 14:15:41 +0200
Source: python-falcon
Architecture: source
Version: 4.3.1-1
Distribution: unstable
Urgency: medium
Maintainer: Debian OpenStack <[email protected]>
Changed-By: Thomas Goirand <[email protected]>
Closes: 1140267
Changes:
python-falcon (4.3.1-1) unstable; urgency=medium
.
* New upstream release:
- fix compat with cbor2 6.x (Closes: #1140267).
Checksums-Sha1:
289364aed1ce2b51cc0232a243d0918806f8996f 2455 python-falcon_4.3.1-1.dsc
0b2f9fc38d2b453214733ed58cc33c9fe2390e16 925740 python-falcon_4.3.1.orig.tar.xz
14672d9065ee233b813526fa4749ec1dbd7edd75 7184
python-falcon_4.3.1-1.debian.tar.xz
d2c7b3739fb4c196c38509ef67dbae3a37cb642f 9493
python-falcon_4.3.1-1_amd64.buildinfo
Checksums-Sha256:
84dcfbc8effb35a7426c732c9598198183248ecf174e9f1f323273fb7f36c217 2455
python-falcon_4.3.1-1.dsc
32d0df87de9544aaa70392b2f31c71fa42ad504b7303cb0a10b0d8d500d29722 925740
python-falcon_4.3.1.orig.tar.xz
dbfdb7d43530fa0776328c96f53143f75dd668c8af3a65f6c2eded4fdd1f28d9 7184
python-falcon_4.3.1-1.debian.tar.xz
13b8d788699e422b6f284e989f269930c088dcb16d898298d148b97b3bcd4bfd 9493
python-falcon_4.3.1-1_amd64.buildinfo
Files:
544cd66f1c28849cfc9e041ff278b51e 2455 python optional python-falcon_4.3.1-1.dsc
7f2cba7af2a6cd37444f0e90f3df84eb 925740 python optional
python-falcon_4.3.1.orig.tar.xz
758616ceaa97e3092db78156dcd9cca3 7184 python optional
python-falcon_4.3.1-1.debian.tar.xz
811b23ebdccdaeaf1fedc510bfb01b95 9493 python optional
python-falcon_4.3.1-1_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEoLGp81CJVhMOekJc1BatFaxrQ/4FAmoz4ykACgkQ1BatFaxr
Q/4MQg//YY3Es75AlmUh4LWLD4wpcHTlfNhBWa0AnzqA1bY9a4ZlknYe2PAux9og
hYKYlSQ8stTdwFVCfYEB7odmv+9iH5zORJy8e2rZkFBw7WoYJM6Jgl7StqlWGD+Z
NsAZTvR+itZOv6lHv9h8DhmSibb33mXR+b8X52H9951QPGEURFymgumgNZu9IWI/
hO+C8zbl8hqgSGGOzouMtlw+8hGvAbcM7k43cUV/+IJUWTR1Z0lDw+GhS5LRbBcZ
MWWB9rCAtXIS7bOw9S32rnTZiVVT95RzUlHGqY/NilKo6ODbY6/EhZ2zhh2KNwfc
vrcNFT6hR7V5yRxxHKMlb5k/Tle0/I9gP55bzLLAkeW1TP6L9EqNFfaEBO3bW5cN
sI6Hx7UyXe511Jk1BxYRM1EujamsoRJUMnKmhVFV1ISh/MI0sBmz1uoykFpuFjno
OTolYMsbiQ8XWYYqNkMugkVoVzC3wrxClw+VcdnJmbcv4U3h9RW8MEl812DAaKlF
9LbfvjhhlYJZ3DLl2VViyT8+kl/cVR8tSRUnoJ5fkB7wnggyDAAApFPADuxBbmse
nryBs+URDL2FTZOdtj/kTjYAKv7tsMIikWLUr0XikRcQ8hJGWs7/dGvaXv2qGHLI
fVWZ8fejsb/7tlqu/45F06gT/e5L6gp9gL+EWg/3TyYCOC3+8EY=
=gQi5
-----END PGP SIGNATURE-----
pgp9UwyMcKmdH.pgp
Description: PGP signature
--- End Message ---