Your message dated Wed, 23 Sep 2026 15:20:00 +0000
with message-id <[email protected]>
and subject line Bug#1141006: fixed in python-duniterpy 1.1.1-3.1
has caused the Debian Bug report #1141006,
regarding python-duniterpy: FTBFS: E       TypeError: __str__ returned 
non-string (type list)
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.)


-- 
1141006: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1141006
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:python-duniterpy
Version: 1.1.1-3
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-duniterpy, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild --with=sphinxdoc
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --buildsystem=pybuild --with=sphinxdoc
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild
   dh_auto_configure -O--buildsystem=pybuild
   dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:142: Building wheel for python3.14 with "build" 
module
I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation 
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14  
* Building wheel...
The "poetry.dev-dependencies" section is deprecated and will be removed in a 
future version. Use "poetry.group.dev.dependencies" instead.

[... snipped ...]

__________________ TestOutputgrammar.test_csv_cltv_condition ___________________

self = <tests.grammars.test_output.TestOutputgrammar 
testMethod=test_csv_cltv_condition>

    def test_csv_cltv_condition(self):
        condition = "(CSV(1654300) || 
(SIG(DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV) && CLTV(2594024)))"
        result = pypeg2.parse(condition, Condition)
        self.assertEqual(result.left.left.time, "1654300")
        self.assertEqual(result.left.op.name, "||")
        self.assertEqual(
            result.left.right.left.pubkey,
            "DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV",
        )
        self.assertEqual(result.left.right.op.name, "&&")
        self.assertEqual(result.left.right.right.timestamp, "2594024")
>       self.assertEqual(pypeg2.compose(result, Condition), condition)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/grammars/test_output.py:122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3/dist-packages/pypeg2/__init__.py:728: in compose
    return parser.compose(thing, grammar)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pypeg2/__init__.py:1339: in compose
    return terminal_indent() + thing.compose(self, attr_of=attr_of)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
duniterpy/grammars/output.py:393: in compose
    left = parser.compose(self.left, grammar=grammar, attr_of=attr_of)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypeg2.Parser object at 0x7f286db1cfc0>
thing = <duniterpy.grammars.output.Condition object at 0x7f286db0fcb0>
grammar = None, attr_of = None

    def compose(self, thing, grammar=None, attr_of=None):
        """Compose text using thing with grammar.
    
        Arguments:
            thing           thing containing other things with grammar
            grammar         grammar to use for composing thing
                            default: type(thing).grammar
            attr_of         if composing the value of an attribute, this
                            is a reference to the thing where this value
                            is an attribute of; None if this is not an
                            attribute value
    
        Returns text
    
        Raises:
            ValueError      if thing does not match grammar
            GrammarTypeError
                            if grammar contains an object of unkown type
            GrammarValueError
                            if grammar contains an illegal cardinality value
        """
>       logger.debug(f"Parser({self.name}).compose({thing}, {grammar})")
                                                   ^^^^^^^
E       TypeError: __str__ returned non-string (type list)

/usr/lib/python3/dist-packages/pypeg2/__init__.py:1315: TypeError
_________________ TestOutputgrammar.test_instanciate_condition _________________

self = <tests.grammars.test_output.TestOutputgrammar 
testMethod=test_instanciate_condition>

    def test_instanciate_condition(self):
        Condition.token(
            SIG.token("HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd"),
            Operator.token("||"),
            Condition.token(
                SIG.token("DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"),
                Operator.token("&&"),
                XHX.token("309BC5E644F797F53E5A2065EAF38A173437F2E6"),
            ),
        )
        condition = (
            "(SIG(HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd) || (SIG("
            "DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV) && 
XHX(309BC5E644F797F53E5A2065EAF38A173437F2E6)))"
        )
        inst = pypeg2.parse(condition, Condition)
        self.assertEqual(
            inst.left.left.pubkey, 
"HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd"
        )
        self.assertEqual(inst.left.op.name, "||")
        self.assertEqual(
            inst.left.right.left.pubkey, 
"DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV"
        )
        self.assertEqual(inst.left.right.op.name, "&&")
        self.assertEqual(
            inst.left.right.right.sha_hash, 
"309BC5E644F797F53E5A2065EAF38A173437F2E6"
        )
