Package: python-flask-limiter-doc
Version: 3.5.1-1
Severity: wishlist
Tags: patch

Dear Maintainer,

I'm an occasional volunteer contributor to the Reproducible Builds[1] project,
and recently noticed that python-flask-limiter-docs package failed to build
reproducibly during automated reproducible build testing[2] and also during a
reprotest build[3] on Salsa-CI.

The origin of the non-reproducibility demonstrated in both of those cases is
that a command[4] invoked by the Sphinx-based documentation project markup
produces nondeterministic output.

In particular, the output involves iteration over a set of HTTP methods
associated with a flask (Python web framework) view.  The methods are
placed[5] on the relevant Python object by the werkzeug Python library, and
are stored within an Python set object that is unordered[6].

Because the storage (and therefore retrieval) ordering of the elements in the
set is based on Python's object hashing, it is non-deterministic by default
and varies at build-time.

We can fix this within Debian's packaging by configuring the PYTHONHASHSEED[7]
to use a deterministic value.  The value of zero (0) appears to be most common
within existing debian/rules files, based on codesearch[8].

I'll open a merge request on Salsa to suggest that modification and will link
that to the bug here.

Regards,
James

[1] - https://reproducible-builds.org/

[2] - 
https://tests.reproducible-builds.org/debian/rb-pkg/trixie/amd64/diffoscope-results/flask-limiter.html

[3] - https://salsa.debian.org/python-team/packages/flask-limiter/-/jobs/5335790

[4] - 
https://sources.debian.org/src/flask-limiter/3.5.1-1/doc/source/cli.rst/#L60-L61

[5] - 
https://sources.debian.org/src/python-werkzeug/3.0.1-2/src/werkzeug/routing/rules.py/#L477

[6] - https://docs.python.org/3.11/library/stdtypes.html#set-types-set-frozenset

[7] - https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED

[8] - 
https://codesearch.debian.net/search?q=path%3Adebian%2Frules+PYTHONHASHSEED

Reply via email to