--- Begin Message ---
Source: pyrate-limiter
Version: 3.9.0-1
Severity: serious
Justification: FTBFS
Tags: forky sid ftbfs
User: [email protected]
Usertags: ftbfs-20250919 ftbfs-forky
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
The full build log is available from:
http://qa-logs.debian.net/2025/09/19/pyrate-limiter_3.9.0-1_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250919;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250919&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
--
Relevant part of the build log (hopefully):
> make[1]: Entering directory '/build/reproducible-path/pyrate-limiter-3.9.0'
> dh_auto_build override_dh_auto_build --buildsystem=pybuild
> I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build"
> module
> I: pybuild base:311: python3.13 -m build --skip-dependency-check
> --no-isolation --wheel --outdir
> /build/reproducible-path/pyrate-limiter-3.9.0/.pybuild/cpython3_3.13
> * Building wheel...
> Successfully built pyrate_limiter-3.9.0-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with
> "installer" module
> cd docs; PYTHONPATH=/build/reproducible-path/pyrate-limiter-3.9.0
> LC_ALL=C.UTF-8 LANGUAGE=C.UTF-8 sphinx-build -bhtml -d _build/doctrees .
> _build/html
> Running Sphinx v8.2.3
> loading translations [en]... done
> WARNING: while setting up extension sphinxcontrib.apidoc: Failed to convert
> [[<class 'str'>]] to a frozenset
> making output directory... done
> Converting `source_suffix = ['.rst', '.md']` to `source_suffix = {'.rst':
> 'restructuredtext', '.md': 'restructuredtext'}`.
> [autosummary] generating autosummary for: changelog.md, contributing.md,
> index.md, reference.md
> loading intersphinx inventory 'python' from
> https://docs.python.org/3/objects.inv ...
> WARNING: failed to reach any of the inventories with the following issues:
> intersphinx inventory 'https://docs.python.org/3/objects.inv' not fetchable
> due to <class 'requests.exceptions.ConnectionError'>:
> HTTPSConnectionPool(host='docs.python.org', port=443): Max retries exceeded
> with url: /3/objects.inv (Caused by
> NameResolutionError("<urllib3.connection.HTTPSConnection object at
> 0x7f4b96584440>: Failed to resolve 'docs.python.org' ([Errno -3] Temporary
> failure in name resolution)"))
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.clocks.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.exceptions.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.limiter.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.limiter_factory.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.utils.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.bucket.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.clock.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.rate.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.wrappers.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.in_memory_bucket.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.mp_bucket.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.postgres.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.redis_bucket.rst.
> Creating file
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.sqlite_bucket.rst.
> myst v4.0.1: MdParserConfig(commonmark_only=False, gfm_only=False,
> enable_extensions={'html_image'}, disable_syntax=[],
> all_links_external=False, links_external_new_tab=False, url_schemes=('http',
> 'https', 'mailto', 'ftp'), ref_domains=None, fence_as_directive=set(),
> number_code_blocks=[], title_to_header=False, heading_anchors=0,
> heading_slug_func=None, html_meta={}, footnote_sort=True,
> footnote_transition=True, words_per_minute=200, substitutions={},
> linkify_fuzzy_links=True, dmath_allow_labels=True, dmath_allow_space=True,
> dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True,
> mathjax_classes='tex2jax_process|mathjax_process|math|output_area',
> enable_checkboxes=False, suppress_warnings=[], highlight_code_blocks=True)
> building [mo]: targets for 0 po files that are out of date
> writing output...
> building [html]: targets for 4 source files that are out of date
> updating environment: [new config] 21 added, 0 changed, 0 removed
> reading sources... [ 5%] changelog
> reading sources... [ 10%] contributing
> reading sources... [ 14%] index
> reading sources... [ 19%] modules/pyrate_limiter
> reading sources... [ 24%] modules/pyrate_limiter.abstracts
> reading sources... [ 29%] modules/pyrate_limiter.abstracts.bucket
> reading sources... [ 33%] modules/pyrate_limiter.abstracts.clock
> reading sources... [ 38%] modules/pyrate_limiter.abstracts.rate
> reading sources... [ 43%] modules/pyrate_limiter.abstracts.wrappers
> reading sources... [ 48%] modules/pyrate_limiter.buckets
> reading sources... [ 52%] modules/pyrate_limiter.buckets.in_memory_bucket
> reading sources... [ 57%] modules/pyrate_limiter.buckets.mp_bucket
> reading sources... [ 62%] modules/pyrate_limiter.buckets.postgres
> reading sources... [ 67%] modules/pyrate_limiter.buckets.redis_bucket
> reading sources... [ 71%] modules/pyrate_limiter.buckets.sqlite_bucket
> reading sources... [ 76%] modules/pyrate_limiter.clocks
> reading sources... [ 81%] modules/pyrate_limiter.exceptions
> reading sources... [ 86%] modules/pyrate_limiter.limiter
> reading sources... [ 90%] modules/pyrate_limiter.limiter_factory
> reading sources... [ 95%] modules/pyrate_limiter.utils
> reading sources... [100%] reference
>
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency...
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.rst:
> WARNING: document isn't included in any toctree [toc.not_included]
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.abstracts
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.bucket.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.abstracts', 'reference'], selecting: reference <-
> modules/pyrate_limiter.abstracts.bucket
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.clock.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.abstracts', 'reference'], selecting: reference <-
> modules/pyrate_limiter.abstracts.clock
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.rate.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.abstracts', 'reference'], selecting: reference <-
> modules/pyrate_limiter.abstracts.rate
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.abstracts.wrappers.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.abstracts', 'reference'], selecting: reference <-
> modules/pyrate_limiter.abstracts.wrappers
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.buckets
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.in_memory_bucket.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.buckets', 'reference'], selecting: reference <-
> modules/pyrate_limiter.buckets.in_memory_bucket
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.mp_bucket.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.buckets', 'reference'], selecting: reference <-
> modules/pyrate_limiter.buckets.mp_bucket
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.postgres.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.buckets', 'reference'], selecting: reference <-
> modules/pyrate_limiter.buckets.postgres
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.redis_bucket.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.buckets', 'reference'], selecting: reference <-
> modules/pyrate_limiter.buckets.redis_bucket
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.buckets.sqlite_bucket.rst:
> document is referenced in multiple toctrees:
> ['modules/pyrate_limiter.buckets', 'reference'], selecting: reference <-
> modules/pyrate_limiter.buckets.sqlite_bucket
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.clocks.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.clocks
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.exceptions.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.exceptions
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.limiter.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.limiter
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.limiter_factory.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.limiter_factory
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/modules/pyrate_limiter.utils.rst:
> document is referenced in multiple toctrees: ['modules/pyrate_limiter',
> 'reference'], selecting: reference <- modules/pyrate_limiter.utils
> done
> preparing documents... done
> copying assets...
> copying static files...
> Writing evaluated template result to
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/_build/html/_static/basic.css
> Writing evaluated template result to
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/_build/html/_static/language_data.js
> Writing evaluated template result to
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/_build/html/_static/documentation_options.js
> Writing evaluated template result to
> /build/reproducible-path/pyrate-limiter-3.9.0/docs/_build/html/_static/copybutton.js
> copying static files: done
> copying extra files...
> copying extra files: done
> copying assets: done
> writing output... [ 5%] changelog
> writing output... [ 10%] contributing
> writing output... [ 14%] index
> writing output... [ 19%] modules/pyrate_limiter
> writing output... [ 24%] modules/pyrate_limiter.abstracts
> writing output... [ 29%] modules/pyrate_limiter.abstracts.bucket
> writing output... [ 33%] modules/pyrate_limiter.abstracts.clock
> writing output... [ 38%] modules/pyrate_limiter.abstracts.rate
> writing output... [ 43%] modules/pyrate_limiter.abstracts.wrappers
> writing output... [ 48%] modules/pyrate_limiter.buckets
> writing output... [ 52%] modules/pyrate_limiter.buckets.in_memory_bucket
> writing output... [ 57%] modules/pyrate_limiter.buckets.mp_bucket
> writing output... [ 62%] modules/pyrate_limiter.buckets.postgres
> writing output... [ 67%] modules/pyrate_limiter.buckets.redis_bucket
> writing output... [ 71%] modules/pyrate_limiter.buckets.sqlite_bucket
> writing output... [ 76%] modules/pyrate_limiter.clocks
> writing output... [ 81%] modules/pyrate_limiter.exceptions
> writing output... [ 86%] modules/pyrate_limiter.limiter
> writing output... [ 90%] modules/pyrate_limiter.limiter_factory
> writing output... [ 95%] modules/pyrate_limiter.utils
> writing output... [100%] reference
>
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1801: WARNING: 'myst'
> cross-reference target not found: 'pyrate_limiter.limiter_factory.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1807: WARNING: 'myst'
> cross-reference target not found: 'examples/asyncio_ratelimit.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1808: WARNING: 'myst'
> cross-reference target not found: 'examples/asyncio_decorator.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1809: WARNING: 'myst'
> cross-reference target not found: 'examples/httpx_ratelimiter.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1810: WARNING: 'myst'
> cross-reference target not found: 'examples/in_memory_multiprocess.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:1811: WARNING: 'myst'
> cross-reference target not found: 'examples/sql_filelock_multiprocess.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2020: WARNING: 'myst'
> cross-reference target not found: 'examples/asyncio_ratelimit.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2062: WARNING: 'myst'
> cross-reference target not found: 'examples/asyncio_decorator.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2114: WARNING: 'myst'
> cross-reference target not found: 'advanced-usage' [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2243: WARNING: 'myst'
> cross-reference target not found: 'examples/in_memory_multiprocess.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2321: WARNING: 'myst'
> cross-reference target not found: 'pyrate_limiter/limiter_factory.py'
> [myst.xref_missing]
> /build/reproducible-path/pyrate-limiter-3.9.0/README.md:2345: WARNING: 'myst'
> cross-reference target not found: 'pyrate_limiter/limiter_factory.py'
> [myst.xref_missing]
> generating indices... genindex py-modindex done
> writing additional pages... search done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 15 warnings.
>
> The HTML pages are in _build/html.
> make[1]: Leaving directory '/build/reproducible-path/pyrate-limiter-3.9.0'
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild pybuild:308: redis-server --daemonize yes
> 110:C 18 Sep 2025 14:39:32.589 # WARNING Memory overcommit must be enabled!
> Without it, a background save or replication may fail under low memory
> condition. Being disabled, it can also cause failures without low memory
> condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this
> issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or
> run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
> I: pybuild base:311: cd
> /build/reproducible-path/pyrate-limiter-3.9.0/.pybuild/cpython3_3.13/build;
> python3.13 -m pytest -x -k "not postgres and not test_limiter_constructor_02"
> ============================= test session starts
> ==============================
> platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0
> rootdir:
> /build/reproducible-path/pyrate-limiter-3.9.0/.pybuild/cpython3_3.13/build
> configfile: pyproject.toml
> plugins: asyncio-1.1.0, typeguard-4.4.4, cov-5.0.0
> asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=function,
> asyncio_default_test_loop_scope=function
> collected 876 items / 263 deselected / 613 selected
>
> tests/test_bucket_all.py ............................................... [
> 7%]
> ...........................F
>
> =================================== FAILURES
> ===================================
> ________________ test_bucket_leak[clock0-create_sqlite_bucket]
> _________________
>
> clock = <pyrate_limiter.clocks.MonotonicClock object at 0x7fe265713a10>
> create_bucket = <function create_sqlite_bucket at 0x7fe26557ede0>
>
> @pytest.mark.asyncio
> async def test_bucket_leak(clock: ClockSet, create_bucket):
> rates = [Rate(100, 3000)]
> bucket = BucketAsyncWrapper(await create_bucket(rates))
>
> while await bucket.count() < 200:
> await bucket.put(RateItem("item", await get_now(clock)))
>
> await bucket.leak(await get_now(clock))
> > assert await bucket.count() == 100
> E assert 49 == 100
>
> tests/test_bucket_all.py:205: AssertionError
> ----------------------------- Captured stderr call
> -----------------------------
> INFO:pyrate_limiter:SQLite db path: /tmp/pyrate_limiter_jxNBX.sqlite
> INFO:pyrate_limiter.limiter_factory:table_name='pyrate-test-bucket-Zhuk96jc1u'
> ------------------------------ Captured log call
> -------------------------------
> INFO pyrate_limiter:conftest.py:96 SQLite db path:
> /tmp/pyrate_limiter_jxNBX.sqlite
> INFO pyrate_limiter.limiter_factory:limiter_factory.py:43
> table_name='pyrate-test-bucket-Zhuk96jc1u'
> =========================== short test summary info
> ============================
> FAILED tests/test_bucket_all.py::test_bucket_leak[clock0-create_sqlite_bucket]
> !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures
> !!!!!!!!!!!!!!!!!!!!!!!!!!!
> =========== 1 failed, 74 passed, 263 deselected in 213.03s (0:03:33)
> ===========
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd
> /build/reproducible-path/pyrate-limiter-3.9.0/.pybuild/cpython3_3.13/build;
> python3.13 -m pytest -x -k "not postgres and not test_limiter_constructor_02"
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13
> returned exit code 13
--- End Message ---