>       self.assertEqual(pypeg2.compose(inst, Condition), condition)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/grammars/test_output.py:150: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3/dist-packages/pypeg2/__init__.py:728: in compose
    return parser.compose(thing, grammar)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pypeg2/__init__.py:1339: in compose
    return terminal_indent() + thing.compose(self, attr_of=attr_of)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
duniterpy/grammars/output.py:393: in compose
    left = parser.compose(self.left, grammar=grammar, attr_of=attr_of)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypeg2.Parser object at 0x7f286dc68870>
thing = <duniterpy.grammars.output.Condition object at 0x7f286db0ed60>
grammar = None, attr_of = None

    def compose(self, thing, grammar=None, attr_of=None):
        """Compose text using thing with grammar.
    
        Arguments:
            thing           thing containing other things with grammar
            grammar         grammar to use for composing thing
                            default: type(thing).grammar
            attr_of         if composing the value of an attribute, this
                            is a reference to the thing where this value
                            is an attribute of; None if this is not an
                            attribute value
    
        Returns text
    
        Raises:
            ValueError      if thing does not match grammar
            GrammarTypeError
                            if grammar contains an object of unkown type
            GrammarValueError
                            if grammar contains an illegal cardinality value
        """
>       logger.debug(f"Parser({self.name}).compose({thing}, {grammar})")
                                                   ^^^^^^^
E       TypeError: __str__ returned non-string (type list)

/usr/lib/python3/dist-packages/pypeg2/__init__.py:1315: TypeError
_________________ TestOutputgrammar.test_simple_and_condition __________________

self = <tests.grammars.test_output.TestOutputgrammar 
testMethod=test_simple_and_condition>

    def test_simple_and_condition(self):
        condition = (
            "(SIG(HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd) && XHX("
            "309BC5E644F797F53E5A2065EAF38A173437F2E6))"
        )
        result = pypeg2.parse(condition, Condition)
        self.assertEqual(
            result.left.left.pubkey, 
"HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd"
        )
        self.assertEqual(result.left.op.name, "&&")
        self.assertEqual(
            result.left.right.sha_hash, 
"309BC5E644F797F53E5A2065EAF38A173437F2E6"
        )
>       self.assertEqual(pypeg2.compose(result, Condition), condition)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/grammars/test_output.py:74: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3/dist-packages/pypeg2/__init__.py:728: in compose
    return parser.compose(thing, grammar)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pypeg2/__init__.py:1339: in compose
    return terminal_indent() + thing.compose(self, attr_of=attr_of)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
duniterpy/grammars/output.py:393: in compose
    left = parser.compose(self.left, grammar=grammar, attr_of=attr_of)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypeg2.Parser object at 0x7f286db98600>
thing = <duniterpy.grammars.output.Condition object at 0x7f286dbe8520>
grammar = None, attr_of = None

    def compose(self, thing, grammar=None, attr_of=None):
        """Compose text using thing with grammar.
    
        Arguments:
            thing           thing containing other things with grammar
            grammar         grammar to use for composing thing
                            default: type(thing).grammar
            attr_of         if composing the value of an attribute, this
                            is a reference to the thing where this value
                            is an attribute of; None if this is not an
                            attribute value
    
        Returns text
    
        Raises:
            ValueError      if thing does not match grammar
            GrammarTypeError
                            if grammar contains an object of unkown type
            GrammarValueError
                            if grammar contains an illegal cardinality value
        """
>       logger.debug(f"Parser({self.name}).compose({thing}, {grammar})")
                                                   ^^^^^^^
E       TypeError: __str__ returned non-string (type list)

