{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.2DseL4vX/b1/python-cyclopts_3.12.0-3_arm64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.2DseL4vX/b2/python-cyclopts_3.12.0-3_arm64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- 82fce5cee7c94b5dd7087bff4142a814 266084 doc optional python-cyclopts-doc_3.12.0-3_all.deb\n+ 575e7db34f4bf0ff74a988081d9ffdfc 266088 doc optional python-cyclopts-doc_3.12.0-3_all.deb\n 750c7349b6884fd4d993b24bb3bab5c1 56940 python optional python3-cyclopts_3.12.0-3_all.deb\n"}, {"source1": "python-cyclopts-doc_3.12.0-3_all.deb", "source2": "python-cyclopts-doc_3.12.0-3_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-07-28 13:07:48.000000 debian-binary\n -rw-r--r-- 0 0 0 4916 2025-07-28 13:07:48.000000 control.tar.xz\n--rw-r--r-- 0 0 0 260976 2025-07-28 13:07:48.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 260980 2025-07-28 13:07:48.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/python-cyclopts-doc/html/api.html", "source2": "./usr/share/doc/python-cyclopts-doc/html/api.html", "unified_diff": "@@ -2325,22 +2325,22 @@\n

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=True, ext=()),))]

\n \n \n
\n
\n cyclopts.types.ResolvedPath\uf0c1
\n

A Path file or directory. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.ResolvedExistingPath\uf0c1
\n

A Path file or directory that must exist. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.Directory\uf0c1
\n

A Path that must be a directory (or not exist).

\n

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=False, dir_okay=True, ext=()),))]

\n@@ -2353,22 +2353,22 @@\n

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=False, dir_okay=True, ext=()),))]

\n
\n \n
\n
\n cyclopts.types.ResolvedDirectory\uf0c1
\n

A Path directory. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=False, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=False, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.ResolvedExistingDirectory\uf0c1
\n

A Path directory that must exist. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=False, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=False, dir_okay=True, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.File\uf0c1
\n

A File that must be a file (or not exist).

\n

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=True, dir_okay=False, ext=()),))]

\n@@ -2381,22 +2381,22 @@\n

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=False, ext=()),))]

\n
\n \n
\n
\n cyclopts.types.ResolvedFile\uf0c1
\n

A Path file. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=True, dir_okay=False, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=True, dir_okay=False, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.ResolvedExistingFile\uf0c1
\n

A Path file that must exist. resolve() is invoked prior to returning the path.

\n-

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=False, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff87c49da0>)]

\n+

alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_okay=True, dir_okay=False, ext=()),)), Parameter(converter=<function _path_resolve_converter at 0xffff9c479da0>)]

\n
\n \n
\n
\n cyclopts.types.BinPath\uf0c1
\n

A Path that must have extension bin.

\n

alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_okay=True, dir_okay=False, ext=('bin',)),))]

\n@@ -2646,40 +2646,40 @@\n app()\n \n \n
$ my-script '{"foo": 1, "bar": 2}'\n {'foo': 1, 'bar': 2}\n 
\n
\n-

alias of Annotated[Any, Parameter(converter=<function _json_converter at 0xffff87c49bc0>)]

\n+

alias of Annotated[Any, Parameter(converter=<function _json_converter at 0xffff9c479bc0>)]

\n
\n \n \n
\n

Web\uf0c1

\n

Annotated types for common web-related values.

\n
\n
\n cyclopts.types.Email\uf0c1
\n

An email address string with simple validation.

\n-

alias of Annotated[str, Parameter(validator=(<function _email_validator at 0xffff87c49620>,))]

\n+

alias of Annotated[str, Parameter(validator=(<function _email_validator at 0xffff9c479620>,))]

\n
\n \n
\n
\n cyclopts.types.Port\uf0c1
\n

An int limited to range [0, 65535].

\n

alias of Annotated[int, Parameter(validator=(Number(lt=None, lte=65535, gt=None, gte=0, modulo=None),))]

\n
\n \n
\n
\n cyclopts.types.URL\uf0c1
\n

A str URL string with some simple validation.

\n-

alias of Annotated[str, Parameter(validator=(<function _url_validator at 0xffff87c49580>,))]

\n+

alias of Annotated[str, Parameter(validator=(<function _url_validator at 0xffff9c479580>,))]

\n
\n \n
\n \n
\n

Config\uf0c1

\n

