• Bug#1091939: img2pdf: FTBFS: E assert None == 'unspecified' (1/2)

    From Santiago Vila@21:1/5 to All on Thu Jan 2 19:20:03 2025
    Package: src:img2pdf
    Version: 0.5.1-1
    Severity: serious
    Tags: ftbfs trixie sid

    Dear maintainer:

    During a rebuild of all packages in unstable, your package failed to build:

    --------------------------------------------------------------------------------
    [...]
    debian/rules clean
    dh clean --with python3 --buildsystem=pybuild
    debian/rules execute_before_dh_auto_clean
    make[1]: Entering directory '/<<PKGBUILDDIR>>'
    rm -f img2pdf.1
    make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    dh_auto_clean -O--buildsystem=pybuild
    I: pybuild base:311: python3.13 setup.py clean
    running clean
    removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build' (and everything under it)
    'build/bdist.linux-x86_64' does not exist -- can't clean it 'build/scripts-3.13' does not exist -- can't clean it
    I: pybuild base:311: python3.12 setup.py clean
    running clean

    [... snipped ...]

    subprocess.check_call(
    ["tiffset", "-u", "278", str(in_img)]
    ) # remove RowsPerStrip (278)
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("units") == "PixelsPerInch", str(identify)
    assert identify[0]["image"].get("type") == "Bilevel", str(identify)
    endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
    assert identify[0]["image"].get(endian) in [
    "Undefined",
    "LSB",
    ], str(identify)
    assert identify[0]["image"].get("colorspace") == "Gray", str(identify)
    assert identify[0]["image"].get("depth") == 1, str(identify)
    assert identify[0]["image"].get("compression") == "Group4", str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_ccitt_nometa2_img0/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': '
    image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'Bilevel', 'endianness': 'LSB', 'colorspace': 'Gray', 'depth': 1, 'baseDepth': 1, 'channelDepth': {'gray': 1}, 'pixels': 3600,
    'channelStatistics': {'gray': {'min': 0, 'max': 1, 'mean': 0.436111, 'median': 0, 'standardDeviation': 0.49597, 'kurtosis': -1.9342, 'skewness': 0.25756, 'entropy': 0.98819}}, 'renderingIntent': 'Undefined', 'gamma': 0.454545, 'matteColor': '#
    BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF', 'transparentColor': '#000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'd
    ispose': 'Undefined', 'iterations': 0, 'compression': 'Group4', 'orientation': 'TopLeft', 'properties': {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'}, 'tainted'
    : False, 'filesize': '1126B', 'numberPixels': '3600', 'pixelsPerSecond': '10.2133MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbf337f00>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbf337f00> = {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'}.get
    E + where {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'} = <built-in method get of dict object at 0x7f1bbf334040>('properties', {})
    E + where <built-in method get of dict object at 0x7f1bbf334040> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 1, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:3815: AssertionError
    ______________ ERROR at setup of test_tiff_ccitt_nometa2[pikepdf] ______________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_gray1_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/gray1_png0/gray1.png')

    @pytest.fixture(scope="session")
    def tiff_ccitt_nometa2_img(tmp_path_factory, tmp_gray1_png):
    in_img = tmp_path_factory.mktemp("tiff_ccitt_nometa2_img") / "in.tiff"
    subprocess.check_call(
    CONVERT
    + [
    str(tmp_gray1_png),
    "-compress",
    "group4",
    "-define",
    "tiff:endian=lsb",
    "-define",
    "tiff:fill-order=msb",
    "-define",
    "quantum:polarity=min-is-white",
    "-compress",
    "Group4",
    str(in_img),
    ]
    )
    subprocess.check_call(
    ["tiffset", "-u", "278", str(in_img)]
    ) # remove RowsPerStrip (278)
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("units") == "PixelsPerInch", str(identify)
    assert identify[0]["image"].get("type") == "Bilevel", str(identify)
    endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
    assert identify[0]["image"].get(endian) in [
    "Undefined",
    "LSB",
    ], str(identify)
    assert identify[0]["image"].get("colorspace") == "Gray", str(identify)
    assert identify[0]["image"].get("depth") == 1, str(identify)
    assert identify[0]["image"].get("compression") == "Group4", str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_ccitt_nometa2_img0/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': '
    image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'Bilevel', 'endianness': 'LSB', 'colorspace': 'Gray', 'depth': 1, 'baseDepth': 1, 'channelDepth': {'gray': 1}, 'pixels': 3600,
    'channelStatistics': {'gray': {'min': 0, 'max': 1, 'mean': 0.436111, 'median': 0, 'standardDeviation': 0.49597, 'kurtosis': -1.9342, 'skewness': 0.25756, 'entropy': 0.98819}}, 'renderingIntent': 'Undefined', 'gamma': 0.454545, 'matteColor': '#
    BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF', 'transparentColor': '#000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'd
    ispose': 'Undefined', 'iterations': 0, 'compression': 'Group4', 'orientation': 'TopLeft', 'properties': {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'}, 'tainted'
    : False, 'filesize': '1126B', 'numberPixels': '3600', 'pixelsPerSecond': '10.2133MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbf337f00>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbf337f00> = {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'}.get
    E + where {'signature': '7cb2a4f4df5f29f3dcd3713b56f19caeb1074bdfee5baa5bfc3579735e655f66', 'tiff:endian': 'lsb', 'tiff:photometric': 'min-is-white'} = <built-in method get of dict object at 0x7f1bbf334040>('properties', {})
    E + where <built-in method get of dict object at 0x7f1bbf334040> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 1, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:3815: AssertionError
    _________________ ERROR at setup of test_miff_cmyk8[internal] __________________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_normal_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_cmyk8_img(tmp_path_factory, tmp_normal_png):
    in_img = tmp_path_factory.mktemp("tiff_cmyk8") / "in.tiff"
    subprocess.check_call(
    CONVERT
    + [
    str(tmp_normal_png),
    "-colorspace",
    "cmyk",
    "-compress",
    "Zip",
    str(in_img),
    ]
    )
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("colorspace") == "CMYK", str(identify)
    assert identify[0]["image"].get("type") == "ColorSeparation", str(identify)
    assert identify[0]["image"].get("depth") == 8, str(identify)
    assert identify[0]["image"].get("pageGeometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_cmyk80/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': 'image/tiff', '
    class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'ColorSeparation', 'endianness': 'LSB', 'colorspace': 'CMYK', 'depth': 8, 'baseDepth': 8, 'channelDepth': {'cyan': 8, 'magenta': 8, 'yellow':
    1, 'black': 1}, 'pixels': 3600, 'imageStatistics': {'Overall': {'min': 0, 'max': 255, 'mean': 109.364, 'median': 9.25, 'standardDeviation': 119.38, 'kurtosis': -1.82957, 'skewness': 0.282353, 'entropy': 0.386969}}, 'channelStatistics': {'cyan': {'min':
    0, 'max': 255, 'mean': 111.073, 'median': 0, 'standardDeviation': 122.544, 'kurtosis': -1.88637, 'skewness': 0.256167, 'entropy': 0.313817}, 'magenta': {'min': 0, 'max': 255, 'mean': 112.166, 'median': 0, 'standardDeviation': 122.27, 'k
    urtosis': -1.8898, 'skewness': 0.238371, 'entropy': 0.312564}, 'yellow': {'min': 0, 'max': 255, 'mean': 112.434, 'median': 0, 'standardDeviation': 122.348, 'kurtosis': -1.89217, 'skewness': 0.234551, 'entropy': 0.311477}, 'black': {'min': 0, 'max': 255,
    'mean': 101.782, 'median': 37, 'standardDeviation': 110.36, 'kurtosis': -1.64994, 'skewness': 0.400325, 'entropy': 0.610017}}, 'totalInkDensity': '299.216%', 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, '
    y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF', 'transparentColor': '#
    000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'Zip', 'orientation': 'TopLeft', 'prop
    erties': {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}, 'tainted': False, 'filesize': '3080B', 'numberPixels': '3600', '
    pixelsPerSecond': '9.59744MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbe77b200>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbe77b200> = {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}.get
    E + where {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'} = <built-in method get of dict object at 0x7f1bbe77b8c0>('
    properties', {})
    E + where <built-in method get of dict object at 0x7f1bbe77b8c0> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 8, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:2485: AssertionError
    __________________ ERROR at setup of test_miff_cmyk8[pikepdf] __________________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_normal_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_cmyk8_img(tmp_path_factory, tmp_normal_png):
    in_img = tmp_path_factory.mktemp("tiff_cmyk8") / "in.tiff"
    subprocess.check_call(
    CONVERT
    + [
    str(tmp_normal_png),
    "-colorspace",
    "cmyk",
    "-compress",
    "Zip",
    str(in_img),
    ]
    )
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("colorspace") == "CMYK", str(identify)
    assert identify[0]["image"].get("type") == "ColorSeparation", str(identify)
    assert identify[0]["image"].get("depth") == 8, str(identify)
    assert identify[0]["image"].get("pageGeometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_cmyk80/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': 'image/tiff', '
    class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'ColorSeparation', 'endianness': 'LSB', 'colorspace': 'CMYK', 'depth': 8, 'baseDepth': 8, 'channelDepth': {'cyan': 8, 'magenta': 8, 'yellow':
    1, 'black': 1}, 'pixels': 3600, 'imageStatistics': {'Overall': {'min': 0, 'max': 255, 'mean': 109.364, 'median': 9.25, 'standardDeviation': 119.38, 'kurtosis': -1.82957, 'skewness': 0.282353, 'entropy': 0.386969}}, 'channelStatistics': {'cyan': {'min':
    0, 'max': 255, 'mean': 111.073, 'median': 0, 'standardDeviation': 122.544, 'kurtosis': -1.88637, 'skewness': 0.256167, 'entropy': 0.313817}, 'magenta': {'min': 0, 'max': 255, 'mean': 112.166, 'median': 0, 'standardDeviation': 122.27, 'k
    urtosis': -1.8898, 'skewness': 0.238371, 'entropy': 0.312564}, 'yellow': {'min': 0, 'max': 255, 'mean': 112.434, 'median': 0, 'standardDeviation': 122.348, 'kurtosis': -1.89217, 'skewness': 0.234551, 'entropy': 0.311477}, 'black': {'min': 0, 'max': 255,
    'mean': 101.782, 'median': 37, 'standardDeviation': 110.36, 'kurtosis': -1.64994, 'skewness': 0.400325, 'entropy': 0.610017}}, 'totalInkDensity': '299.216%', 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, '
    y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF', 'transparentColor': '#
    000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'Zip', 'orientation': 'TopLeft', 'prop
    erties': {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}, 'tainted': False, 'filesize': '3080B', 'numberPixels': '3600', '
    pixelsPerSecond': '9.59744MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbe77b200>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbe77b200> = {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}.get
    E + where {'signature': '7511a952780499da9db703c19d66c5fa4f9e04521541503c3368cb988c9ef023', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'} = <built-in method get of dict object at 0x7f1bbe77b8c0>('
    properties', {})
    E + where <built-in method get of dict object at 0x7f1bbe77b8c0> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 8, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:2485: AssertionError
    _________________ ERROR at setup of test_miff_cmyk16[internal] _________________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_normal_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_cmyk16_img(tmp_path_factory, tmp_normal_png):
    in_img = tmp_path_factory.mktemp("tiff_cmyk16") / "in.tiff"
    subprocess.check_call(
    CONVERT
    + [
    str(tmp_normal_png),
    "-depth",
    "16",
    "-colorspace",
    "cmyk",
    "-compress",
    "Zip",
    str(in_img),
    ]
    )
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("colorspace") == "CMYK", str(identify)
    assert identify[0]["image"].get("type") == "ColorSeparation", str(identify)
    assert identify[0]["image"].get("depth") == 16, str(identify)
    assert identify[0]["image"].get("pageGeometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_cmyk160/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': 'image/tiff', '
    class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'ColorSeparation', 'endianness': 'LSB', 'colorspace': 'CMYK', 'depth': 16, 'baseDepth': 16, 'channelDepth': {'cyan': 16, 'magenta': 16, '
    yellow': 1, 'black': 1}, 'pixels': 3600, 'imageStatistics': {'Overall': {'min': 0, 'max': 65535, 'mean': 28106.2, 'median': 2377.25, 'standardDeviation': 30679.2, 'kurtosis': -1.82944, 'skewness': 0.282366, 'entropy': 0.380729}}, 'channelStatistics': {'
    cyan': {'min': 0, 'max': 65535, 'mean': 28545.4, 'median': 0, 'standardDeviation': 31491.6, 'kurtosis': -1.8862, 'skewness': 0.256177, 'entropy': 0.307185}, 'magenta': {'min': 0, 'max': 65535, 'mean': 28826.3, 'median': 0, 'standardDeviatio
    n': 31421.2, 'kurtosis': -1.88962, 'skewness': 0.238392, 'entropy': 0.303386}, 'yellow': {'min': 0, 'max': 65535, 'mean': 28895, 'median': 0, 'standardDeviation': 31441.4, 'kurtosis': -1.89199, 'skewness': 0.234569, 'entropy': 0.30233}, 'black': {'min':
    0, 'max': 65535, 'mean': 26158, 'median': 9509, 'standardDeviation': 28362.5, 'kurtosis': -1.64994, 'skewness': 0.400325, 'entropy': 0.610017}}, 'totalInkDensity': '299.216%', 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'
    redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF'
    , 'transparentColor': '#000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'Zip', 'orientation'
    : 'TopLeft', 'properties': {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}, 'tainted': False, 'filesize': '4642B', 'numberPixels': '
    3600', 'pixelsPerSecond': '9.15984MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbe779580>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbe779580> = {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}.get
    E + where {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'} = <built-in method get of dict object at 0x7f1bbe77a400>('
    properties', {})
    E + where <built-in method get of dict object at 0x7f1bbe77a400> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 16, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:2537: AssertionError
    _________________ ERROR at setup of test_miff_cmyk16[pikepdf] __________________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_normal_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_cmyk16_img(tmp_path_factory, tmp_normal_png):
    in_img = tmp_path_factory.mktemp("tiff_cmyk16") / "in.tiff"
    subprocess.check_call(
    CONVERT
    + [
    str(tmp_normal_png),
    "-depth",
    "16",
    "-colorspace",
    "cmyk",
    "-compress",
    "Zip",
    str(in_img),
    ]
    )
    identify = json.loads(subprocess.check_output(CONVERT + [str(in_img), "json:"]))
    assert len(identify) == 1
    # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
    # put into an array, here we cater for the older version containing just
    # the bare dictionary
    if "image" in identify:
    identify = [identify]
    assert "image" in identify[0]
    assert identify[0]["image"].get("format") == "TIFF", str(identify)
    assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
    assert identify[0]["image"].get("geometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert identify[0]["image"].get("colorspace") == "CMYK", str(identify)
    assert identify[0]["image"].get("type") == "ColorSeparation", str(identify)
    assert identify[0]["image"].get("depth") == 16, str(identify)
    assert identify[0]["image"].get("pageGeometry") == {
    "width": 60,
    "height": 60,
    "x": 0,
    "y": 0,
    }, str(identify)
    assert (
    identify[0]["image"].get("properties", {}).get("tiff:alpha") == "unspecified"
    ), str(identify)
    E AssertionError: [{'version': '1.0', 'image': {'name': '/tmp/pytest-of-buildd/pytest-1/tiff_cmyk160/in.tiff', 'baseName': 'in.tiff', 'permissions': 644, 'format': 'TIFF', 'formatDescription': 'Tagged Image File Format', 'mimeType': 'image/tiff', '
    class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'ColorSeparation', 'endianness': 'LSB', 'colorspace': 'CMYK', 'depth': 16, 'baseDepth': 16, 'channelDepth': {'cyan': 16, 'magenta': 16, '
    yellow': 1, 'black': 1}, 'pixels': 3600, 'imageStatistics': {'Overall': {'min': 0, 'max': 65535, 'mean': 28106.2, 'median': 2377.25, 'standardDeviation': 30679.2, 'kurtosis': -1.82944, 'skewness': 0.282366, 'entropy': 0.380729}}, 'channelStatistics': {'
    cyan': {'min': 0, 'max': 65535, 'mean': 28545.4, 'median': 0, 'standardDeviation': 31491.6, 'kurtosis': -1.8862, 'skewness': 0.256177, 'entropy': 0.307185}, 'magenta': {'min': 0, 'max': 65535, 'mean': 28826.3, 'median': 0, 'standardDeviatio
    n': 31421.2, 'kurtosis': -1.88962, 'skewness': 0.238392, 'entropy': 0.303386}, 'yellow': {'min': 0, 'max': 65535, 'mean': 28895, 'median': 0, 'standardDeviation': 31441.4, 'kurtosis': -1.89199, 'skewness': 0.234569, 'entropy': 0.30233}, 'black': {'min':
    0, 'max': 65535, 'mean': 26158, 'median': 9509, 'standardDeviation': 28362.5, 'kurtosis': -1.64994, 'skewness': 0.400325, 'entropy': 0.610017}}, 'totalInkDensity': '299.216%', 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'
    redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBDBDBDBD', 'backgroundColor': '#FFFFFFFFFFFF', 'borderColor': '#DFDFDFDFDFDF'
    , 'transparentColor': '#000000000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'Zip', 'orientation'
    : 'TopLeft', 'properties': {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}, 'tainted': False, 'filesize': '4642B', 'numberPixels': '
    3600', 'pixelsPerSecond': '9.15984MB', 'userTime': '0.000u', 'elapsedTime': '0:01.000', 'version': 'ImageMagick 7.1.1-43 Q16 x86_64 22550 https://imagemagick.org'}}]
    E assert None == 'unspecified'
    E + where None = <built-in method get of dict object at 0x7f1bbe779580>('tiff:alpha')
    E + where <built-in method get of dict object at 0x7f1bbe779580> = {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'}.get
    E + where {'signature': 'c691d0d59f0f71a8dedae7cb5048ac0ca431dc7b71ac89a83b6b2a44a616a442', 'tiff:endian': 'lsb', 'tiff:photometric': 'separated', 'tiff:rows-per-strip': '60'} = <built-in method get of dict object at 0x7f1bbe77a400>('
    properties', {})
    E + where <built-in method get of dict object at 0x7f1bbe77a400> = {'backgroundColor': '#FFFFFFFFFFFF', 'baseDepth': 16, 'baseName': 'in.tiff', 'borderColor': '#DFDFDFDFDFDF', ...}.get

    img2pdf_test.py:2537: AssertionError
    __________________ ERROR at setup of test_miff_rgb8[internal] __________________

    tmp_path_factory = TempPathFactory(_given_basetemp=None, _trace=<pluggy._tracing.TagTracerSub object at 0x7f1bc163bec0>, _basetemp=PosixPath('/tmp/pytest-of-buildd/pytest-1'), _retention_count=3, _retention_policy='all')
    tmp_normal_png = PosixPath('/tmp/pytest-of-buildd/pytest-1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_rgb8_img(tmp_path_factory, tmp_normal_png):
    in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
    subprocess.check_call(

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)