/usr/lib/python3/dist-packages/pypeg2/__init__.py:1315: TypeError
__________________ TestOutputgrammar.test_simple_or_condition __________________

self = <tests.grammars.test_output.TestOutputgrammar 
testMethod=test_simple_or_condition>

    def test_simple_or_condition(self):
        condition = (
            "(SIG(HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd) || XHX("
            "309BC5E644F797F53E5A2065EAF38A173437F2E6))"
        )
        result = pypeg2.parse(condition, Condition)
        self.assertEqual(
            result.left.left.pubkey, 
"HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd"
        )
        self.assertEqual(result.left.op.name, "||")
        self.assertEqual(
            result.left.right.sha_hash, 
"309BC5E644F797F53E5A2065EAF38A173437F2E6"
        )
>       self.assertEqual(pypeg2.compose(result, Condition), condition)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/grammars/test_output.py:89: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3/dist-packages/pypeg2/__init__.py:728: in compose
    return parser.compose(thing, grammar)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/pypeg2/__init__.py:1339: in compose
    return terminal_indent() + thing.compose(self, attr_of=attr_of)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
duniterpy/grammars/output.py:393: in compose
    left = parser.compose(self.left, grammar=grammar, attr_of=attr_of)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pypeg2.Parser object at 0x7f286dedef70>
thing = <duniterpy.grammars.output.Condition object at 0x7f286db080c0>
grammar = None, attr_of = None

    def compose(self, thing, grammar=None, attr_of=None):
        """Compose text using thing with grammar.
    
        Arguments:
            thing           thing containing other things with grammar
            grammar         grammar to use for composing thing
                            default: type(thing).grammar
            attr_of         if composing the value of an attribute, this
                            is a reference to the thing where this value
                            is an attribute of; None if this is not an
                            attribute value
    
        Returns text
    
        Raises:
            ValueError      if thing does not match grammar
            GrammarTypeError
                            if grammar contains an object of unkown type
            GrammarValueError
                            if grammar contains an illegal cardinality value
        """
>       logger.debug(f"Parser({self.name}).compose({thing}, {grammar})")
                                                   ^^^^^^^
E       TypeError: __str__ returned non-string (type list)

