Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package diffoscope for openSUSE:Factory 
checked in at 2021-11-03 17:25:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/diffoscope (Old)
 and      /work/SRC/openSUSE:Factory/.diffoscope.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "diffoscope"

Wed Nov  3 17:25:38 2021 rev:21 rq:928848 version:189

Changes:
--------
--- /work/SRC/openSUSE:Factory/diffoscope/diffoscope.changes    2021-10-15 
23:05:12.098150422 +0200
+++ /work/SRC/openSUSE:Factory/.diffoscope.new.1890/diffoscope.changes  
2021-11-03 17:26:30.585345225 +0100
@@ -1,0 +2,24 @@
+Tue Nov  2 19:29:18 UTC 2021 - Sebastian Wagner <sebix+novell....@sebix.at>
+
+- update to version 189:
+ - Try some alternative suffixes (eg. ".py") to support distributions that
+   strip or retain them. (Closes: reproducible-builds/diffoscope#283)
+ - Skip Python bytecode testing where we do not have an expected diff.
+   (Closes: reproducible-builds/diffoscope#284)
+ - Refactor the find_executable utility into an explicit method.
+ - Split out a custom call to assert_diff to support a .startswith equivalent.
+ - Use skipif instead of manual conditionals in some tests.
+ - Add an external tool reference for Guix to support ppudump and dumppdf.
+ - Update uImage test output for file(1) version 5.41.
+ - Add Arch Linux as CI test target.
+ - Add external tools on Arch Linux for ffmpeg, openssl and ocalobjinfo.
+
+-------------------------------------------------------------------
+Fri Oct 22 08:44:31 UTC 2021 - Sebastian Wagner <sebix+novell....@sebix.at>
+
+- update to version 188:
+ - Add support for Python Sphinx inventory files, usually named objects.inv.
+ - Fix Python bytecode decompilation tests with Python 3.10+.
+   (Closes: reproducible-builds/diffoscope#278)
+
+-------------------------------------------------------------------

Old:
----
  diffoscope-187.tar.bz2
  diffoscope-187.tar.bz2.asc

New:
----
  diffoscope-189.tar.bz2
  diffoscope-189.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ diffoscope.spec ++++++
--- /var/tmp/diff_new_pack.bTBHHd/_old  2021-11-03 17:26:31.113345514 +0100
+++ /var/tmp/diff_new_pack.bTBHHd/_new  2021-11-03 17:26:31.117345516 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           diffoscope
-Version:        187
+Version:        189
 Release:        0
 Summary:        In-depth comparison of files, archives, and directories
 License:        GPL-3.0-or-later

++++++ diffoscope-187.tar.bz2 -> diffoscope-189.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/debian/changelog 
new/diffoscope-189/debian/changelog
--- old/diffoscope-187/debian/changelog 2021-10-08 10:02:03.000000000 +0200
+++ new/diffoscope-189/debian/changelog 2021-10-29 10:47:06.000000000 +0200
@@ -1,3 +1,34 @@
+diffoscope (189) unstable; urgency=medium
+
+  [ Chris Lamb ]
+  * Try some alternative suffixes (eg. ".py") to support distributions that
+    strip or retain them. (Closes: reproducible-builds/diffoscope#283)
+  * Skip Python bytecode testing where we do not have an expected diff.
+    (Closes: reproducible-builds/diffoscope#284)
+  * Refactor the find_executable utility into an explicit method.
+  * Split out a custom call to assert_diff to support a .startswith equivalent.
+  * Use skipif instead of manual conditionals in some tests.
+
+  [ Vagrant Cascadian ]
+  * Add an external tool reference for Guix to support ppudump and dumppdf.
+
+  [ Sergei Trofimovich ]
+  * Update uImage test output for file(1) version 5.41.
+
+  [ Jelle van der Waa ]
+  * Add Arch Linux as CI test target.
+  * Add external tools on Arch Linux for ffmpeg, openssl and ocalobjinfo.
+
+ -- Chris Lamb <la...@debian.org>  Fri, 29 Oct 2021 09:47:04 +0100
+
+diffoscope (188) unstable; urgency=medium
+
+  * Add support for Python Sphinx inventory files, usually named objects.inv.
+  * Fix Python bytecode decompilation tests with Python 3.10+.
+    (Closes: reproducible-builds/diffoscope#278)
+
+ -- Chris Lamb <la...@debian.org>  Fri, 22 Oct 2021 09:08:55 +0100
+
 diffoscope (187) unstable; urgency=medium
 
   * Add support for comparing .pyc files. Thanks to Sergei Trofimovich.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/diffoscope/__init__.py 
new/diffoscope-189/diffoscope/__init__.py
--- old/diffoscope-187/diffoscope/__init__.py   2021-10-08 10:02:03.000000000 
+0200
+++ new/diffoscope-189/diffoscope/__init__.py   2021-10-29 10:47:06.000000000 
+0200
@@ -17,4 +17,4 @@
 # You should have received a copy of the GNU General Public License
 # along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
 
-VERSION = "187"
+VERSION = "189"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/diffoscope/comparators/__init__.py 
new/diffoscope-189/diffoscope/comparators/__init__.py
--- old/diffoscope-187/diffoscope/comparators/__init__.py       2021-10-08 
10:02:03.000000000 +0200
+++ new/diffoscope-189/diffoscope/comparators/__init__.py       2021-10-29 
10:47:06.000000000 +0200
@@ -107,6 +107,7 @@
         ("pgp.PgpFile",),
         ("pgp.PgpSignature",),
         ("python.PycFile",),
+        ("sphinx.SphinxInventoryFile",),
         ("kbx.KbxFile",),
         ("fit.FlattenedImageTreeFile",),
         ("dtb.DeviceTreeFile",),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/diffoscope/comparators/sphinx.py 
new/diffoscope-189/diffoscope/comparators/sphinx.py
--- old/diffoscope-187/diffoscope/comparators/sphinx.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/diffoscope-189/diffoscope/comparators/sphinx.py 2021-10-29 
10:47:06.000000000 +0200
@@ -0,0 +1,60 @@
+#
+# diffoscope: in-depth comparison of files, archives, and directories
+#
+# Copyright ?? 2021 Chris Lamb <la...@debian.org>
+#
+# diffoscope is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# diffoscope is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
+
+import zlib
+
+from diffoscope.difference import Difference
+
+from .utils.file import File
+
+MAGIC = b"# Sphinx inventory version"
+
+
+class SphinxInventoryFile(File):
+    DESCRIPTION = "Sphinx inventory files"
+    FILE_EXTENSION_SUFFIX = {".inv"}
+
+    def compare_details(self, other, source=None):
+        return [
+            Difference.from_text(
+                describe_inventory(self.path),
+                describe_inventory(other.path),
+                self.path,
+                other.path,
+                source="Sphinx inventory",
+            )
+        ]
+
+
+def describe_inventory(filename):
+    head = b""
+    tail = b""
+
+    with open(filename, "rb") as f:
+        for line in f:
+            if line.startswith(b"#"):
+                # Save commented lines at top of file
+                head += line
+            else:
+                # ... save the rest for decompression
+                tail += line
+
+    result = head + b"\n" if head else b""
+    result += zlib.decompress(tail)
+
+    return result.decode("utf-8")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/diffoscope/external_tools.py 
new/diffoscope-189/diffoscope/external_tools.py
--- old/diffoscope-187/diffoscope/external_tools.py     2021-10-08 
10:02:03.000000000 +0200
+++ new/diffoscope-189/diffoscope/external_tools.py     2021-10-29 
10:47:06.000000000 +0200
@@ -35,7 +35,7 @@
         "FreeBSD": "libarchive",
         "guix": "libarchive",
     },
-    "dumppdf": {"debian": "python3-pdfminer"},
+    "dumppdf": {"debian": "python3-pdfminer", "guix": "python-pdfminer-six"},
     "bzip2": {"debian": "bzip2", "arch": "bzip2", "guix": "bzip2"},
     "cbfstool": {},
     "cd-iccdump": {
@@ -64,7 +64,7 @@
         "arch": "dtc",
         "guix": "dtc",
     },
-    "ffprobe": {"debian": "ffmpeg", "guix": "ffmpeg"},
+    "ffprobe": {"debian": "ffmpeg", "arch": "ffmpeg", "guix": "ffmpeg"},
     "file": {"debian": "file", "arch": "file", "guix": "file"},
     "find": {"debian": "findutils", "arch": "findutils", "guix": "findutils"},
     "getfacl": {"debian": "acl", "arch": "acl", "guix": "acl"},
@@ -150,10 +150,10 @@
         "arch": "binutils",
         "guix": "binutils",
     },
-    "ocamlobjinfo": {"debian": "ocaml-nox", "guix": "ocaml"},
+    "ocamlobjinfo": {"debian": "ocaml-nox", "arch": "ocaml", "guix": "ocaml"},
     "odt2txt": {"debian": "odt2txt", "arch": "odt2txt", "guix": "odt2txt"},
     "oggDump": {"debian": "oggvideotools"},
-    "openssl": {"debian": "openssl", "guix": "openssl"},
+    "openssl": {"debian": "openssl", "arch": "openssl", "guix": "openssl"},
     "otool": {},
     "pgpdump": {"debian": "pgpdump", "arch": "pgpdump", "guix": "pgpdump"},
     "pdftotext": {
@@ -168,7 +168,12 @@
         "FreeBSD": "mono",
         "guix": "mono",
     },
-    "ppudump": {"debian": "fp-utils", "arch": "fpc", "FreeBSD": "fpc"},
+    "ppudump": {
+        "debian": "fp-utils",
+        "arch": "fpc",
+        "FreeBSD": "fpc",
+        "guix": "fpc",
+    },
     "ps2ascii": {
         "debian": "ghostscript",
         "arch": "ghostscript",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/diffoscope/tools.py 
new/diffoscope-189/diffoscope/tools.py
--- old/diffoscope-187/diffoscope/tools.py      2021-10-08 10:02:03.000000000 
+0200
+++ new/diffoscope-189/diffoscope/tools.py      2021-10-29 10:47:06.000000000 
+0200
@@ -29,9 +29,6 @@
 from .profiling import profile
 from .external_tools import EXTERNAL_TOOLS, REMAPPED_TOOL_NAMES, GNU_TOOL_NAMES
 
-# Memoize calls to ``which`` to avoid excessive stat calls
-find_executable = functools.lru_cache()(shutil.which)
-
 # The output of --help and --list-tools will use the order of this dict.
 # Please keep it alphabetized.
 OS_NAMES = collections.OrderedDict(
@@ -44,6 +41,22 @@
 )
 
 
+@functools.lru_cache()
+def find_executable(cmd):
+    """
+    Given a command name (eg. `dumppdf`), return the absolute path to that
+    command. Will also try the command with some common suffixes (eg.
+    `dumppdf.py`) to support distributions that strip or retain them.
+
+    Returns `None` if no command is found.
+    """
+
+    for suffix in ("", ".py"):
+        val = shutil.which(f"{cmd}{suffix}")
+        if val:
+            return val
+
+
 def get_tools(only_missing=False):
     """Return the tool configuration in a dict"""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/comparators/test_python.py 
new/diffoscope-189/tests/comparators/test_python.py
--- old/diffoscope-187/tests/comparators/test_python.py 2021-10-08 
10:02:03.000000000 +0200
+++ new/diffoscope-189/tests/comparators/test_python.py 2021-10-29 
10:47:06.000000000 +0200
@@ -17,10 +17,12 @@
 # along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
 
 import pytest
+import sys
 
 from diffoscope.comparators.python import PycFile
 
-from ..utils.data import assert_diff, load_fixture
+from ..utils.data import assert_diff_startswith, load_fixture
+from ..utils.tools import skipif
 
 
 pyc1 = load_fixture("test1.pyc-renamed")
@@ -32,7 +34,11 @@
     assert isinstance(pyc2, PycFile)
 
 
+@skipif(sys.version_info >= (3, 10), reason="Unstable on 3.10+")
 def test_no_differences(pyc1):
+    # Disassembling bytecode prior to Python 3.10 is stable when applied to
+    # itself, otherwise various memory offsets (or memory addresses?) are
+    # non-deterministic.
     assert pyc1.compare(pyc1) is None
 
 
@@ -41,5 +47,12 @@
     return pyc1.compare(pyc2).details
 
 
+@skipif(
+    sys.version_info < (3, 9),
+    reason="pyc_expected_diff generated on Python 3.9",
+)
 def test_diff(differences):
-    assert_diff(differences[0], "pyc_expected_diff")
+    assert_diff_startswith(
+        differences[0],
+        "pyc_expected_diff",
+    )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/comparators/test_sphinx.py 
new/diffoscope-189/tests/comparators/test_sphinx.py
--- old/diffoscope-187/tests/comparators/test_sphinx.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/diffoscope-189/tests/comparators/test_sphinx.py 2021-10-29 
10:47:06.000000000 +0200
@@ -0,0 +1,45 @@
+#
+# diffoscope: in-depth comparison of files, archives, and directories
+#
+# Copyright ?? 2021 Chris Lamb <la...@debian.org>
+#
+# diffoscope is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# diffoscope is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with diffoscope.  If not, see <https://www.gnu.org/licenses/>.
+
+import pytest
+
+from diffoscope.comparators.sphinx import SphinxInventoryFile
+
+from ..utils.data import assert_diff, load_fixture
+
+
+inv1 = load_fixture("test1.inv")
+inv2 = load_fixture("test2.inv")
+
+
+def test_identification(inv1, inv2):
+    assert isinstance(inv1, SphinxInventoryFile)
+    assert isinstance(inv2, SphinxInventoryFile)
+
+
+def test_no_differences(inv1):
+    assert inv1.compare(inv1) is None
+
+
+@pytest.fixture
+def differences(inv1, inv2):
+    return inv1.compare(inv2).details
+
+
+def test_diff(differences):
+    assert_diff(differences[0], "inv_expected_diff")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/comparators/test_uimage.py 
new/diffoscope-189/tests/comparators/test_uimage.py
--- old/diffoscope-187/tests/comparators/test_uimage.py 2021-10-08 
10:02:03.000000000 +0200
+++ new/diffoscope-189/tests/comparators/test_uimage.py 2021-10-29 
10:47:06.000000000 +0200
@@ -23,8 +23,8 @@
 from diffoscope.comparators.uimage import UimageFile
 from diffoscope.comparators.utils.specialize import specialize
 
-from ..utils.data import load_fixture, get_data
-from ..utils.tools import skip_unless_tools_exist
+from ..utils.data import load_fixture, get_data, assert_diff
+from ..utils.tools import skip_unless_tools_exist, file_version_is_lt
 from ..utils.nonexisting import assert_non_existing
 
 cpio1 = load_fixture("test1.cpio")
@@ -98,8 +98,12 @@
 
 
 def test_file_differences(differences):
-    expected_diff = get_data("uimage_expected_diff")
-    assert differences[0].unified_diff == expected_diff
+    filename = "uimage_expected_diff"
+    # file-5.41 slightly changed the output format by dropping leading 0x.
+    if file_version_is_lt("5.41"):
+        filename = "uimage_expected_diff_pre_5_41"
+
+    assert_diff(differences[0], filename)
 
 
 @skip_unless_tools_exist("cpio")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/data/inv_expected_diff 
new/diffoscope-189/tests/data/inv_expected_diff
--- old/diffoscope-187/tests/data/inv_expected_diff     1970-01-01 
01:00:00.000000000 +0100
+++ new/diffoscope-189/tests/data/inv_expected_diff     2021-10-29 
10:47:06.000000000 +0200
@@ -0,0 +1,187 @@
+@@ -1,19 +1,171 @@
+-api std:doc -1 api.html API
+-api std:label -1 api.html#$ API
+-configuration std:doc -1 configuration.html Configuration file
+-configuration std:label -1 configuration.html#$ Configuration file
++# Sphinx inventory version 2
++# Project: pytools
++# Version: 2021.2.8
++# The remainder of this file is compressed using zlib.
++
++pytools py:module 0 reference.html#module-$ -
++pytools.DebugProcessLogger py:class 1 reference.html#$ -
++pytools.F py:class 1 reference.html#$ -
++pytools.ProcessLogger py:class 1 reference.html#$ -
++pytools.ProcessLogger.__enter__ py:method 1 reference.html#$ -
++pytools.ProcessLogger.__exit__ py:method 1 reference.html#$ -
++pytools.ProcessLogger.__init__ py:method 1 reference.html#$ -
++pytools.ProcessLogger.done py:method 1 reference.html#$ -
++pytools.ProcessTimer py:class 1 reference.html#$ -
++pytools.ProcessTimer.__enter__ py:method 1 reference.html#$ -
++pytools.ProcessTimer.__exit__ py:method 1 reference.html#$ -
++pytools.ProcessTimer.done py:method 1 reference.html#$ -
++pytools.ProcessTimer.process_elapsed py:attribute 1 reference.html#$ -
++pytools.ProcessTimer.wall_elapsed py:attribute 1 reference.html#$ -
++pytools.ProgressBar py:class 1 reference.html#$ -
++pytools.ProgressBar.__enter__ py:method 1 reference.html#$ -
++pytools.ProgressBar.__exit__ py:method 1 reference.html#$ -
++pytools.ProgressBar.draw py:method 1 reference.html#$ -
++pytools.ProgressBar.finished py:method 1 reference.html#$ -
++pytools.ProgressBar.progress py:method 1 reference.html#$ -
++pytools.ProgressBar.set_progress py:method 1 reference.html#$ -
++pytools.T py:class 1 reference.html#$ -
++pytools.Table py:class 1 reference.html#$ -
++pytools.Table.__str__ py:method 1 reference.html#$ -
++pytools.Table.add_row py:method 1 reference.html#$ -
++pytools.Table.github_markdown py:method 1 reference.html#$ -
++pytools.Table.latex py:method 1 reference.html#$ -
++pytools.UniqueNameGenerator py:class 1 reference.html#$ -
++pytools.UniqueNameGenerator.__call__ py:method 1 reference.html#$ -
++pytools.UniqueNameGenerator.add_name py:method 1 reference.html#$ -
++pytools.UniqueNameGenerator.add_names py:method 1 reference.html#$ -
++pytools.UniqueNameGenerator.is_name_conflicting py:method 1 reference.html#$ -
++pytools.all_roughly_equal py:function 1 reference.html#$ -
++pytools.argmax py:function 1 reference.html#$ -
++pytools.argmax2 py:function 1 reference.html#$ -
++pytools.argmin py:function 1 reference.html#$ -
++pytools.argmin2 py:function 1 reference.html#$ -
++pytools.cartesian_product py:function 1 reference.html#$ -
++pytools.codegen py:module 0 codegen.html#module-$ -
++pytools.codegen.CodeGenerator py:class 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.__call__ py:method 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.add_to_preamble py:method 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.dedent py:method 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.extend py:method 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.get py:method 1 codegen.html#$ -
++pytools.codegen.CodeGenerator.indent py:method 1 codegen.html#$ -
++pytools.codegen.Indentation py:class 1 codegen.html#$ -
++pytools.codegen.Indentation.__enter__ py:method 1 codegen.html#$ -
++pytools.codegen.Indentation.__exit__ py:method 1 codegen.html#$ -
++pytools.codegen.Indentation.generator py:attribute 1 codegen.html#$ -
++pytools.codegen.remove_common_indentation py:function 1 codegen.html#$ -
++pytools.comb py:function 1 reference.html#$ -
++pytools.datatable py:module 0 reference.html#module-$ -
++pytools.datatable.DataTable py:class 1 reference.html#$ -
++pytools.datatable.DataTable.__init__ py:method 1 reference.html#$ -
++pytools.datatable.DataTable.copy py:method 1 reference.html#$ -
++pytools.datatable.DataTable.deep_copy py:method 1 reference.html#$ -
++pytools.datatable.DataTable.join py:method 1 reference.html#$ -
++pytools.deprecate_keyword py:function 1 reference.html#$ -
++pytools.distinct_pairs py:function 1 reference.html#$ -
++pytools.download_from_web_if_not_present py:function 1 reference.html#$ -
++pytools.generate_all_integer_tuples_below py:function 1 reference.html#$ -
++pytools.generate_nonnegative_integer_tuples_below py:function 1 
reference.html#$ -
++pytools.generate_nonnegative_integer_tuples_summing_to_at_most py:function 1 
reference.html#$ -
++pytools.generate_numbered_unique_names py:function 1 reference.html#$ -
++pytools.generate_permutations py:function 1 reference.html#$ -
++pytools.generate_unique_names py:function 1 reference.html#$ -
++pytools.generate_unique_permutations py:function 1 reference.html#$ -
++pytools.graph py:module 0 graph.html#module-$ -
++pytools.graph.CycleError py:class 1 graph.html#$ -
++pytools.graph.T py:class 1 graph.html#$ -
++pytools.graph.a_star py:function 1 graph.html#$ -
++pytools.graph.compute_induced_subgraph py:function 1 graph.html#$ -
++pytools.graph.compute_sccs py:function 1 graph.html#$ -
++pytools.graph.compute_topological_order py:function 1 graph.html#$ -
++pytools.graph.compute_transitive_closure py:function 1 graph.html#$ -
++pytools.graph.contains_cycle py:function 1 graph.html#$ -
++pytools.invoke_editor py:function 1 reference.html#$ -
++pytools.is_single_valued py:function 1 reference.html#$ -
++pytools.keyed_memoize_in py:function 1 reference.html#$ -
++pytools.keyed_memoize_method py:function 1 reference.html#$ -
++pytools.keyed_memoize_on_first_arg py:function 1 reference.html#$ -
++pytools.levi_civita py:function 1 reference.html#$ -
++pytools.log_process py:class 1 reference.html#$ -
++pytools.memoize py:function 1 reference.html#$ -
++pytools.memoize_in py:function 1 reference.html#$ -
++pytools.memoize_method py:function 1 reference.html#$ -
++pytools.memoize_on_first_arg py:function 1 reference.html#$ -
++pytools.natorder py:function 1 reference.html#$ -
++pytools.natsorted py:function 1 reference.html#$ -
++pytools.obj_array py:module 0 obj_array.html#module-$ -
++pytools.obj_array.flat_obj_array py:function 1 obj_array.html#$ -
++pytools.obj_array.make_obj_array py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_imag py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_imag_copy py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_real py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_real_copy py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_vectorize py:function 1 obj_array.html#$ -
++pytools.obj_array.obj_array_vectorize_n_args py:function 1 obj_array.html#$ -
++pytools.one py:function 1 reference.html#$ -
++pytools.perm py:function 1 reference.html#$ -
++pytools.persistent_dict py:module 0 persistent_dict.html#module-$ -
++pytools.persistent_dict.CollisionWarning py:exception 1 
persistent_dict.html#$ -
++pytools.persistent_dict.KeyBuilder py:class 1 persistent_dict.html#$ -
++pytools.persistent_dict.KeyBuilder.__call__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.KeyBuilder.new_hash py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.KeyBuilder.rec py:method 1 persistent_dict.html#$ -
++pytools.persistent_dict.NoSuchEntryError py:exception 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict py:class 1 persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.__delitem__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.__getitem__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.__init__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.__setitem__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.clear py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.fetch py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.remove py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.store py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.PersistentDict.store_if_not_present py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.ReadOnlyEntryError py:exception 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict py:class 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.__getitem__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.__init__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.__setitem__ py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.clear py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.fetch py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.store py:method 1 
persistent_dict.html#$ -
++pytools.persistent_dict.WriteOncePersistentDict.store_if_not_present 
py:method 1 persistent_dict.html#$ -
++pytools.reshaped_view py:function 1 reference.html#$ -
++pytools.resolve_name py:function 1 reference.html#$ -
++pytools.single_valued py:function 1 reference.html#$ -
++pytools.string_histogram py:function 1 reference.html#$ -
++pytools.tag py:module 0 tag.html#module-$ -
++pytools.tag.DottedName py:class 1 tag.html#$ -
++pytools.tag.DottedName.from_class py:method 1 tag.html#$ -
++pytools.tag.DottedName.name_parts py:attribute 1 tag.html#$ -
++pytools.tag.NonUniqueTagError py:class 1 tag.html#$ -
++pytools.tag.T_co py:class 1 tag.html#$ -
++pytools.tag.Tag py:class 1 tag.html#$ -
++pytools.tag.Tag.__repr__ py:method 1 tag.html#$ -
++pytools.tag.Tag.tag_name py:attribute 1 tag.html#$ -
++pytools.tag.Taggable py:class 1 tag.html#$ -
++pytools.tag.Taggable.__init__ py:method 1 tag.html#$ -
++pytools.tag.Taggable.copy py:method 1 tag.html#$ -
++pytools.tag.Taggable.tagged py:method 1 tag.html#$ -
++pytools.tag.Taggable.tags py:attribute 1 tag.html#$ -
++pytools.tag.Taggable.tags_of_type py:method 1 tag.html#$ -
++pytools.tag.Taggable.without_tags py:method 1 tag.html#$ -
++pytools.tag.UniqueTag py:class 1 tag.html#$ -
++pytools.tag.check_tag_uniqueness py:function 1 tag.html#$ -
++pytools.typedump py:function 1 reference.html#$ -
++pytools.unordered_hash py:function 1 reference.html#$ -
++pytools.wandering_element py:function 1 reference.html#$ -
++pytools.word_wrap py:function 1 reference.html#$ -
++codegen std:doc -1 codegen.html Tools for Source Code Generation
+ genindex std:label -1 genindex.html Index
+-index std:doc -1 index.html Welcome to xPore???s documentation!
+-installation std:doc -1 installation.html Installation
+-installation std:label -1 installation.html#$ Installation
++graph std:doc -1 graph.html Graph Algorithms
++index std:doc -1 index.html Welcome to pytools???s documentation!
++license std:label -1 misc.html#$ License
++misc std:doc -1 misc.html Installation
+ modindex std:label -1 py-modindex.html Module Index
+-outputtable std:doc -1 outputtable.html Output table description
+-outputtable std:label -1 outputtable.html#$ Output table description
+-preparation std:doc -1 preparation.html Data preparation from raw reads
+-preparation std:label -1 preparation.html#$ Data preparation from raw reads
++obj_array std:doc -1 obj_array.html Handling numpy Object Arrays
++persistent_dict std:doc -1 persistent_dict.html Persistent Hashing and 
Persistent Dictionaries
+ py-modindex std:label -1 py-modindex.html Python Module Index
+-quickstart std:doc -1 quickstart.html Quickstart - Detection of differential 
RNA modifications
+-quickstart std:label -1 quickstart.html#$ Quickstart - Detection of 
differential RNA modifications
+-scripts std:doc -1 scripts.html Scripts
+-scripts std:label -1 scripts.html#$ Scripts
++reference std:doc -1 reference.html A Collection of Utilities
+ search std:label -1 search.html Search Page
++tag std:doc -1 tag.html Tag Interface
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/data/test1.inv 
new/diffoscope-189/tests/data/test1.inv
--- old/diffoscope-187/tests/data/test1.inv     1970-01-01 01:00:00.000000000 
+0100
+++ new/diffoscope-189/tests/data/test1.inv     2021-10-29 10:47:06.000000000 
+0200
@@ -0,0 +1,3 @@
+x??R?N?0???`-+[E?@???j?S
'6?#?????x\;M???R?????l???<??????????,?u??L??T>???s?!??????]F???0?
+???????5?????hJ^>???u?????     
??]?-?~?8????????w???????????3a?p$?5????/????y???R?????& Y?
N??@"rr?JC?}??"????X28?Z??c?????_`       ????0q
+e?z
?v?@?????\?[?>??X?/4?I?2??"O,6???lxM?>-?)$?U????6        
k^?n???;(uK?#^?#g?=???????3?K???U???
Binary files old/diffoscope-187/tests/data/test2.inv and 
new/diffoscope-189/tests/data/test2.inv differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/data/uimage_expected_diff 
new/diffoscope-189/tests/data/uimage_expected_diff
--- old/diffoscope-187/tests/data/uimage_expected_diff  2021-10-08 
10:02:03.000000000 +0200
+++ new/diffoscope-189/tests/data/uimage_expected_diff  2021-10-29 
10:47:06.000000000 +0200
@@ -1,3 +1,3 @@
 @@ -1 +1 @@
--u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:00 2020, Load Address: 0x00000000, Entry Point: 
0x00000000, Header CRC: 0xF87AD200, Data CRC: 0x347161A5
-+u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:24 2020, Load Address: 0x00000000, Entry Point: 
0x00000000, Header CRC: 0xE86686F7, Data CRC: 0xC63C4A06
+-u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:00 2020, Load Address: 00000000, Entry Point: 00000000, 
Header CRC: 0XF87AD200, Data CRC: 0X347161A5
++u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:24 2020, Load Address: 00000000, Entry Point: 00000000, 
Header CRC: 0XE86686F7, Data CRC: 0XC63C4A06
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/diffoscope-187/tests/data/uimage_expected_diff_pre_5_41 
new/diffoscope-189/tests/data/uimage_expected_diff_pre_5_41
--- old/diffoscope-187/tests/data/uimage_expected_diff_pre_5_41 1970-01-01 
01:00:00.000000000 +0100
+++ new/diffoscope-189/tests/data/uimage_expected_diff_pre_5_41 2021-10-29 
10:47:06.000000000 +0200
@@ -0,0 +1,3 @@
+@@ -1 +1 @@
+-u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:00 2020, Load Address: 0x00000000, Entry Point: 
0x00000000, Header CRC: 0xF87AD200, Data CRC: 0x347161A5
++u-boot legacy uImage, , Linux/PowerPC, RAMDisk Image (Not compressed), 1024 
bytes, Fri Nov 27 19:49:24 2020, Load Address: 0x00000000, Entry Point: 
0x00000000, Header CRC: 0xE86686F7, Data CRC: 0xC63C4A06
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/test_source.py 
new/diffoscope-189/tests/test_source.py
--- old/diffoscope-187/tests/test_source.py     2021-10-08 10:02:03.000000000 
+0200
+++ new/diffoscope-189/tests/test_source.py     2021-10-29 10:47:06.000000000 
+0200
@@ -109,6 +109,7 @@
     "test1.hi",
     "test1.icc",
     "test1.ico",
+    "test1.inv",
     "test1.iso",
     "test1.jmod",
     "test1.jpg",
@@ -172,6 +173,7 @@
     "test2.hi",
     "test2.icc",
     "test2.ico",
+    "test2.inv",
     "test2.iso",
     "test2.jmod",
     "test2.jpg",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/diffoscope-187/tests/utils/data.py 
new/diffoscope-189/tests/utils/data.py
--- old/diffoscope-187/tests/utils/data.py      2021-10-08 10:02:03.000000000 
+0200
+++ new/diffoscope-189/tests/utils/data.py      2021-10-29 10:47:06.000000000 
+0200
@@ -64,6 +64,12 @@
     assert seen == expected
 
 
+def assert_diff_startswith(difference, filename):
+    haystack = difference.unified_diff
+    needle = get_data(filename)
+    assert needle.startswith(haystack)
+
+
 # 
https://code.activestate.com/recipes/576620-changedirectory-context-manager/#c3
 @contextlib.contextmanager
 def cwd_data():

Reply via email to