Cyclopts has builtin configuration classes to be used with App.config for loading user-defined defaults in many common scenarios.\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1616,59 +1616,59 @@\n A Path file or directory that must exist.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=True, dir_okay=True, ext=()),))]\n cyclopts.types.ResolvedPath\uf0c1\n A Path file or directory. resolve() is invoked prior to returning the\n path.\n alias of Annotated[Path, Parameter(converter=)]\n+ converter at 0xffff9c479da0>)]\n cyclopts.types.ResolvedExistingPath\uf0c1\n A Path file or directory that must exist. resolve() is invoked prior to\n returning the path.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=True, dir_okay=True, ext=()),)), Parameter(converter=)]\n+ path_resolve_converter at 0xffff9c479da0>)]\n cyclopts.types.Directory\uf0c1\n A Path that must be a directory (or not exist).\n alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_\n okay=False, dir_okay=True, ext=()),))]\n cyclopts.types.ExistingDirectory\uf0c1\n A Path directory that must exist.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=False, dir_okay=True, ext=()),))]\n cyclopts.types.ResolvedDirectory\uf0c1\n A Path directory. resolve() is invoked prior to returning the path.\n alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_\n okay=False, dir_okay=True, ext=()),)), Parameter(converter=)]\n+ path_resolve_converter at 0xffff9c479da0>)]\n cyclopts.types.ResolvedExistingDirectory\uf0c1\n A Path directory that must exist. resolve() is invoked prior to returning\n the path.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=False, dir_okay=True, ext=()),)), Parameter(converter=)]\n+ path_resolve_converter at 0xffff9c479da0>)]\n cyclopts.types.File\uf0c1\n A File that must be a file (or not exist).\n alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_\n okay=True, dir_okay=False, ext=()),))]\n cyclopts.types.ExistingFile\uf0c1\n A Path file that must exist.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=True, dir_okay=False, ext=()),))]\n cyclopts.types.ResolvedFile\uf0c1\n A Path file. resolve() is invoked prior to returning the path.\n alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_\n okay=True, dir_okay=False, ext=()),)), Parameter(converter=)]\n+ path_resolve_converter at 0xffff9c479da0>)]\n cyclopts.types.ResolvedExistingFile\uf0c1\n A Path file that must exist. resolve() is invoked prior to returning the\n path.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n okay=True, dir_okay=False, ext=()),)), Parameter(converter=)]\n+ path_resolve_converter at 0xffff9c479da0>)]\n cyclopts.types.BinPath\uf0c1\n A Path that must have extension bin.\n alias of Annotated[Path, Parameter(validator=(Path(exists=False, file_\n okay=True, dir_okay=False, ext=('bin',)),))]\n cyclopts.types.ExistingBinPath\uf0c1\n A Path that must exist and have extension bin.\n alias of Annotated[Path, Parameter(validator=(Path(exists=True, file_\n@@ -1814,29 +1814,29 @@\n def main(json: types.Json):\n print(json)\n \n app()\n $ my-script '{\"foo\": 1, \"bar\": 2}'\n {'foo': 1, 'bar': 2}\n alias of Annotated[Any, Parameter(converter=)]\n+ 0xffff9c479bc0>)]\n **** Web\uf0c1 ****\n Annotated types for common web-related values.\n cyclopts.types.Email\uf0c1\n An email address string with simple validation.\n alias of Annotated[str, Parameter(validator=(,))]\n+ at 0xffff9c479620>,))]\n cyclopts.types.Port\uf0c1\n An int limited to range [0, 65535].\n alias of Annotated[int, Parameter(validator=(Number(lt=None, lte=65535,\n gt=None, gte=0, modulo=None),))]\n cyclopts.types.URL\uf0c1\n A str URL string with some simple validation.\n alias of Annotated[str, Parameter(validator=(,))]\n+ 0xffff9c479580>,))]\n ***** Config\uf0c1 *****\n Cyclopts has builtin configuration classes to be used with App.config for\n loading user-defined defaults in many common scenarios. All Cyclopts builtins\n index into the configuration file with the following rules:\n 1. Apply root_keys (if provided) to enter the project's configuration\n namespace.\n 2. Apply the command name(s) to enter the current command's configuration\n"}]}, {"source1": "./usr/share/doc/python-cyclopts-doc/html/searchindex.js", "source2": "./usr/share/doc/python-cyclopts-doc/html/searchindex.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1491,18 +1491,18 @@\n \"01\": 25,\n \"0287\": 18,\n \"05\": 13,\n \"0b\": 25,\n \"0o\": 25,\n \"0th\": 24,\n \"0x\": 25,\n- \"0xffff87c49580\": 1,\n- \"0xffff87c49620\": 1,\n- \"0xffff87c49bc0\": 1,\n- \"0xffff87c49da0\": 1,\n+ \"0xffff9c479580\": 1,\n+ \"0xffff9c479620\": 1,\n+ \"0xffff9c479bc0\": 1,\n+ \"0xffff9c479da0\": 1,\n \"1\": [1, 2, 11, 13, 18, 19, 20, 24, 25, 26, 43, 47],\n \"10\": [1, 6, 11, 19, 24, 25, 43],\n \"100\": [1, 13, 24, 32, 43],\n \"1024\": 24,\n \"1037\": 2,\n \"11\": 11,\n \"1102\": 2,\n"}]}]}]}]}]}