Skip to content

Commit

Permalink
Make util.typing.restify sanitise unreproducible output (eg. memory a…
Browse files Browse the repository at this point in the history
…ddresses)

Whilst working on the Reproducible Builds effort [0] I noticed that sphinx
generates output that is not reproducible, causing a number of packages in
Debian to unreproducible.

Specifically, when Sphinx locates an alias of an instance when generating
'autodoc' documentation, it uses the raw Python repr(...) of the object and
does not sanitise it for memory addresses (etc.) like elsewhere in Sphinx.

This can result in documentation like this:

-<dd><p>alias of &lt;webob.client.SendRequest object at 0x7fd769189df0&gt;</p>
+<dd><p>alias of &lt;webob.client.SendRequest object at 0x7f0f02233df0&gt;</p>

Patch attached that uses the object_description method, which was added to fix
precisely this kind of issue.

I originally filed this in Debian as bug #996948 [1].

 [0] https://reproducible-builds.org/
 [1] https://bugs.debian.org/996948
  • Loading branch information
lamby committed Oct 21, 2021
1 parent 1f77be7 commit 3284ca6
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion sphinx/util/typing.py
Expand Up @@ -144,7 +144,7 @@ def restify(cls: Optional[Type]) -> str:
else:
return _restify_py36(cls)
except (AttributeError, TypeError):
return repr(cls)
return inspect.object_description(cls)


def _restify_py37(cls: Optional[Type]) -> str:
Expand Down

0 comments on commit 3284ca6

Please sign in to comment.