/usr/lib/python3/dist-packages/pypeg2/__init__.py:1315: TypeError
=========================== short test summary info ============================
FAILED tests/documents/test_block.py::TestBlock::test_raw_with_tx - TypeError...
FAILED tests/documents/test_transaction.py::TestTransaction::test_compact_change
FAILED tests/documents/test_transaction.py::TestTransaction::test_fromcompact
FAILED tests/documents/test_transaction.py::TestTransaction::test_fromraw_toraw
FAILED tests/grammars/test_output.py::TestOutputgrammar::test_complex_condition
FAILED tests/grammars/test_output.py::TestOutputgrammar::test_csv_cltv_condition
FAILED 
tests/grammars/test_output.py::TestOutputgrammar::test_instanciate_condition
FAILED 
tests/grammars/test_output.py::TestOutputgrammar::test_simple_and_condition
FAILED 
tests/grammars/test_output.py::TestOutputgrammar::test_simple_or_condition
======================== 9 failed, 151 passed in 2.22s =========================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.14 
--parallel=2 returned exit code 13
make: *** [debian/rules:13: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------

--- End Message ---
--- Begin Message ---
Source: python-duniterpy
Source-Version: 1.1.1-3.1
Done: Maximiliano Curia <[email protected]>

We believe that the bug you reported is fixed in the latest version of
python-duniterpy, 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.
Maximiliano Curia <[email protected]> (supplier of updated python-duniterpy 
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: Wed, 23 Sep 2026 17:15:05 +0200
Source: python-duniterpy
Architecture: source
Version: 1.1.1-3.1
Distribution: unstable
Urgency: medium
Maintainer: Debian Cryptocoin Team <[email protected]>
Changed-By: Maximiliano Curia <[email protected]>
Closes: 1141006
Changes:
 python-duniterpy (1.1.1-3.1) unstable; urgency=medium
 .
   * Non-maintainer upload.
 .
   [ Alexandre Detiste ]
   * Apply multi-arch hints.  + python-duniterpy-doc: Add Multi-Arch: foreign.
 .
   [ Maximiliano Curia ]
   * Ensure grammar classes initialize value attribute as string
     (Closes: #1141006)
Checksums-Sha1:
 6e812d8ccd93426721c393e3cf884fb51105992b 2866 python-duniterpy_1.1.1-3.1.dsc
 21dcbb3cb451e9f1a471c628ecf13faa49c4e609 6036 
python-duniterpy_1.1.1-3.1.debian.tar.xz
 08c825e8eacab99a150ba99d7d08882d0b71120c 9745 
python-duniterpy_1.1.1-3.1_source.buildinfo
Checksums-Sha256:
 d495c6becc35a86296fcf7439a3dd6a882c0c4d3a95341f9d78c0e4702f1ccb7 2866 
python-duniterpy_1.1.1-3.1.dsc
 a9817d33ab817f5294737a06ff013a8cb71982d37279b9b24211e7f35e486fc0 6036 
python-duniterpy_1.1.1-3.1.debian.tar.xz
 641f33de2e3904912471a264da0b912d45372295a1c7c2d33f8605c8c1e7263a 9745 
python-duniterpy_1.1.1-3.1_source.buildinfo
Files:
 f4980de5a5df82ddf4c26dd3178a363d 2866 python optional 
python-duniterpy_1.1.1-3.1.dsc
 fd8ae5bb01cb25d42889e9a148966830 6036 python optional 
python-duniterpy_1.1.1-3.1.debian.tar.xz
 6430b88fdb519ee09f37a220c0809539 9745 python optional 
python-duniterpy_1.1.1-3.1_source.buildinfo

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

iQIzBAEBCgAdFiEE+JIdOnQEyG4RNSIVxxl2mbKbIyoFAmqz7VcACgkQxxl2mbKb
Iyqm5A//WVBgpA4vseJsM3agzQkhzJIU3htqYqQHXpYujIyoGOMgE1XVckDx8Zqu
ppNqRVl5BSloHwdhYclNoouPemhktnf0m0b1xZ8/QD2RPv5xJrjjgCxT2660tAHL
H3arsVExlWSK0ewoaNojLA7ANF1HfeFLuIAmPjVcIO0Rm39lc2R+zt/i+aPu8O7m
Og1cFFNrbTkujqTOuC0qFHY7WdiEK6yoOr2tyr8nMZjLoaCbqV03+bvLR/wtN8LA
EPvEwHXgl+S3SO9yb5TXsGmICVF9zMdRnAyZMvfNv9xV0Qg+zA/+I5MuD3XbN3fN
c14+lLuxiTJmbt+iJLrfXGr1jQkkExEMgIrNrMzyf4wlUMBoal2JbI77OlzZO+6o
3bw28L2WOCiD4SXdJTao3e9v7eXsOfbcUyWlCoHxDwAVa9mllX5aeudTT5Y95Uz+
rs2Q3hWyf5vsADRW9+QWNF9j4tMLfOQ5LNoiuz6r16neEzFnNbglBGQdvSDlwrbQ
NKM0nQlkl/z0DcbEU216CIqgq2RcOHnPWU72Uk3GuImqO3qtsiASg8cM1H+/cEyQ
kgiGah5qe+YAIsd+KHmEN3Kw0q0GoW3i+NF9gcAuPNQPMM6sYv42340zWEHDlfnf
o/hOX7AQoN86TkAzg4LNIN6eSEVtNEKN8qTi2gEuAXJwwshnG9w=
=CD9c
-----END PGP SIGNATURE-----

Attachment: pgpDhUizR3a30.pgp
Description: PGP signature


--- End Message ---

Reply via email to