[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Debian Bug report logs - #1082269
python-sdjson FTBFS with Python 3.13

version graph

Package: src:python-sdjson; Maintainer for src:python-sdjson is Debian Python Team <team+python@tracker.debian.org>;

Reported by: Stefano Rivera <stefanor@debian.org>

Date: Thu, 19 Sep 2024 15:07:34 UTC

Severity: serious

Found in version python-sdjson/0.5.0-1

Fixed in version python-sdjson/0.5.0-3

Done: Colin Watson <cjwatson@debian.org>

Forwarded to https://github.com/domdfcoding/singledispatch-json/issues/55

Reply or subscribe to this bug.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Debian Python Team <team+python@tracker.debian.org>:
Bug#1082269; Package src:python-sdjson. (Thu, 19 Sep 2024 15:07:35 GMT) (full text, mbox, link).


Acknowledgement sent to Stefano Rivera <stefanor@debian.org>:
New Bug report received and forwarded. Copy sent to Debian Python Team <team+python@tracker.debian.org>. (Thu, 19 Sep 2024 15:07:35 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Stefano Rivera <stefanor@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: python-sdjson FTBFS with Python 3.13
Date: Thu, 19 Sep 2024 17:04:57 +0200
Source: python-sdjson
Version: 0.5.0-1
Severity: normal
User: debian-python@lists.debian.org
Usertags: python3.13

This package failed build from source when test-built against a version of
python3-defaults that includes 3.13 as a supported version.

To reproduce this issue, build against python3-defaults (python3-all-dev etc.)
from Debian experimental.

What's new in Python 3.13:
https://docs.python.org/3.13/whatsnew/3.13.html

Log snippet:

   dh_auto_test -O--buildsystem=pybuild
I: pybuild pybuild:308: ln -s test_overloading_ tests/test_overloading
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_sdjson/build; python3.13 -m pytest -v --ignore=tests/test_protocols.py
============================= test session starts ==============================
platform linux -- Python 3.13.0rc2, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13
cachedir: .pytest_cache
Test session started at 07:47:54
rootdir: /<<PKGBUILDDIR>>
configfile: tox.ini
plugins: regressions-2.5.0+ds, timeout-2.3.1, rerunfailures-12.0, datadir-1.4.1+ds, typeguard-4.3.0, cov-5.0.0
timeout: 300.0s
timeout method: signal
timeout func_only: False
collecting ... collected 154 items

tests/stdlib_tests/test_decode.py::test_decimal PASSED                   [  0%]
tests/stdlib_tests/test_decode.py::test_float PASSED                     [  1%]
tests/stdlib_tests/test_decode.py::test_empty_objects PASSED             [  1%]
tests/stdlib_tests/test_decode.py::test_object_pairs_hook PASSED         [  2%]
tests/stdlib_tests/test_decode.py::test_decoder_optimizations PASSED     [  3%]
tests/stdlib_tests/test_decode.py::test_keys_reuse PASSED                [  3%]
tests/stdlib_tests/test_decode.py::test_extra_data PASSED                [  4%]
tests/stdlib_tests/test_decode.py::test_invalid_escape PASSED            [  5%]
tests/stdlib_tests/test_decode.py::test_invalid_input_type PASSED        [  5%]
tests/stdlib_tests/test_decode.py::test_string_with_utf8_bom PASSED      [  6%]
tests/stdlib_tests/test_decode.py::test_negative_index PASSED            [  7%]
tests/stdlib_tests/test_default.py::test_default PASSED                  [  7%]
tests/stdlib_tests/test_dump.py::test_dump PASSED                        [  8%]
tests/stdlib_tests/test_dump.py::test_dumps PASSED                       [  9%]
tests/stdlib_tests/test_dump.py::test_dump_skipkeys PASSED               [  9%]
tests/stdlib_tests/test_dump.py::test_encode_truefalse[data0-{"false": true, "true": false}] PASSED [ 10%]
tests/stdlib_tests/test_dump.py::test_encode_truefalse[data1-{"false": 1, "2": 3.0, "4.0": 5, "6": true}] PASSED [ 11%]
tests/stdlib_tests/test_dump.py::test_encode_mutated PASSED              [ 11%]
tests/stdlib_tests/test_dump.py::test_encode_evil_dict PASSED            [ 12%]
tests/stdlib_tests/test_encode_basestring_ascii.py::test_ordered_dict PASSED [ 12%]
tests/stdlib_tests/test_encode_basestring_ascii.py::test_sorted_dict PASSED [ 13%]
tests/stdlib_tests/test_enum.py::test_floats PASSED                      [ 14%]
tests/stdlib_tests/test_enum.py::test_weird_floats PASSED                [ 14%]
tests/stdlib_tests/test_enum.py::test_ints PASSED                        [ 15%]
tests/stdlib_tests/test_enum.py::test_list PASSED                        [ 16%]
tests/stdlib_tests/test_enum.py::test_dict_keys PASSED                   [ 16%]
tests/stdlib_tests/test_enum.py::test_dict_values PASSED                 [ 17%]
tests/stdlib_tests/test_fail.py::test_failures PASSED                    [ 18%]
tests/stdlib_tests/test_fail.py::test_non_string_keys_dict PASSED        [ 18%]
tests/stdlib_tests/test_fail.py::test_not_serializable PASSED            [ 19%]
tests/stdlib_tests/test_fail.py::test_truncated_input[-Expecting value-0] PASSED [ 20%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[-Expecting value-1] PASSED [ 20%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[42-Expecting ',' delimiter-3] PASSED [ 21%]
tests/stdlib_tests/test_fail.py::test_truncated_input[[42,-Expecting value-4] PASSED [ 22%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["-Unterminated string starting at-1] PASSED [ 22%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam-Unterminated string starting at-1] PASSED [ 23%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam"-Expecting ',' delimiter-7] PASSED [ 24%]
tests/stdlib_tests/test_fail.py::test_truncated_input[["spam",-Expecting value-8] PASSED [ 24%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{-Expecting property name enclosed in double quotes-1] PASSED [ 25%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"-Unterminated string starting at-1] PASSED [ 25%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam-Unterminated string starting at-1] PASSED [ 26%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam"-Expecting ':' delimiter-7] PASSED [ 27%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":-Expecting value-8] PASSED [ 27%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42-Expecting ',' delimiter-10] PASSED [ 28%]
tests/stdlib_tests/test_fail.py::test_truncated_input[{"spam":42,-Expecting property name enclosed in double quotes-11] PASSED [ 29%]
tests/stdlib_tests/test_fail.py::test_truncated_input["-Unterminated string starting at-0] PASSED [ 29%]
tests/stdlib_tests/test_fail.py::test_truncated_input["spam-Unterminated string starting at-0] PASSED [ 30%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[,-Expecting value-1] PASSED [ 31%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[}-Expecting value-9] PASSED [ 31%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42:-Expecting ',' delimiter-3] PASSED [ 32%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42 "spam"-Expecting ',' delimiter-4] PASSED [ 33%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[42,]-Expecting value-4] FAILED [ 33%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":[42}-Expecting ',' delimiter-11] PASSED [ 34%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["]-Unterminated string starting at-1] PASSED [ 35%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam":-Expecting ',' delimiter-7] PASSED [ 35%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam",]-Expecting value-8] FAILED [ 36%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{:-Expecting property name enclosed in double quotes-1] PASSED [ 37%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{,-Expecting property name enclosed in double quotes-1] PASSED [ 37%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{42-Expecting property name enclosed in double quotes-1] PASSED [ 38%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{]-Expecting property name enclosed in double quotes-2] PASSED [ 38%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam",-Expecting ':' delimiter-7] PASSED [ 39%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam"}-Expecting ':' delimiter-7] PASSED [ 40%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam"]-Expecting ':' delimiter-8] PASSED [ 40%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":}-Expecting value-8] PASSED [ 41%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":]-Expecting value-9] PASSED [ 42%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42 "ham"-Expecting ',' delimiter-11] PASSED [ 42%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[[{"spam":42]-Expecting ',' delimiter-11] PASSED [ 43%]
tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11] FAILED [ 44%]
tests/stdlib_tests/test_fail.py::test_extra_data[[]]-Extra data-2] PASSED [ 44%]
tests/stdlib_tests/test_fail.py::test_extra_data[{}}-Extra data-2] PASSED [ 45%]
tests/stdlib_tests/test_fail.py::test_extra_data[[],[]-Extra data-2] PASSED [ 46%]
tests/stdlib_tests/test_fail.py::test_extra_data[{},{}-Extra data-2] PASSED [ 46%]
tests/stdlib_tests/test_fail.py::test_extra_data[42,"spam"-Extra data-2] PASSED [ 47%]
tests/stdlib_tests/test_fail.py::test_extra_data["spam",42-Extra data-6] PASSED [ 48%]
tests/stdlib_tests/test_fail.py::test_linecol[!-1-1-0] PASSED            [ 48%]
tests/stdlib_tests/test_fail.py::test_linecol[ !-1-2-1] PASSED           [ 49%]
tests/stdlib_tests/test_fail.py::test_linecol[\n!-2-1-1] PASSED          [ 50%]
tests/stdlib_tests/test_fail.py::test_linecol[\n  \n\n     !-4-6-10] PASSED [ 50%]
tests/stdlib_tests/test_float.py::test_floats PASSED                     [ 51%]
tests/stdlib_tests/test_float.py::test_ints PASSED                       [ 51%]
tests/stdlib_tests/test_float.py::test_out_of_range PASSED               [ 52%]
tests/stdlib_tests/test_float.py::test_allow_nan PASSED                  [ 53%]
tests/stdlib_tests/test_indent.py::test_indent PASSED                    [ 53%]
tests/stdlib_tests/test_indent.py::test_indent0 PASSED                   [ 54%]
tests/stdlib_tests/test_passes.py::test_parse_pass_1 PASSED              [ 55%]
tests/stdlib_tests/test_passes.py::test_parse_pass_2 PASSED              [ 55%]
tests/stdlib_tests/test_passes.py::test_parse_pass_3 PASSED              [ 56%]
tests/stdlib_tests/test_recursion.py::test_listrecursion PASSED          [ 57%]
tests/stdlib_tests/test_recursion.py::test_dictrecursion PASSED          [ 57%]
tests/stdlib_tests/test_recursion.py::test_defaultrecursion PASSED       [ 58%]
tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_decoding PASSED [ 59%]
tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_encoding PASSED [ 59%]
tests/stdlib_tests/test_recursion.py::test_endless_recursion PASSED      [ 60%]
tests/stdlib_tests/test_separators.py::test_separators PASSED            [ 61%]
tests/stdlib_tests/test_separators.py::test_illegal_separators PASSED    [ 61%]
tests/stdlib_tests/test_unicode.py::test_encoding3 PASSED                [ 62%]
tests/stdlib_tests/test_unicode.py::test_encoding4 PASSED                [ 62%]
tests/stdlib_tests/test_unicode.py::test_encoding5 PASSED                [ 63%]
tests/stdlib_tests/test_unicode.py::test_encoding6 PASSED                [ 64%]
tests/stdlib_tests/test_unicode.py::test_big_unicode_encode PASSED       [ 64%]
tests/stdlib_tests/test_unicode.py::test_big_unicode_decode PASSED       [ 65%]
tests/stdlib_tests/test_unicode.py::test_unicode_decode PASSED           [ 66%]
tests/stdlib_tests/test_unicode.py::test_unicode_preservation PASSED     [ 66%]
tests/stdlib_tests/test_unicode.py::test_bytes_encode PASSED             [ 67%]
tests/stdlib_tests/test_unicode.py::test_bytes_decode PASSED             [ 68%]
tests/stdlib_tests/test_unicode.py::test_object_pairs_hook_with_unicode PASSED [ 68%]
tests/test_custom_class.py::test_custom_class PASSED                     [ 69%]
tests/test_custom_encoders.py::test_decimal_float PASSED                 [ 70%]
tests/test_custom_encoders.py::test_decimal_str PASSED                   [ 70%]
tests/test_custom_encoders.py::test_fraction_float PASSED                [ 71%]
tests/test_custom_encoders.py::test_fraction_str PASSED                  [ 72%]
tests/test_custom_encoders.py::test_datetime_float PASSED                [ 72%]
tests/test_custom_encoders.py::test_datetime_str PASSED                  [ 73%]
tests/test_custom_encoders.py::test_datetime_tuple PASSED                [ 74%]
tests/test_custom_encoders.py::test_timedelta_float PASSED               [ 74%]
tests/test_custom_encoders.py::test_date_str PASSED                      [ 75%]
tests/test_custom_encoders.py::test_date_tuple PASSED                    [ 75%]
tests/test_custom_encoders.py::test_time_float PASSED                    [ 76%]
tests/test_custom_encoders.py::test_time_str PASSED                      [ 77%]
tests/test_custom_encoders.py::test_time_tuple PASSED                    [ 77%]
tests/test_custom_encoders.py::test_named_tuple XFAIL (Not implement...) [ 78%]
tests/test_load.py::test_bools PASSED                                    [ 79%]
tests/test_load.py::test_none PASSED                                     [ 79%]
tests/test_load.py::test_int[1] PASSED                                   [ 80%]
tests/test_load.py::test_int[1234] PASSED                                [ 81%]
tests/test_load.py::test_int[12340000000] PASSED                         [ 81%]
tests/test_load.py::test_int[-1] PASSED                                  [ 82%]
tests/test_load.py::test_int[-1234] PASSED                               [ 83%]
tests/test_load.py::test_int[-12340000000] PASSED                        [ 83%]
tests/test_load.py::test_float[1.0] PASSED                               [ 84%]
tests/test_load.py::test_float[1234.0] PASSED                            [ 85%]
tests/test_load.py::test_float[12340000000.0] PASSED                     [ 85%]
tests/test_load.py::test_float[-1.0] PASSED                              [ 86%]
tests/test_load.py::test_float[-1234.0] PASSED                           [ 87%]
tests/test_load.py::test_float[-12340000000.0] PASSED                    [ 87%]
tests/test_load.py::test_float[1.005] PASSED                             [ 88%]
tests/test_load.py::test_float[1234.005] PASSED                          [ 88%]
tests/test_load.py::test_float[12340000000.005] PASSED                   [ 89%]
tests/test_load.py::test_float[-1.005] PASSED                            [ 90%]
tests/test_load.py::test_float[-1234.005] PASSED                         [ 90%]
tests/test_load.py::test_float[-12340000000.005] PASSED                  [ 91%]
tests/test_load.py::test_write_then_read[tuple] PASSED                   [ 92%]
tests/test_load.py::test_write_then_read[list] PASSED                    [ 92%]
tests/test_load.py::test_write_then_read[dict] PASSED                    [ 93%]
tests/test_load.py::test_write_then_read[egg and bacon-egg and bacon] PASSED [ 94%]
tests/test_load.py::test_write_then_read[egg sausage and bacon-egg sausage and bacon] PASSED [ 94%]
tests/test_load.py::test_write_then_read[egg and spam-egg and spam] PASSED [ 95%]
tests/test_load.py::test_write_then_read[egg bacon and spam-egg bacon and spam] PASSED [ 96%]
tests/test_load.py::test_dict_failure[dictionary0] XFAIL                 [ 96%]
tests/test_load.py::test_dict_failure[dictionary1] XFAIL                 [ 97%]
tests/test_load.py::test_tuple_failure XFAIL                             [ 98%]
tests/test_multiple_files.py::test_multiple_files PASSED                 [ 98%]
tests/test_overloading.py::test_overloading PASSED                       [ 99%]
tests/test_unregister.py::test_unregister PASSED                         [100%]

=================================== FAILURES ===================================
________________ test_unexpected_data[[42,]-Expecting value-4] _________________

data = '[42,]', msg = 'Expecting value', idx = 4

    @pytest.mark.parametrize(
    		"data, msg, idx",
    		[
    				("[,", "Unexpected ','" if PYPY else "Expecting value", 1),
    				('{"spam":[}', unexpected_right_brace, 9),
    				("[42:", unexpected_colon, 3),
    				('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4),
    				("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4),
    				('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11),
    				('["]', "Unterminated string starting at", 1),
    				('["spam":', unexpected_colon, 7),
    				('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8),
    				("{:", property_name_string, 1),
    				("{,", property_name_string, 1),
    				("{42", property_name_string, 1),
    				("[{]", property_name_string, 2),
    				('{"spam",', missing_colon, 7),
    				('{"spam"}', missing_colon, 7),
    				('[{"spam"]', missing_colon, 8),
    				('{"spam":}', unexpected_right_brace, 8),
    				('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9),
    				(
    						'{"spam":42 "ham"',
    						"Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter",
    						11
    						),
    				('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11),
    				('{"spam":42,}', property_name_string, 11),
    				]
    		)
    def test_unexpected_data(data: str, msg: str, idx: int):
>   	__test_invalid_input(data, msg, idx)

tests/stdlib_tests/test_fail.py:189: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data = '[42,]', msg = 'Expecting value', idx = 4

    def __test_invalid_input(data: str, msg: str, idx: int) -> None:
    	with pytest.raises(sdjson.JSONDecodeError) as err:
    		sdjson.loads(data)
    
    	if PYPY:
    		assert err.value.msg.startswith(msg)  # Fix for varying messages between PyPy versions
    	else:
>   		assert err.value.msg == msg
E     AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'
E       
E       - Expecting value
E       + Illegal trailing comma before end of array

tests/stdlib_tests/test_fail.py:116: AssertionError
______________ test_unexpected_data[["spam",]-Expecting value-8] _______________

data = '["spam",]', msg = 'Expecting value', idx = 8

    @pytest.mark.parametrize(
    		"data, msg, idx",
    		[
    				("[,", "Unexpected ','" if PYPY else "Expecting value", 1),
    				('{"spam":[}', unexpected_right_brace, 9),
    				("[42:", unexpected_colon, 3),
    				('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4),
    				("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4),
    				('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11),
    				('["]', "Unterminated string starting at", 1),
    				('["spam":', unexpected_colon, 7),
    				('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8),
    				("{:", property_name_string, 1),
    				("{,", property_name_string, 1),
    				("{42", property_name_string, 1),
    				("[{]", property_name_string, 2),
    				('{"spam",', missing_colon, 7),
    				('{"spam"}', missing_colon, 7),
    				('[{"spam"]', missing_colon, 8),
    				('{"spam":}', unexpected_right_brace, 8),
    				('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9),
    				(
    						'{"spam":42 "ham"',
    						"Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter",
    						11
    						),
    				('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11),
    				('{"spam":42,}', property_name_string, 11),
    				]
    		)
    def test_unexpected_data(data: str, msg: str, idx: int):
>   	__test_invalid_input(data, msg, idx)

tests/stdlib_tests/test_fail.py:189: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data = '["spam",]', msg = 'Expecting value', idx = 8

    def __test_invalid_input(data: str, msg: str, idx: int) -> None:
    	with pytest.raises(sdjson.JSONDecodeError) as err:
    		sdjson.loads(data)
    
    	if PYPY:
    		assert err.value.msg.startswith(msg)  # Fix for varying messages between PyPy versions
    	else:
>   		assert err.value.msg == msg
E     AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'
E       
E       - Expecting value
E       + Illegal trailing comma before end of array

tests/stdlib_tests/test_fail.py:116: AssertionError
_ test_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11] _

data = '{"spam":42,}', msg = 'Expecting property name enclosed in double quotes'
idx = 11

    @pytest.mark.parametrize(
    		"data, msg, idx",
    		[
    				("[,", "Unexpected ','" if PYPY else "Expecting value", 1),
    				('{"spam":[}', unexpected_right_brace, 9),
    				("[42:", unexpected_colon, 3),
    				('[42 "spam"', "Unexpected '\"' when decoding array" if PYPY else "Expecting ',' delimiter", 4),
    				("[42,]", "Unexpected ']'" if PYPY else "Expecting value", 4),
    				('{"spam":[42}', "Unexpected '}' when decoding array" if PYPY else "Expecting ',' delimiter", 11),
    				('["]', "Unterminated string starting at", 1),
    				('["spam":', unexpected_colon, 7),
    				('["spam",]', "Unexpected ']'" if PYPY else "Expecting value", 8),
    				("{:", property_name_string, 1),
    				("{,", property_name_string, 1),
    				("{42", property_name_string, 1),
    				("[{]", property_name_string, 2),
    				('{"spam",', missing_colon, 7),
    				('{"spam"}', missing_colon, 7),
    				('[{"spam"]', missing_colon, 8),
    				('{"spam":}', unexpected_right_brace, 8),
    				('[{"spam":]', "Unexpected ']'" if PYPY else "Expecting value", 9),
    				(
    						'{"spam":42 "ham"',
    						"Unexpected '\"' when decoding object" if PYPY else "Expecting ',' delimiter",
    						11
    						),
    				('[{"spam":42]', "Unexpected ']' when decoding object" if PYPY else "Expecting ',' delimiter", 11),
    				('{"spam":42,}', property_name_string, 11),
    				]
    		)
    def test_unexpected_data(data: str, msg: str, idx: int):
>   	__test_invalid_input(data, msg, idx)

tests/stdlib_tests/test_fail.py:189: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data = '{"spam":42,}', msg = 'Expecting property name enclosed in double quotes'
idx = 11

    def __test_invalid_input(data: str, msg: str, idx: int) -> None:
    	with pytest.raises(sdjson.JSONDecodeError) as err:
    		sdjson.loads(data)
    
    	if PYPY:
    		assert err.value.msg.startswith(msg)  # Fix for varying messages between PyPy versions
    	else:
>   		assert err.value.msg == msg
E     AssertionError: assert 'Illegal trai...end of object' == 'Expecting pr...double quotes'
E       
E       - Expecting property name enclosed in double quotes
E       + Illegal trailing comma before end of object

tests/stdlib_tests/test_fail.py:116: AssertionError
============================= slowest 25 durations =============================
0.10s call     .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_unicode.py::test_unicode_decode
0.09s call     .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_encoding
0.01s call     .pybuild/cpython3_3.13_sdjson/build/tests/stdlib_tests/test_recursion.py::test_highly_nested_objects_decoding

(22 durations < 0.005s hidden.  Use -vv to show these durations.)
=========================== short test summary info ============================
FAILED tests/stdlib_tests/test_fail.py::test_unexpected_data[[42,]-Expecting value-4] - AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'
FAILED tests/stdlib_tests/test_fail.py::test_unexpected_data[["spam",]-Expecting value-8] - AssertionError: assert 'Illegal trai... end of array' == 'Expecting value'
FAILED tests/stdlib_tests/test_fail.py::test_unexpected_data[{"spam":42,}-Expecting property name enclosed in double quotes-11] - AssertionError: assert 'Illegal trai...end of object' == 'Expecting pr...do...
=================== 3 failed, 147 passed, 4 xfailed in 0.61s ===================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_sdjson/build; python3.13 -m pytest -v --ignore=tests/test_protocols.py
I: pybuild pybuild:308: ln -s test_overloading_ tests/test_overloading
E: pybuild pybuild:389: test: plugin pyproject failed with: [('/<<PKGBUILDDIR>>/tests/test_overloading/test_overloading_', '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_sdjson/build/tests/test_overloading/test_overloading_', "[Errno 40] Too many levels of symbolic links: '/<<PKGBUILDDIR>>/tests/test_overloading/test_overloading_'"), ('/<<PKGBUILDDIR>>/tests/test_overloading_/test_overloading_', '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_sdjson/build/tests/test_overloading_/test_overloading_', "[Errno 40] Too many levels of symbolic links: '/<<PKGBUILDDIR>>/tests/test_overloading_/test_overloading_'")]
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13
make: *** [debian/rules:11: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-19T07:47:55Z


If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/788826/

This bug has been filed at "normal" severity, as we haven't started the
transition to add 3.13 as a supported version, yet. This will be raised to RC
as soon as that happens, hopefully well before trixie.

Thanks,

Stefano



Set Bug forwarded-to-address to 'https://github.com/domdfcoding/singledispatch-json/issues/55'. Request was from Andrey Rakhmatullin <wrar@debian.org> to control@bugs.debian.org. (Sun, 06 Oct 2024 12:21:02 GMT) (full text, mbox, link).


Severity set to 'serious' from 'normal' Request was from Stefano Rivera <stefanor@debian.org> to control@bugs.debian.org. (Wed, 13 Nov 2024 09:45:25 GMT) (full text, mbox, link).


Reply sent to Colin Watson <cjwatson@debian.org>:
You have taken responsibility. (Wed, 13 Nov 2024 13:18:02 GMT) (full text, mbox, link).


Notification sent to Stefano Rivera <stefanor@debian.org>:
Bug acknowledged by developer. (Wed, 13 Nov 2024 13:18:02 GMT) (full text, mbox, link).


Message #14 received at 1082269-close@bugs.debian.org (full text, mbox, reply):

From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>
To: 1082269-close@bugs.debian.org
Subject: Bug#1082269: fixed in python-sdjson 0.5.0-3
Date: Wed, 13 Nov 2024 13:15:52 +0000
[Message part 1 (text/plain, inline)]
Source: python-sdjson
Source-Version: 0.5.0-3
Done: Colin Watson <cjwatson@debian.org>

We believe that the bug you reported is fixed in the latest version of
python-sdjson, 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 1082269@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Colin Watson <cjwatson@debian.org> (supplier of updated python-sdjson 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 ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Wed, 13 Nov 2024 12:18:31 +0000
Source: python-sdjson
Architecture: source
Version: 0.5.0-3
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <team+python@tracker.debian.org>
Changed-By: Colin Watson <cjwatson@debian.org>
Closes: 1082269
Changes:
 python-sdjson (0.5.0-3) unstable; urgency=medium
 .
   * Team upload.
   * Sacrifice version number to dgit upload issues.
 .
 python-sdjson (0.5.0-2) unstable; urgency=medium
 .
   * Team upload.
   * Fix tests on Python 3.13 (closes: #1082269).
Checksums-Sha1:
 5d1d74032ff31225c4d60be8b8ae932303b4578f 2524 python-sdjson_0.5.0-3.dsc
 1bc3a83cf86390e7eb4b7e5c21b116b17f1cc1d3 9812 python-sdjson_0.5.0-3.debian.tar.xz
Checksums-Sha256:
 913f29d8b00742e1a559d2d92c679f69ee3401f60568edca330e5b68ac43de45 2524 python-sdjson_0.5.0-3.dsc
 3bd6334b1528b2c64d76f4b929cf0c66ad33cfaefd6afee8b4dc2c1f3a7d3d29 9812 python-sdjson_0.5.0-3.debian.tar.xz
Files:
 f89a2e3b74df85e2cdc87ca5728a5226 2524 python optional python-sdjson_0.5.0-3.dsc
 cee3eb67d18b39d0bfd99f7056d27d62 9812 python optional python-sdjson_0.5.0-3.debian.tar.xz

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEErApP8SYRtvzPAcEROTWH2X2GUAsFAmc0mXEACgkQOTWH2X2G
UAtWOw//eUhi5sSbL0b7ZXf+qgYf3pm/9TyYJKn102K6peW1JFGz7JzMyb5N70VE
NOkGCi9DWFNFC7LnTrcaszrGjmtqppo2bo/YuER6e23Q3BiQ51TdlkyiVtBL7UIa
ClvL+rTGZHpPsDT10HvFUgKuhj7E5ObwunOgVolFlCUNdY6U53ICH80KjiKBY5Jf
becDVz4Tv9d6bfOxCi7z/uyEi+0eGRDv8+Z5SyGGaZMmuegoCxDP0AKAmPNoUQvj
IdXrlzpttpN8nDPMvwY2Ji757r4Q8dkEVxReklNPYIeEClflKyu/PrH9IBr8tto+
s1HziKByrfzad1MfIy/DLGkaCpkQeWe84v8ywB/G2qYyz/BNuiy4mcNihQyoUT9k
gNN1oPAHOdKDXq7Q3EDpFIsPehpJICDjhgE7deSWwf0SoKUdbvnv+qxYeogxwn2E
2RxLziTUEnGplkf2C2b5N1xX+lp/vww5THRikUTmOXUNkiph4ikPsDH4MIOaTwVb
MtPyHeO7ndgOBTEMwvhcFxT2JE638fSTyg5HX/5HqCZel0scxcun6uKezXjEhxag
0/HchG7nIgHh1YFx0bFzGVIuHtb1WeVnpvkMVim6HDZPfR2FKRWCOYI9chQemKR4
XzK0AKa7t5MrwDDbEfqMUr+inSKbd7GrZDbw32ZPNkPs4N0tdLc=
=Ly7f
-----END PGP SIGNATURE-----

[Message part 2 (application/pgp-signature, inline)]

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Tue Dec 3 22:49:30 2024; Machine Name: bembo

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.