Your message dated Sat, 13 Aug 2022 16:18:49 +0000
with message-id <e1omtqb-005cqn...@fasolo.debian.org>
and subject line Bug#1016453: fixed in python-bonsai 1.3.0+ds-4
has caused the Debian Bug report #1016453,
regarding python-tornado breaks python-bonsai autopkgtest: 
'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
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 ow...@bugs.debian.org
immediately.)


-- 
1016453: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1016453
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: python-tornado, python-bonsai
Control: found -1 python-tornado/6.2.0-1
Control: found -1 python-bonsai/1.3.0+ds-3
Severity: serious
Tags: sid bookworm
User: debian...@lists.debian.org
Usertags: breaks needs-update

Dear maintainer(s),

With a recent upload of python-tornado the autopkgtest of python-bonsai fails in testing when that autopkgtest is run with the binary packages of python-tornado from unstable. It passes when run with only packages from testing. In tabular form:

                       pass            fail
python-tornado         from testing    6.2.0-1
python-bonsai          from testing    1.3.0+ds-3
all others             from testing    from testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration of python-tornado to testing [1]. Due to the nature of this issue, I filed this bug report against both packages. Can you please investigate the situation and reassign the bug to the right package?

More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=python-tornado

https://ci.debian.net/data/autopkgtest/testing/amd64/p/python-bonsai/24205871/log.gz

=================================== FAILURES =================================== ________________ TornadoLDAPConnectionTest.test_add_and_delete _________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_add_and_delete>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
__________________ TornadoLDAPConnectionTest.test_connection ___________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_connection>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
_______________ TornadoLDAPConnectionTest.test_modify_and_rename _______________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_modify_and_rename>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
____________________ TornadoLDAPConnectionTest.test_obj_err ____________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_obj_err>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
_________________ TornadoLDAPConnectionTest.test_paged_search __________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_paged_search>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
__________ TornadoLDAPConnectionTest.test_paged_search_with_auto_acq ___________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_paged_search_with_auto_acq>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
_______________ TornadoLDAPConnectionTest.test_recursive_delete ________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_recursive_delete>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
____________________ TornadoLDAPConnectionTest.test_search _____________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_search>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
____________________ TornadoLDAPConnectionTest.test_whoami _____________________

self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_whoami>

    def tearDown(self) -> None:
        # Native coroutines tend to produce warnings if they're not
        # allowed to run to completion. It's difficult to ensure that
        # this always happens in tests, so cancel any tasks that are
        # still pending by the time we get here.
        asyncio_loop = self.io_loop.asyncio_loop  # type: ignore
        if hasattr(asyncio, "all_tasks"):  # py37
            tasks = asyncio.all_tasks(asyncio_loop)  # type: ignore
        else:
            tasks = asyncio.Task.all_tasks(asyncio_loop)
        # Tasks that are done may still appear here and may contain
        # non-cancellation exceptions, so filter them out.
        tasks = [t for t in tasks if not t.done()]  # type: ignore
        for t in tasks:
            t.cancel()
        # Allow the tasks to run and finalize themselves (which means
        # raising a CancelledError inside the coroutine). This may
        # just transform the "task was destroyed but it is pending"
        # warning into a "uncaught CancelledError" warning, but
        # catching CancelledErrors in coroutines that may leak is
        # simpler than ensuring that no coroutines leak.
        if tasks:
done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
            assert not pending
# If any task failed with anything but a CancelledError, raise it.
            for f in done:
                try:
                    f.result()
                except asyncio.CancelledError:
                    pass

        # Clean up Subprocess, so it can be used again with a new ioloop.
        Subprocess.uninitialize()
        with warnings.catch_warnings():
            warnings.simplefilter("ignore", DeprecationWarning)
            self.io_loop.clear_current()
        if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS):
            # Try to clean up any file descriptors left open in the ioloop.
            # This avoids leaks, especially when tests are run repeatedly
            # in the same process with autoreload (because curl does not
            # set FD_CLOEXEC on its file descriptors)
            self.io_loop.close(all_fds=True)
>       if self.should_close_asyncio_loop:
E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'

/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message ---
Source: python-bonsai
Source-Version: 1.3.0+ds-4
Done: Robin Jarry <ro...@jarry.cc>

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

Debian distribution maintenance software
pp.
Robin Jarry <ro...@jarry.cc> (supplier of updated python-bonsai 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 ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sat, 13 Aug 2022 16:28:19 +0200
Source: python-bonsai
Architecture: source
Version: 1.3.0+ds-4
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <team+pyt...@tracker.debian.org>
Changed-By: Robin Jarry <ro...@jarry.cc>
Closes: 1016453
Changes:
 python-bonsai (1.3.0+ds-4) unstable; urgency=medium
 .
   [ Andreas Hasenack ]
   * d/t/smoke: fix ldapwhoami command-line parameter
   * d/t/smoke: move set -e to the top
   * d/t/smoke: load ppolicy.ldif only once
   * d/t/smoke: less greedy chown
   * d/t/smoke: don't make /var/log/world writable
 .
   [ Robin Jarry ]
   * Fix tests with tornado 6.2.0 (Closes: #1016453)
Checksums-Sha1:
 526b6a004394cc42562caa57741c440b114f6e7e 1887 python-bonsai_1.3.0+ds-4.dsc
 0b08f312b65b829ece1b41988bb1fd96d76e0a61 5352 
python-bonsai_1.3.0+ds-4.debian.tar.xz
 5afaff0273f59f6062bf6f4a86c9a2d460d7f6d5 8053 
python-bonsai_1.3.0+ds-4_source.buildinfo
Checksums-Sha256:
 dc40788cfaecbeaf6a03fccd5febdb080ca64e94a598a8337299f84366ded652 1887 
python-bonsai_1.3.0+ds-4.dsc
 b8fd325f5a00bf695ce218ec539dadfc97fca878bcff059bb58cc17d16527fe1 5352 
python-bonsai_1.3.0+ds-4.debian.tar.xz
 f460588dacfd645f230399de79e6e6616915b038663666583a4d6832e0bb4cc0 8053 
python-bonsai_1.3.0+ds-4_source.buildinfo
Files:
 5088dc486f219f923bf2b7455fedcea9 1887 python optional 
python-bonsai_1.3.0+ds-4.dsc
 76babb7c51377ce442cb1e78c8e38782 5352 python optional 
python-bonsai_1.3.0+ds-4.debian.tar.xz
 22504372b9eaa1e60d6a1bb444061121 8053 python optional 
python-bonsai_1.3.0+ds-4_source.buildinfo

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

iIUEARYKAC0WIQTYtqmQfDq3IEKLYGhicY4NZm/DNQUCYve8pA8ccm9iaW5AamFy
cnkuY2MACgkQYnGODWZvwzXyxAEAsEN3+EOCKt9PlpJ4Y5W8xZAXGY8CTpuzM4zu
ARccDSUBAOUuvnwBQt3t2b6TOapYIiDtCYEAz0R7A+dB+BvSuiYO
=62DO
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to