Source: python-graphviz Version: 0.20.1+20240103-1 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20240313 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > debian/rules binary > dh binary --buildsystem=pybuild > dh_update_autotools_config -O--buildsystem=pybuild > dh_autoreconf -O--buildsystem=pybuild > dh_auto_configure -O--buildsystem=pybuild > I: pybuild base:305: python3.12 setup.py config > running config > I: pybuild base:305: python3.11 setup.py config > running config > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:305: /usr/bin/python3.12 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/piping.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/quoting.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/_tools.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/exceptions.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/sources.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/copying.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/dot.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/saving.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/_compat.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/jupyter_integration.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/_defaults.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/encoding.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/rendering.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/unflattening.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > copying graphviz/graphs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/piping.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/dot_command.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/execute.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/upstream_version.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/viewing.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/mixins.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/rendering.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > copying graphviz/backend/unflattening.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/formats.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/engines.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/mixins.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/renderers.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > copying graphviz/parameters/formatters.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/parameters > I: pybuild base:305: /usr/bin/python3 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/piping.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/quoting.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/_tools.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/exceptions.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/sources.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/copying.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/dot.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/saving.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/_compat.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/jupyter_integration.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/_defaults.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/encoding.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/rendering.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/unflattening.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > copying graphviz/graphs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/piping.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/dot_command.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/execute.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/upstream_version.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/viewing.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/mixins.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/rendering.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > copying graphviz/backend/unflattening.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/formats.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/engines.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/mixins.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/renderers.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > copying graphviz/parameters/formatters.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/parameters > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:305: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build; python3.12 -m pytest > -k 'not test_pipe_pipe_invalid_data_mocked' > ============================= test session starts > ============================== > platform linux -- Python 3.12.2, pytest-8.0.2, pluggy-1.4.0 > rootdir: /<<PKGBUILDDIR>> > configfile: setup.cfg > plugins: cov-4.1.0, mock-3.12.0, doctestplus-1.2.0 > collected 351 items / 2 deselected / 349 selected > > graphviz/__init__.py::graphviz PASSED [ > 0%] > graphviz/_tools.py::graphviz._tools.attach PASSED [ > 0%] > graphviz/_tools.py::graphviz._tools.mapping_items PASSED [ > 0%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe PASSED [ > 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines PASSED [ > 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines_string PASSED > [ 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_string PASSED [ > 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_formats > PASSED [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_suffixes > PASSED [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.infer_format PASSED > [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.render FAILED [ > 3%] > graphviz/backend/upstream_version.py::graphviz.backend.upstream_version.version > PASSED [ 3%] > graphviz/graphs.py::graphviz.graphs PASSED [ > 3%] > graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_ > PASSED [ 4%] > graphviz/piping.py::graphviz.piping.Pipe.pipe PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.a_list PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.attr_list PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.escape PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.nohtml PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.quote PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.quote_edge PASSED [ > 6%] > graphviz/rendering.py::graphviz.rendering.Render.render PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[render-args0] PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[pipe-args1] PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[unflatten-args2] > PASSED [ 7%] > tests/backend/test_execute.py::test_missing_executable[version-args3] PASSED > [ 7%] > tests/backend/test_execute.py::test_run_check_oserror PASSED [ > 7%] > tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=False] > PASSED [ 8%] > tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=True] > PASSED [ 8%] > tests/backend/test_execute.py::test_run_check_input_lines_mocked PASSED [ > 8%] > tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False] PASSED [ > 8%] > tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True] PASSED [ > 9%] > tests/backend/test_piping.py::test_pipe[dot-svg-None-None-(?s)^<\\?xml > .+</svg>\\s*$] PASSED [ 9%] > tests/backend/test_piping.py::test_pipe[dot-ps-ps-core-%!PS-] PASSED [ > 9%] > tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml > .+</svg>\\s*$] PASSED [ 10%] > tests/backend/test_piping.py::test_pipe_mocked[quiet=False] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_mocked[quiet=True] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_string_mocked[quiet=False] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_string_mocked[quiet=True] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] > PASSED [ 12%] > tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] > PASSED [ 12%] > tests/backend/test_rendering.py::test_render_missing_file[quiet=False] PASSED > [ 12%] > tests/backend/test_rendering.py::test_render_missing_file[quiet=True] PASSED > [ 12%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown > engine] FAILED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown > format] FAILED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args2-ValueError-unknown > renderer] PASSED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args3-RequiredArgumentError-without > renderer] PASSED [ 14%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args4-ValueError-unknown > formatter] PASSED [ 14%] > tests/backend/test_rendering.py::test_render[dot-pdf-None-None-pdf] PASSED [ > 14%] > tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain] > PASSED [ 14%] > tests/backend/test_rendering.py::test_render_img PASSED [ > 15%] > tests/backend/test_rendering.py::test_render_outfile_differnt_parent PASSED [ > 15%] > tests/backend/test_rendering.py::test_render_mocked[quiet=False-None] PASSED > [ 15%] > tests/backend/test_rendering.py::test_render_mocked[quiet=False-dot_sources] > PASSED [ 16%] > tests/backend/test_rendering.py::test_render_mocked[quiet=True-None] PASSED [ > 16%] > tests/backend/test_rendering.py::test_render_mocked[quiet=True-dot_sources] > PASSED [ 16%] > tests/backend/test_rendering.py::test_render_raises_mocked[args0-kwargs0-RequiredArgumentError-filepath: > \\(required] PASSED [ 16%] > tests/backend/test_rendering.py::test_render_raises_mocked[args1-kwargs1-RequiredArgumentError-filepath: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args2-kwargs2-RequiredArgumentError-format: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args3-kwargs3-RequiredArgumentError-filepath: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args4-kwargs4-ValueError-outfile > 'spam\\.gv' must be different from input file 'spam\\.gv'] PASSED [ 18%] > tests/backend/test_rendering.py::test_render_raises_mocked[args5-kwargs5-ValueError-overwrite_filepath > cannot be combined with raise_if_result_exists] PASSED [ 18%] > tests/backend/test_rendering.py::test_render_raises_mocked[args6-kwargs6-FileExistsError-output > file exists: 'spam.png'] PASSED [ 18%] > tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs0-spam.gv.pdf] > PASSED [ 18%] > tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs1-spam.gv.dot.plain] > PASSED [ 19%] > tests/backend/test_rendering.py::test_get_filepath[spam.pdf-spam.gv] PASSED [ > 19%] > tests/backend/test_rendering.py::test_get_filepath[spam-spam.gv] PASSED [ > 19%] > tests/backend/test_rendering.py::test_get_format[spam.gv.pdf-None-pdf] PASSED > [ 20%] > tests/backend/test_rendering.py::test_get_format[spam.jpeg-None-jpeg] PASSED > [ 20%] > tests/backend/test_rendering.py::test_get_format[spam.SVG-None-svg] PASSED [ > 20%] > tests/backend/test_rendering.py::test_get_format[spam.pdf-None-pdf] PASSED [ > 20%] > tests/backend/test_rendering.py::test_get_format[spam.pdf-pdf-pdf] PASSED [ > 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam.jpg-jpeg-jpeg-FormatSuffixMismatchWarning-expected > format 'jpg' from outfile differs from given format: 'jpeg'] PASSED [ 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam.dot-plain-plain-FormatSuffixMismatchWarning-expected > format 'dot' from outfile differs from given format: 'plain'] PASSED [ 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam-svg-svg-UnknownSuffixWarning-unknown > outfile suffix '' \\(expected: '\\.svg'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_warns[spam.peng-png-png-UnknownSuffixWarning-unknown > outfile suffix '.peng' \\(expected: '\\.png'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_warns[spam-pdf-pdf-UnknownSuffixWarning-unknown > outfile suffix '' \\(expected: '\\.pdf'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_raises[spam-RequiredArgumentError-cannot > infer rendering format from suffix '' of outfile: 'spam'] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_raises[spam.peng-RequiredArgumentError-cannot > infer rendering format from suffix '.peng' of outfile: 'spam.peng'] PASSED [ > 23%] > tests/backend/test_rendering.py::test_get_format_raises[spam.wav-RequiredArgumentError-cannot > infer rendering format from suffix '.wav' of outfile: 'spam.wav'] PASSED [ > 23%] > tests/backend/test_unflattening.py::test_unflatten_stagger_missing PASSED [ > 23%] > tests/backend/test_unflattening.py::test_unflatten[digraph {1 -> 2; 1 -> 3; 1 > -> 4}-kwargs0-digraph { 1 -> 2 [minlen=1]; 1 -> 3 [minlen=2]; 1 -> 4 > [minlen=3]; }] PASSED [ 24%] > tests/backend/test_unflattening.py::test_unflatten_mocked PASSED [ > 24%] > tests/backend/test_upstream_version.py::test_version PASSED [ > 24%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 1.2.3 (mocked)-expected0] PASSED [ 24%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.43.20190912.0211 (20190912.0211)\n-expected1] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.2~dev.20200927.0217 (20200927.0217)\n-expected2] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.1 (mocked)\n-expected3] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.2~dev.20200704.1652 (mocked)\n-expected4] PASSED [ 26%] > tests/backend/test_upstream_version.py::test_version_parsefail_mocked PASSED > [ 26%] > tests/backend/test_viewing.py::test_view_unknown_platform PASSED [ > 26%] > tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False] > PASSED [ 26%] > tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=True] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True] > PASSED [ 28%] > tests/test_all_classes.py::test_copy[Graph] PASSED [ > 29%] > tests/test_all_classes.py::test_copy[Digraph] PASSED [ > 29%] > tests/test_all_classes.py::test_copy[Source] PASSED [ > 29%] > tests/test_all_classes.py::test_str[Graph] PASSED [ > 30%] > tests/test_all_classes.py::test_str[Digraph] PASSED [ > 30%] > tests/test_all_classes.py::test_str[Source] PASSED [ > 30%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-engine-ValueError-unknown > engine] PASSED [ 30%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-format-ValueError-unknown > format] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-renderer-ValueError-unknown > renderer] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-formatter-ValueError-unknown > formatter] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-encoding-LookupError-encoding] > PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-engine-ValueError-unknown > engine] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-format-ValueError-unknown > format] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-renderer-ValueError-unknown > renderer] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-formatter-ValueError-unknown > formatter] PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-encoding-LookupError-encoding] > PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-engine-ValueError-unknown > engine] PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-format-ValueError-unknown > format] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-renderer-ValueError-unknown > renderer] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-formatter-ValueError-unknown > formatter] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-encoding-LookupError-encoding] > PASSED [ 34%] > tests/test_all_classes.py::test_encoding_none[Graph] PASSED [ > 35%] > tests/test_all_classes.py::test_encoding_none[Digraph] PASSED [ > 35%] > tests/test_all_classes.py::test_encoding_none[Source] PASSED [ > 35%] > tests/test_all_classes.py::test_render_raises_before_save[Graph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save[Digraph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs1] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs2] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs3] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs0] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs1] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs2] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs3] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3] > PASSED [ 40%] > tests/test_all_classes.py::test_render_mocked[Graph] PASSED [ > 40%] > tests/test_all_classes.py::test_render_mocked[Digraph] PASSED [ > 40%] > tests/test_all_classes.py::test_render_mocked[Source] PASSED [ > 40%] > tests/test_all_classes.py::test_render_outfile_mocked[Graph] PASSED [ > 41%] > tests/test_all_classes.py::test_render_outfile_mocked[Digraph] PASSED [ > 41%] > tests/test_all_classes.py::test_render_outfile_mocked[Source] PASSED [ > 41%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Graph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Digraph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Graph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Digraph] > PASSED [ 43%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source] > PASSED [ 43%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-None] > PASSED [ 43%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-False] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-True] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-0] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-1] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-2] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-None] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-False] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-True] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-0] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-1] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-2] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-None] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-False] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-True] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-0] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-1] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-2] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-None] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-False] > PASSED [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-True] > PASSED [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-0] PASSED > [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-1] PASSED > [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-2] PASSED > [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-None] > PASSED [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-False] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-True] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-0] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-1] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-2] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-None] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-False] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-True] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-0] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-1] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-2] > PASSED [ 53%] > tests/test_all_classes.py::test_save_mocked[Graph] PASSED [ > 54%] > tests/test_all_classes.py::test_save_mocked[Digraph] PASSED [ > 54%] > tests/test_all_classes.py::test_save_mocked[Source] PASSED [ > 54%] > tests/test_all_classes.py::test_pipe[Graph] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe[Digraph] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe[Source] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-None] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-ascii] PASSED [ > 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-utf-8] PASSED [ > 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-None] PASSED > [ 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-ascii] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-utf-8] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-None] PASSED [ > 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-ascii] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-utf-8] PASSED > [ 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-None] PASSED [ > 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-ascii] PASSED [ > 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-utf-8] PASSED [ > 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-None] PASSED [ > 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-ascii] PASSED > [ 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-utf-8] PASSED > [ 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-None] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-ascii] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-utf-8] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_lines_mocked[Graph] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_mocked[Digraph] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_mocked[Source] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Graph] PASSED > [ 61%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Digraph] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Source] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Graph] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Digraph] > PASSED [ 63%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Graph] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Digraph] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Source] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Graph] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Digraph] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Source] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Graph] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Digraph] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Source] > PASSED [ 65%] > tests/test_all_classes.py::test_unflatten[Graph] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten[Digraph] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten[Source] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten_mocked[Graph] PASSED [ > 67%] > tests/test_all_classes.py::test_unflatten_mocked[Digraph] PASSED [ > 67%] > tests/test_all_classes.py::test_unflatten_mocked[Source] PASSED [ > 67%] > tests/test_all_classes.py::test_view_mocked[Graph] PASSED [ > 67%] > tests/test_all_classes.py::test_view_mocked[Digraph] PASSED [ > 68%] > tests/test_all_classes.py::test_view_mocked[Source] PASSED [ > 68%] > tests/test_all_classes.py::test__view_unknown_platform[Graph] PASSED [ > 68%] > tests/test_all_classes.py::test__view_unknown_platform[Digraph] PASSED [ > 69%] > tests/test_all_classes.py::test__view_unknown_platform[Source] PASSED [ > 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Graph] PASSED > [ 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Digraph] > PASSED [ 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Source] PASSED > [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Graph] PASSED > [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Digraph] > PASSED [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Source] > PASSED [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Graph] PASSED [ > 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Digraph] PASSED > [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Source] PASSED > [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Graph] PASSED > [ 72%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Digraph] > PASSED [ 72%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Source] > PASSED [ 72%] > tests/test_graphs.py::test_init_filename[Graph] PASSED [ > 73%] > tests/test_graphs.py::test_init_filename[Digraph] PASSED [ > 73%] > tests/test_graphs.py::test_init_body[Graph-...-...] PASSED [ > 73%] > tests/test_graphs.py::test_init_body[Digraph-...-...] PASSED [ > 73%] > tests/test_graphs.py::test_subgraph_render[Graph-...] PASSED [ > 74%] > tests/test_graphs.py::test_subgraph_render[Digraph-...] PASSED [ > 74%] > tests/test_graphs.py::test_clear[Graph-False] PASSED [ > 74%] > tests/test_graphs.py::test_clear[Graph-True] PASSED [ > 75%] > tests/test_graphs.py::test_clear[Digraph-False] PASSED [ > 75%] > tests/test_graphs.py::test_clear[Digraph-True] PASSED [ > 75%] > tests/test_graphs.py::test_iter_subgraph_strict[Graph] PASSED [ > 75%] > tests/test_graphs.py::test_iter_subgraph_strict[Digraph] PASSED [ > 76%] > tests/test_graphs.py::test_iter_strict[Graph-...] PASSED [ > 76%] > tests/test_graphs.py::test_iter_strict[Digraph-...] PASSED [ > 76%] > tests/test_graphs.py::test_attr_invalid_kw[Graph] PASSED [ > 77%] > tests/test_graphs.py::test_attr_invalid_kw[Digraph] PASSED [ > 77%] > tests/test_graphs.py::test_attr_kw_none[Graph-...] PASSED [ > 77%] > tests/test_graphs.py::test_attr_kw_none[Digraph-...] PASSED [ > 77%] > tests/test_graphs.py::test_escaped_quotes_and_escapes[Graph-...] PASSED [ > 78%] > tests/test_graphs.py::test_escaped_quotes_and_escapes[Digraph-...] PASSED [ > 78%] > tests/test_graphs.py::test_subgraph_graph_none[Graph-...] PASSED [ > 78%] > tests/test_graphs.py::test_subgraph_graph_none[Digraph-...] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_graph_notsole[Graph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_graph_notsole[Digraph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_mixed[Graph, Digraph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_mixed[Digraph, Graph] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph_reflexive[Graph-...] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph_reflexive[Digraph-...] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph PASSED [ > 81%] > tests/test_graphs.py::test_label_html PASSED [ > 81%] > tests/test_init.py::test_set_default_engine_invalid PASSED [ > 81%] > tests/test_init.py::test_set_default_format_invalid PASSED [ > 81%] > tests/test_init.py::test_set_default_engine PASSED [ > 82%] > tests/test_init.py::test_set_default_format PASSED [ > 82%] > tests/test_init.py::test_set_jupyter_format PASSED [ > 82%] > tests/test_jupyter_integration.py::test_get_jupyter_format_mimetype_invalid_raises_unknown > PASSED [ 83%] > tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_normalizes > PASSED [ 83%] > tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_raises_unsupported > PASSED [ 83%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding PASSED [ > 83%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[utf-8] > PASSED [ 84%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[ascii] > PASSED [ 84%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[latin1] > PASSED [ 84%] > tests/test_parameters.py::test_parameters[Graph] PASSED [ > 85%] > tests/test_parameters.py::test_parameters[Digraph] PASSED [ > 85%] > tests/test_parameters.py::test_parameters[Source] PASSED [ > 85%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_engine] > PASSED [ 85%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_format] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_renderer] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_formatter] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_engine] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_format] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_renderer] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_formatter] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_engine] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_format] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_renderer] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_formatter] > PASSED [ 89%] > tests/test_quoting.py::test_deprecated_escape[G] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[E] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[T] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[H] PASSED [ > 90%] > tests/test_quoting.py::test_deprecated_escape[L] PASSED [ > 90%] > tests/test_quoting.py::test_deprecated_escape[l] PASSED [ > 90%] > tests/test_quoting.py::test_quote["spam"-"\\"spam\\""] PASSED [ > 91%] > tests/test_quoting.py::test_quote[node-"node"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[EDGE-"EDGE"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[Graph-"Graph"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[\\G \\N \\E \\T \\H \\L-"\\G \\N \\E \\T > \\H \\L"] PASSED [ 92%] > tests/test_quoting.py::test_quote[\\n \\l \\r-"\\n \\l \\r"] PASSED [ > 92%] > tests/test_quoting.py::test_quote[\r\n-"\r\n"] PASSED [ > 92%] > tests/test_quoting.py::test_quote[\\\\n-"\\\\n"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\u0665.\u0660-"\u0665.\u0660"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\"spam-"\\"spam"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\\\"spam-"\\\\\\"spam"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\\\\\"spam-"\\\\\\"spam"] PASSED [ > 94%] > tests/test_quoting.py::test_quote[\\\\\\\\"spam-"\\\\\\\\\\"spam"] PASSED [ > 94%] > tests/test_quoting.py::test_attr_list[attributes0- [spam=eggs]] PASSED [ > 94%] > tests/test_quoting.py::test_attr_list[attributes1- [spam=eggs]] PASSED [ > 95%] > tests/test_quoting.py::test_nohtml[spam-spam-spam] PASSED [ > 95%] > tests/test_quoting.py::test_nohtml[<>-*-<>-<>-*-<>-"<>-*-<>"] PASSED [ > 95%] > tests/test_saving.py::test_saves_source_from_file PASSED [ > 95%] > tests/test_sources.py::test_source_parameter[engine] PASSED [ > 96%] > tests/test_sources.py::test_source_parameter[format] PASSED [ > 96%] > tests/test_sources.py::test_source_parameter[encoding] PASSED [ > 96%] > tests/test_sources.py::test_init PASSED [ > 97%] > tests/test_sources.py::test_init_filename PASSED [ > 97%] > tests/test_sources.py::test_filepath PASSED [ > 97%] > tests/test_sources.py::test_from_file PASSED [ > 97%] > tests/test_sources.py::test_source_iter PASSED [ > 98%] > tests/test_tools.py::test_mkdirs_invalid PASSED [ > 98%] > tests/test_tools.py::test_mkdirs PASSED [ > 98%] > tests/test_tools.py::test_deprecate_positional_args[FutureWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[DeprecationWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[PendingDeprecationWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[None-None] PASSED > [100%] > > =================================== FAILURES > =================================== > _________________ [doctest] graphviz.backend.rendering.render > __________________ > 250 graphviz.UnknownSuffixWarning: If the suffix of ``outfile`` > 251 is empty or unknown. > 252 graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile`` > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > UNEXPECTED EXCEPTION: FileNotFoundError(2, 'No such file or directory') > Traceback (most recent call last): > File "/usr/lib/python3.12/doctest.py", line 1361, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[3]>", line 1, in <module> > File "/usr/lib/python3.12/pathlib.py", line 1049, in write_text > with self.open(mode='w', encoding=encoding, errors=errors, > newline=newline) as f: > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/pathlib.py", line 1015, in open > return io.open(self, mode, buffering, encoding, errors, newline) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > FileNotFoundError: [Errno 2] No such file or directory: > 'doctest-output/spam.gv' > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:259: > UnexpectedException > 251 is empty or unknown. > 252 graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile`` > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.12/doctest.py", line 1361, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[4]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:260: > UnexpectedException > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > 261 'doctest-output/spam.gv.png' > 262 >>> graphviz.render('dot', filepath='doctest-output/spam.gv', > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.12/doctest.py", line 1361, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[5]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:262: > UnexpectedException > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > 261 'doctest-output/spam.gv.png' > 262 >>> graphviz.render('dot', filepath='doctest-output/spam.gv', > 263 ... > outfile='doctest-output/spam.png').replace('\\', '/') > 264 'doctest-output/spam.png' > 265 >>> graphviz.render('dot', > outfile='doctest-output/spam.pdf').replace('\\', '/') > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.12/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.12/doctest.py", line 1361, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[6]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build/graphviz/backend/rendering.py:265: > UnexpectedException > ------------------------------ Captured log call > ------------------------------- > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpng', '-O', 'spam.gv'] > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpng', '-o', 'spam.png', 'spam.gv'] > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpdf', '-o', 'spam.pdf', 'spam.gv'] > ____ test_render_unknown_parameter_raises[args0-ValueError-unknown engine] > _____ > > args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown engine' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > with pytest.raises(expected_exception, match=match), > pytest.deprecated_call(): > > graphviz.render(*args) > > tests/backend/test_rendering.py:40: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > graphviz/_tools.py:171: in wrapper > return func(*args, **kwargs) > graphviz/backend/rendering.py:314: in render > cmd = dot_command.command(engine, format, > graphviz/backend/dot_command.py:31: in command > parameters.verify_engine(engine, required=True) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > engine = '' > > def verify_engine(engine: str, *, required: bool = REQUIRED) -> None: > if engine is None: > if required: > raise ValueError('missing engine') > elif engine.lower() not in ENGINES: > > raise ValueError(f'unknown engine: {engine!r}' > f' (must be one of {sorted(ENGINES)})') > E ValueError: unknown engine: '' (must be one of ['circo', 'dot', > 'fdp', 'neato', 'osage', 'patchwork', 'sfdp', 'twopi']) > > graphviz/parameters/engines.py:28: ValueError > > During handling of the above exception, another exception occurred: > > args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown engine' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > > with pytest.raises(expected_exception, match=match), > > pytest.deprecated_call(): > E Failed: DID NOT WARN. No warnings of type (<class > 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class > 'FutureWarning'>) were emitted. > E Emitted warnings: []. > > tests/backend/test_rendering.py:39: Failed > ____ test_render_unknown_parameter_raises[args1-ValueError-unknown format] > _____ > > args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown format' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > with pytest.raises(expected_exception, match=match), > pytest.deprecated_call(): > > graphviz.render(*args) > > tests/backend/test_rendering.py:40: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > graphviz/_tools.py:171: in wrapper > return func(*args, **kwargs) > graphviz/backend/rendering.py:307: in render > outfile = get_outfile(filepath, > graphviz/backend/rendering.py:142: in get_outfile > parameters.verify_format(format, required=True) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > format = '' > > def verify_format(format: str, *, required: bool = REQUIRED) -> None: > if format is None: > if required: > raise ValueError('missing format') > elif format.lower() not in FORMATS: > > raise ValueError(f'unknown format: {format!r}' > f' (must be one of {sorted(FORMATS)})') > E ValueError: unknown format: '' (must be one of ['bmp', 'canon', > 'cgimage', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'dot_json', 'eps', 'exr', > 'fig', 'gd', 'gd2', 'gif', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap', > 'jp2', 'jpe', 'jpeg', 'jpg', 'json', 'json0', 'pct', 'pdf', 'pic', 'pict', > 'plain', 'plain-ext', 'png', 'pov', 'ps', 'ps2', 'psd', 'sgi', 'svg', 'svgz', > 'tga', 'tif', 'tiff', 'tk', 'vml', 'vmlz', 'vrml', 'wbmp', 'webp', 'x11', > 'xdot', 'xdot1.2', 'xdot1.4', 'xdot_json', 'xlib']) > > graphviz/parameters/formats.py:56: ValueError > > During handling of the above exception, another exception occurred: > > args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown format' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > > with pytest.raises(expected_exception, match=match), > > pytest.deprecated_call(): > E Failed: DID NOT WARN. No warnings of type (<class > 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class > 'FutureWarning'>) were emitted. > E Emitted warnings: []. > > tests/backend/test_rendering.py:39: Failed > > ---------- coverage: platform linux, python 3.12.2-final-0 ----------- > Name > Stmts Miss Cover > ----------------------------------------------------------------------------------------------- > /<<PKGBUILDDIR>>/conftest.py 23 2 91% > /usr/lib/python3/dist-packages/_distutils_hack/__init__.py > 100 95 5% > /usr/lib/python3/dist-packages/_pytest/_argcomplete.py > 37 36 3% > /usr/lib/python3/dist-packages/_pytest/_code/code.py > 754 516 32% > /usr/lib/python3/dist-packages/_pytest/_code/source.py > 145 78 46% > /usr/lib/python3/dist-packages/_pytest/_io/saferepr.py > 67 49 27% > /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py > 126 80 37% > /usr/lib/python3/dist-packages/_pytest/_io/wcwidth.py > 25 16 36% > /usr/lib/python3/dist-packages/_pytest/_py/path.py > 948 943 1% > /usr/lib/python3/dist-packages/_pytest/assertion/__init__.py > 88 74 16% > /usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py > 663 342 48% > /usr/lib/python3/dist-packages/_pytest/cacheprovider.py > 316 265 16% > /usr/lib/python3/dist-packages/_pytest/capture.py > 607 450 26% > /usr/lib/python3/dist-packages/_pytest/compat.py > 127 79 38% > /usr/lib/python3/dist-packages/_pytest/config/__init__.py > 917 731 20% > /usr/lib/python3/dist-packages/_pytest/config/argparsing.py > 271 191 30% > /usr/lib/python3/dist-packages/_pytest/config/compat.py > 44 22 50% > /usr/lib/python3/dist-packages/_pytest/debugging.py > 230 221 4% > /usr/lib/python3/dist-packages/_pytest/deprecated.py > 26 25 4% > /usr/lib/python3/dist-packages/_pytest/doctest.py > 355 189 47% > /usr/lib/python3/dist-packages/_pytest/faulthandler.py > 58 43 26% > /usr/lib/python3/dist-packages/_pytest/fixtures.py > 809 428 47% > /usr/lib/python3/dist-packages/_pytest/helpconfig.py > 135 125 7% > /usr/lib/python3/dist-packages/_pytest/junitxml.py > 367 365 1% > /usr/lib/python3/dist-packages/_pytest/legacypath.py > 216 188 13% > /usr/lib/python3/dist-packages/_pytest/logging.py > 450 303 33% > /usr/lib/python3/dist-packages/_pytest/main.py > 493 268 46% > /usr/lib/python3/dist-packages/_pytest/mark/__init__.py > 132 85 36% > /usr/lib/python3/dist-packages/_pytest/mark/expression.py > 123 74 40% > /usr/lib/python3/dist-packages/_pytest/mark/structures.py > 276 195 29% > /usr/lib/python3/dist-packages/_pytest/monkeypatch.py > 168 114 32% > /usr/lib/python3/dist-packages/_pytest/nodes.py > 337 206 39% > /usr/lib/python3/dist-packages/_pytest/nose.py > 29 20 31% > /usr/lib/python3/dist-packages/_pytest/outcomes.py > 106 94 11% > /usr/lib/python3/dist-packages/_pytest/pastebin.py > 70 69 1% > /usr/lib/python3/dist-packages/_pytest/pathlib.py > 403 281 30% > /usr/lib/python3/dist-packages/_pytest/python.py > 911 576 37% > /usr/lib/python3/dist-packages/_pytest/python_api.py > 334 307 8% > /usr/lib/python3/dist-packages/_pytest/python_path.py > 16 15 6% > /usr/lib/python3/dist-packages/_pytest/recwarn.py > 140 84 40% > /usr/lib/python3/dist-packages/_pytest/reports.py > 298 258 13% > /usr/lib/python3/dist-packages/_pytest/runner.py > 301 156 48% > /usr/lib/python3/dist-packages/_pytest/scope.py > 37 27 27% > /usr/lib/python3/dist-packages/_pytest/setuponly.py > 59 51 14% > /usr/lib/python3/dist-packages/_pytest/setupplan.py > 24 20 17% > /usr/lib/python3/dist-packages/_pytest/skipping.py > 165 114 31% > /usr/lib/python3/dist-packages/_pytest/stash.py > 36 25 31% > /usr/lib/python3/dist-packages/_pytest/stepwise.py > 74 72 3% > /usr/lib/python3/dist-packages/_pytest/terminal.py > 927 711 23% > /usr/lib/python3/dist-packages/_pytest/threadexception.py > 43 27 37% > /usr/lib/python3/dist-packages/_pytest/tmpdir.py > 156 89 43% > /usr/lib/python3/dist-packages/_pytest/unittest.py > 253 242 4% > /usr/lib/python3/dist-packages/_pytest/unraisableexception.py > 45 29 36% > /usr/lib/python3/dist-packages/_pytest/warnings.py > 74 52 30% > /usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py > 37 34 8% > /usr/lib/python3/dist-packages/pluggy/_callers.py > 109 44 60% > /usr/lib/python3/dist-packages/pluggy/_hooks.py > 266 180 32% > /usr/lib/python3/dist-packages/pluggy/_manager.py > 230 180 22% > /usr/lib/python3/dist-packages/pluggy/_result.py > 50 39 22% > /usr/lib/python3/dist-packages/pluggy/_tracing.py > 48 38 21% > /usr/lib/python3/dist-packages/pytest/__init__.py > 91 89 2% > /usr/lib/python3/dist-packages/pytest_cov/compat.py > 17 13 24% > /usr/lib/python3/dist-packages/pytest_cov/embed.py > 69 63 9% > /usr/lib/python3/dist-packages/pytest_cov/engine.py > 250 229 8% > /usr/lib/python3/dist-packages/pytest_cov/plugin.py > 224 194 13% > /usr/lib/python3/dist-packages/pytest_doctestplus/plugin.py > 486 479 1% > /usr/lib/python3/dist-packages/pytest_mock/_util.py > 19 11 42% > /usr/lib/python3/dist-packages/pytest_mock/plugin.py > 312 233 25% > graphviz/__init__.py > 36 0 100% > graphviz/_compat.py > 5 0 100% > graphviz/_defaults.py > 21 0 100% > graphviz/_tools.py > 64 0 100% > graphviz/backend/__init__.py > 9 0 100% > graphviz/backend/dot_command.py > 20 0 100% > graphviz/backend/execute.py > 61 0 100% > graphviz/backend/mixins.py > 37 0 100% > graphviz/backend/piping.py > 26 0 100% > graphviz/backend/rendering.py > 83 0 100% > graphviz/backend/unflattening.py > 21 0 100% > graphviz/backend/upstream_version.py > 15 0 100% > graphviz/backend/viewing.py > 34 0 100% > graphviz/base.py > 8 0 100% > graphviz/copying.py > 7 0 100% > graphviz/dot.py > 132 0 100% > graphviz/encoding.py > 22 0 100% > graphviz/exceptions.py > 7 0 100% > graphviz/graphs.py > 28 0 100% > graphviz/jupyter_integration.py > 34 0 100% > graphviz/parameters/__init__.py > 6 0 100% > graphviz/parameters/base.py > 7 0 100% > graphviz/parameters/engines.py > 32 0 100% > graphviz/parameters/formats.py > 32 0 100% > graphviz/parameters/formatters.py > 32 0 100% > graphviz/parameters/mixins.py > 26 0 100% > graphviz/parameters/renderers.py > 32 0 100% > graphviz/piping.py > 39 0 100% > graphviz/quoting.py > 59 0 100% > graphviz/rendering.py > 40 0 100% > graphviz/saving.py > 44 0 100% > graphviz/sources.py > 52 0 100% > graphviz/unflattening.py > 14 0 100% > tests/_common.py > 25 2 92% > tests/backend/conftest.py > 13 1 92% > tests/backend/test_execute.py > 43 0 100% > tests/backend/test_piping.py > 72 18 75% > tests/backend/test_rendering.py > 107 0 100% > tests/backend/test_unflattening.py > 20 0 100% > tests/backend/test_upstream_version.py > 20 0 100% > tests/backend/test_viewing.py > 20 1 95% > tests/conftest.py > 62 22 65% > tests/test_all_classes.py > 208 0 100% > tests/test_graphs.py > 117 0 100% > tests/test_init.py > 77 0 100% > tests/test_jupyter_integration.py > 33 0 100% > tests/test_parameters.py > 33 0 100% > tests/test_quoting.py > 29 0 100% > tests/test_saving.py > 10 0 100% > tests/test_sources.py > 47 1 98% > tests/test_tools.py > 39 0 100% > ----------------------------------------------------------------------------------------------- > TOTAL > 18202 11988 34% > Coverage HTML written to dir htmlcov > > ============================= slowest 10 durations > ============================= > 0.09s call > .pybuild/cpython3_3.12_graphviz/build/graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_ > 0.08s call > .pybuild/cpython3_3.12_graphviz/build/graphviz/piping.py::graphviz.piping.Pipe.pipe > 0.07s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_execute.py::test_run_check_input_lines_mocked > 0.07s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] > 0.07s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] > 0.07s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] > 0.07s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] > 0.06s setup > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False] > 0.05s call > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain] > 0.05s call > .pybuild/cpython3_3.12_graphviz/build/tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml > .+</svg>\\s*$] > =========================== short test summary info > ============================ > FAILED graphviz/backend/rendering.py::graphviz.backend.rendering.render > FAILED > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown > engine] > FAILED > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown > format] > ================= 3 failed, 346 passed, 2 deselected in 10.33s > ================= > E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_graphviz/build; python3.12 -m pytest > -k 'not test_pipe_pipe_invalid_data_mocked' > I: pybuild base:305: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build; python3.11 -m pytest > -k 'not test_pipe_pipe_invalid_data_mocked' > ============================= test session starts > ============================== > platform linux -- Python 3.11.8, pytest-8.0.2, pluggy-1.4.0 > rootdir: /<<PKGBUILDDIR>> > configfile: setup.cfg > plugins: cov-4.1.0, mock-3.12.0, doctestplus-1.2.0 > collected 351 items / 2 deselected / 349 selected > > graphviz/__init__.py::graphviz PASSED [ > 0%] > graphviz/_tools.py::graphviz._tools.attach PASSED [ > 0%] > graphviz/_tools.py::graphviz._tools.mapping_items PASSED [ > 0%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe PASSED [ > 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines PASSED [ > 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines_string PASSED > [ 1%] > graphviz/backend/piping.py::graphviz.backend.piping.pipe_string PASSED [ > 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_formats > PASSED [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_suffixes > PASSED [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.infer_format PASSED > [ 2%] > graphviz/backend/rendering.py::graphviz.backend.rendering.render FAILED [ > 3%] > graphviz/backend/upstream_version.py::graphviz.backend.upstream_version.version > PASSED [ 3%] > graphviz/graphs.py::graphviz.graphs PASSED [ > 3%] > graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_ > PASSED [ 4%] > graphviz/piping.py::graphviz.piping.Pipe.pipe PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.a_list PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.attr_list PASSED [ > 4%] > graphviz/quoting.py::graphviz.quoting.escape PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.nohtml PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.quote PASSED [ > 5%] > graphviz/quoting.py::graphviz.quoting.quote_edge PASSED [ > 6%] > graphviz/rendering.py::graphviz.rendering.Render.render PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[render-args0] PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[pipe-args1] PASSED [ > 6%] > tests/backend/test_execute.py::test_missing_executable[unflatten-args2] > PASSED [ 7%] > tests/backend/test_execute.py::test_missing_executable[version-args3] PASSED > [ 7%] > tests/backend/test_execute.py::test_run_check_oserror PASSED [ > 7%] > tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=False] > PASSED [ 8%] > tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=True] > PASSED [ 8%] > tests/backend/test_execute.py::test_run_check_input_lines_mocked PASSED [ > 8%] > tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False] PASSED [ > 8%] > tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True] PASSED [ > 9%] > tests/backend/test_piping.py::test_pipe[dot-svg-None-None-(?s)^<\\?xml > .+</svg>\\s*$] PASSED [ 9%] > tests/backend/test_piping.py::test_pipe[dot-ps-ps-core-%!PS-] PASSED [ > 9%] > tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml > .+</svg>\\s*$] PASSED [ 10%] > tests/backend/test_piping.py::test_pipe_mocked[quiet=False] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_mocked[quiet=True] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_string_mocked[quiet=False] PASSED [ > 10%] > tests/backend/test_piping.py::test_pipe_string_mocked[quiet=True] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] PASSED [ > 11%] > tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] > PASSED [ 12%] > tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] > PASSED [ 12%] > tests/backend/test_rendering.py::test_render_missing_file[quiet=False] PASSED > [ 12%] > tests/backend/test_rendering.py::test_render_missing_file[quiet=True] PASSED > [ 12%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown > engine] FAILED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown > format] FAILED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args2-ValueError-unknown > renderer] PASSED [ 13%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args3-RequiredArgumentError-without > renderer] PASSED [ 14%] > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args4-ValueError-unknown > formatter] PASSED [ 14%] > tests/backend/test_rendering.py::test_render[dot-pdf-None-None-pdf] PASSED [ > 14%] > tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain] > PASSED [ 14%] > tests/backend/test_rendering.py::test_render_img PASSED [ > 15%] > tests/backend/test_rendering.py::test_render_outfile_differnt_parent PASSED [ > 15%] > tests/backend/test_rendering.py::test_render_mocked[quiet=False-None] PASSED > [ 15%] > tests/backend/test_rendering.py::test_render_mocked[quiet=False-dot_sources] > PASSED [ 16%] > tests/backend/test_rendering.py::test_render_mocked[quiet=True-None] PASSED [ > 16%] > tests/backend/test_rendering.py::test_render_mocked[quiet=True-dot_sources] > PASSED [ 16%] > tests/backend/test_rendering.py::test_render_raises_mocked[args0-kwargs0-RequiredArgumentError-filepath: > \\(required] PASSED [ 16%] > tests/backend/test_rendering.py::test_render_raises_mocked[args1-kwargs1-RequiredArgumentError-filepath: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args2-kwargs2-RequiredArgumentError-format: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args3-kwargs3-RequiredArgumentError-filepath: > \\(required] PASSED [ 17%] > tests/backend/test_rendering.py::test_render_raises_mocked[args4-kwargs4-ValueError-outfile > 'spam\\.gv' must be different from input file 'spam\\.gv'] PASSED [ 18%] > tests/backend/test_rendering.py::test_render_raises_mocked[args5-kwargs5-ValueError-overwrite_filepath > cannot be combined with raise_if_result_exists] PASSED [ 18%] > tests/backend/test_rendering.py::test_render_raises_mocked[args6-kwargs6-FileExistsError-output > file exists: 'spam.png'] PASSED [ 18%] > tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs0-spam.gv.pdf] > PASSED [ 18%] > tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs1-spam.gv.dot.plain] > PASSED [ 19%] > tests/backend/test_rendering.py::test_get_filepath[spam.pdf-spam.gv] PASSED [ > 19%] > tests/backend/test_rendering.py::test_get_filepath[spam-spam.gv] PASSED [ > 19%] > tests/backend/test_rendering.py::test_get_format[spam.gv.pdf-None-pdf] PASSED > [ 20%] > tests/backend/test_rendering.py::test_get_format[spam.jpeg-None-jpeg] PASSED > [ 20%] > tests/backend/test_rendering.py::test_get_format[spam.SVG-None-svg] PASSED [ > 20%] > tests/backend/test_rendering.py::test_get_format[spam.pdf-None-pdf] PASSED [ > 20%] > tests/backend/test_rendering.py::test_get_format[spam.pdf-pdf-pdf] PASSED [ > 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam.jpg-jpeg-jpeg-FormatSuffixMismatchWarning-expected > format 'jpg' from outfile differs from given format: 'jpeg'] PASSED [ 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam.dot-plain-plain-FormatSuffixMismatchWarning-expected > format 'dot' from outfile differs from given format: 'plain'] PASSED [ 21%] > tests/backend/test_rendering.py::test_get_format_warns[spam-svg-svg-UnknownSuffixWarning-unknown > outfile suffix '' \\(expected: '\\.svg'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_warns[spam.peng-png-png-UnknownSuffixWarning-unknown > outfile suffix '.peng' \\(expected: '\\.png'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_warns[spam-pdf-pdf-UnknownSuffixWarning-unknown > outfile suffix '' \\(expected: '\\.pdf'\\)] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_raises[spam-RequiredArgumentError-cannot > infer rendering format from suffix '' of outfile: 'spam'] PASSED [ 22%] > tests/backend/test_rendering.py::test_get_format_raises[spam.peng-RequiredArgumentError-cannot > infer rendering format from suffix '.peng' of outfile: 'spam.peng'] PASSED [ > 23%] > tests/backend/test_rendering.py::test_get_format_raises[spam.wav-RequiredArgumentError-cannot > infer rendering format from suffix '.wav' of outfile: 'spam.wav'] PASSED [ > 23%] > tests/backend/test_unflattening.py::test_unflatten_stagger_missing PASSED [ > 23%] > tests/backend/test_unflattening.py::test_unflatten[digraph {1 -> 2; 1 -> 3; 1 > -> 4}-kwargs0-digraph { 1 -> 2 [minlen=1]; 1 -> 3 [minlen=2]; 1 -> 4 > [minlen=3]; }] PASSED [ 24%] > tests/backend/test_unflattening.py::test_unflatten_mocked PASSED [ > 24%] > tests/backend/test_upstream_version.py::test_version PASSED [ > 24%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 1.2.3 (mocked)-expected0] PASSED [ 24%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.43.20190912.0211 (20190912.0211)\n-expected1] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.2~dev.20200927.0217 (20200927.0217)\n-expected2] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.1 (mocked)\n-expected3] PASSED [ 25%] > tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz > version 2.44.2~dev.20200704.1652 (mocked)\n-expected4] PASSED [ 26%] > tests/backend/test_upstream_version.py::test_version_parsefail_mocked PASSED > [ 26%] > tests/backend/test_viewing.py::test_view_unknown_platform PASSED [ > 26%] > tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False] > PASSED [ 26%] > tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=True] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True] > PASSED [ 27%] > tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False] > PASSED [ 28%] > tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True] > PASSED [ 28%] > tests/test_all_classes.py::test_copy[Graph] PASSED [ > 29%] > tests/test_all_classes.py::test_copy[Digraph] PASSED [ > 29%] > tests/test_all_classes.py::test_copy[Source] PASSED [ > 29%] > tests/test_all_classes.py::test_str[Graph] PASSED [ > 30%] > tests/test_all_classes.py::test_str[Digraph] PASSED [ > 30%] > tests/test_all_classes.py::test_str[Source] PASSED [ > 30%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-engine-ValueError-unknown > engine] PASSED [ 30%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-format-ValueError-unknown > format] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-renderer-ValueError-unknown > renderer] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-formatter-ValueError-unknown > formatter] PASSED [ 31%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-encoding-LookupError-encoding] > PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-engine-ValueError-unknown > engine] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-format-ValueError-unknown > format] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-renderer-ValueError-unknown > renderer] PASSED [ 32%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-formatter-ValueError-unknown > formatter] PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-encoding-LookupError-encoding] > PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-engine-ValueError-unknown > engine] PASSED [ 33%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-format-ValueError-unknown > format] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-renderer-ValueError-unknown > renderer] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-formatter-ValueError-unknown > formatter] PASSED [ 34%] > tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-encoding-LookupError-encoding] > PASSED [ 34%] > tests/test_all_classes.py::test_encoding_none[Graph] PASSED [ > 35%] > tests/test_all_classes.py::test_encoding_none[Digraph] PASSED [ > 35%] > tests/test_all_classes.py::test_encoding_none[Source] PASSED [ > 35%] > tests/test_all_classes.py::test_render_raises_before_save[Graph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save[Digraph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs0] > PASSED [ 36%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs1] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs2] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs3] > PASSED [ 37%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs0] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs1] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs2] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs3] > PASSED [ 38%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2] > PASSED [ 39%] > tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3] > PASSED [ 40%] > tests/test_all_classes.py::test_render_mocked[Graph] PASSED [ > 40%] > tests/test_all_classes.py::test_render_mocked[Digraph] PASSED [ > 40%] > tests/test_all_classes.py::test_render_mocked[Source] PASSED [ > 40%] > tests/test_all_classes.py::test_render_outfile_mocked[Graph] PASSED [ > 41%] > tests/test_all_classes.py::test_render_outfile_mocked[Digraph] PASSED [ > 41%] > tests/test_all_classes.py::test_render_outfile_mocked[Source] PASSED [ > 41%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Graph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Digraph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Graph] > PASSED [ 42%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Digraph] > PASSED [ 43%] > tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source] > PASSED [ 43%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-None] > PASSED [ 43%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-False] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-True] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-0] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-1] > PASSED [ 44%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-2] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-None] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-False] > PASSED [ 45%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-True] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-0] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-1] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-2] > PASSED [ 46%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-None] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-False] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-True] > PASSED [ 47%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-0] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-1] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-2] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-None] > PASSED [ 48%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-False] > PASSED [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-True] > PASSED [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-0] PASSED > [ 49%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-1] PASSED > [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-2] PASSED > [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-None] > PASSED [ 50%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-False] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-True] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-0] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-1] > PASSED [ 51%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-2] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-None] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-False] > PASSED [ 52%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-True] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-0] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-1] > PASSED [ 53%] > tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-2] > PASSED [ 53%] > tests/test_all_classes.py::test_save_mocked[Graph] PASSED [ > 54%] > tests/test_all_classes.py::test_save_mocked[Digraph] PASSED [ > 54%] > tests/test_all_classes.py::test_save_mocked[Source] PASSED [ > 54%] > tests/test_all_classes.py::test_pipe[Graph] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe[Digraph] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe[Source] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-None] PASSED [ > 55%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-ascii] PASSED [ > 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-utf-8] PASSED [ > 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-None] PASSED > [ 56%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-ascii] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-utf-8] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-None] PASSED [ > 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-ascii] PASSED > [ 57%] > tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-utf-8] PASSED > [ 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-None] PASSED [ > 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-ascii] PASSED [ > 58%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-utf-8] PASSED [ > 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-None] PASSED [ > 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-ascii] PASSED > [ 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-utf-8] PASSED > [ 59%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-None] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-ascii] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-utf-8] PASSED [ > 60%] > tests/test_all_classes.py::test_pipe_lines_mocked[Graph] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_mocked[Digraph] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_mocked[Source] PASSED [ > 61%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Graph] PASSED > [ 61%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Digraph] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error[Source] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Graph] > PASSED [ 62%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Digraph] > PASSED [ 63%] > tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Graph] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Digraph] > PASSED [ 63%] > tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Source] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Graph] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Digraph] > PASSED [ 64%] > tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Source] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Graph] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Digraph] > PASSED [ 65%] > tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Source] > PASSED [ 65%] > tests/test_all_classes.py::test_unflatten[Graph] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten[Digraph] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten[Source] PASSED [ > 66%] > tests/test_all_classes.py::test_unflatten_mocked[Graph] PASSED [ > 67%] > tests/test_all_classes.py::test_unflatten_mocked[Digraph] PASSED [ > 67%] > tests/test_all_classes.py::test_unflatten_mocked[Source] PASSED [ > 67%] > tests/test_all_classes.py::test_view_mocked[Graph] PASSED [ > 67%] > tests/test_all_classes.py::test_view_mocked[Digraph] PASSED [ > 68%] > tests/test_all_classes.py::test_view_mocked[Source] PASSED [ > 68%] > tests/test_all_classes.py::test__view_unknown_platform[Graph] PASSED [ > 68%] > tests/test_all_classes.py::test__view_unknown_platform[Digraph] PASSED [ > 69%] > tests/test_all_classes.py::test__view_unknown_platform[Source] PASSED [ > 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Graph] PASSED > [ 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Digraph] > PASSED [ 69%] > tests/test_all_classes.py::test__view_mocked[platform='darwin'-Source] PASSED > [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Graph] PASSED > [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Digraph] > PASSED [ 70%] > tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Source] > PASSED [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Graph] PASSED [ > 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Digraph] PASSED > [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='linux'-Source] PASSED > [ 71%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Graph] PASSED > [ 72%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Digraph] > PASSED [ 72%] > tests/test_all_classes.py::test__view_mocked[platform='windows'-Source] > PASSED [ 72%] > tests/test_graphs.py::test_init_filename[Graph] PASSED [ > 73%] > tests/test_graphs.py::test_init_filename[Digraph] PASSED [ > 73%] > tests/test_graphs.py::test_init_body[Graph-...-...] PASSED [ > 73%] > tests/test_graphs.py::test_init_body[Digraph-...-...] PASSED [ > 73%] > tests/test_graphs.py::test_subgraph_render[Graph-...] PASSED [ > 74%] > tests/test_graphs.py::test_subgraph_render[Digraph-...] PASSED [ > 74%] > tests/test_graphs.py::test_clear[Graph-False] PASSED [ > 74%] > tests/test_graphs.py::test_clear[Graph-True] PASSED [ > 75%] > tests/test_graphs.py::test_clear[Digraph-False] PASSED [ > 75%] > tests/test_graphs.py::test_clear[Digraph-True] PASSED [ > 75%] > tests/test_graphs.py::test_iter_subgraph_strict[Graph] PASSED [ > 75%] > tests/test_graphs.py::test_iter_subgraph_strict[Digraph] PASSED [ > 76%] > tests/test_graphs.py::test_iter_strict[Graph-...] PASSED [ > 76%] > tests/test_graphs.py::test_iter_strict[Digraph-...] PASSED [ > 76%] > tests/test_graphs.py::test_attr_invalid_kw[Graph] PASSED [ > 77%] > tests/test_graphs.py::test_attr_invalid_kw[Digraph] PASSED [ > 77%] > tests/test_graphs.py::test_attr_kw_none[Graph-...] PASSED [ > 77%] > tests/test_graphs.py::test_attr_kw_none[Digraph-...] PASSED [ > 77%] > tests/test_graphs.py::test_escaped_quotes_and_escapes[Graph-...] PASSED [ > 78%] > tests/test_graphs.py::test_escaped_quotes_and_escapes[Digraph-...] PASSED [ > 78%] > tests/test_graphs.py::test_subgraph_graph_none[Graph-...] PASSED [ > 78%] > tests/test_graphs.py::test_subgraph_graph_none[Digraph-...] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_graph_notsole[Graph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_graph_notsole[Digraph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_mixed[Graph, Digraph] PASSED [ > 79%] > tests/test_graphs.py::test_subgraph_mixed[Digraph, Graph] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph_reflexive[Graph-...] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph_reflexive[Digraph-...] PASSED [ > 80%] > tests/test_graphs.py::test_subgraph PASSED [ > 81%] > tests/test_graphs.py::test_label_html PASSED [ > 81%] > tests/test_init.py::test_set_default_engine_invalid PASSED [ > 81%] > tests/test_init.py::test_set_default_format_invalid PASSED [ > 81%] > tests/test_init.py::test_set_default_engine PASSED [ > 82%] > tests/test_init.py::test_set_default_format PASSED [ > 82%] > tests/test_init.py::test_set_jupyter_format PASSED [ > 82%] > tests/test_jupyter_integration.py::test_get_jupyter_format_mimetype_invalid_raises_unknown > PASSED [ 83%] > tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_normalizes > PASSED [ 83%] > tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_raises_unsupported > PASSED [ 83%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding PASSED [ > 83%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[utf-8] > PASSED [ 84%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[ascii] > PASSED [ 84%] > tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[latin1] > PASSED [ 84%] > tests/test_parameters.py::test_parameters[Graph] PASSED [ > 85%] > tests/test_parameters.py::test_parameters[Digraph] PASSED [ > 85%] > tests/test_parameters.py::test_parameters[Source] PASSED [ > 85%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_engine] > PASSED [ 85%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_format] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_renderer] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_formatter] > PASSED [ 86%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_engine] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_format] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_renderer] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_formatter] > PASSED [ 87%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_engine] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_format] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_renderer] > PASSED [ 88%] > tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_formatter] > PASSED [ 89%] > tests/test_quoting.py::test_deprecated_escape[G] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[E] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[T] PASSED [ > 89%] > tests/test_quoting.py::test_deprecated_escape[H] PASSED [ > 90%] > tests/test_quoting.py::test_deprecated_escape[L] PASSED [ > 90%] > tests/test_quoting.py::test_deprecated_escape[l] PASSED [ > 90%] > tests/test_quoting.py::test_quote["spam"-"\\"spam\\""] PASSED [ > 91%] > tests/test_quoting.py::test_quote[node-"node"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[EDGE-"EDGE"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[Graph-"Graph"] PASSED [ > 91%] > tests/test_quoting.py::test_quote[\\G \\N \\E \\T \\H \\L-"\\G \\N \\E \\T > \\H \\L"] PASSED [ 92%] > tests/test_quoting.py::test_quote[\\n \\l \\r-"\\n \\l \\r"] PASSED [ > 92%] > tests/test_quoting.py::test_quote[\r\n-"\r\n"] PASSED [ > 92%] > tests/test_quoting.py::test_quote[\\\\n-"\\\\n"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\u0665.\u0660-"\u0665.\u0660"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\"spam-"\\"spam"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\\\"spam-"\\\\\\"spam"] PASSED [ > 93%] > tests/test_quoting.py::test_quote[\\\\\\"spam-"\\\\\\"spam"] PASSED [ > 94%] > tests/test_quoting.py::test_quote[\\\\\\\\"spam-"\\\\\\\\\\"spam"] PASSED [ > 94%] > tests/test_quoting.py::test_attr_list[attributes0- [spam=eggs]] PASSED [ > 94%] > tests/test_quoting.py::test_attr_list[attributes1- [spam=eggs]] PASSED [ > 95%] > tests/test_quoting.py::test_nohtml[spam-spam-spam] PASSED [ > 95%] > tests/test_quoting.py::test_nohtml[<>-*-<>-<>-*-<>-"<>-*-<>"] PASSED [ > 95%] > tests/test_saving.py::test_saves_source_from_file PASSED [ > 95%] > tests/test_sources.py::test_source_parameter[engine] PASSED [ > 96%] > tests/test_sources.py::test_source_parameter[format] PASSED [ > 96%] > tests/test_sources.py::test_source_parameter[encoding] PASSED [ > 96%] > tests/test_sources.py::test_init PASSED [ > 97%] > tests/test_sources.py::test_init_filename PASSED [ > 97%] > tests/test_sources.py::test_filepath PASSED [ > 97%] > tests/test_sources.py::test_from_file PASSED [ > 97%] > tests/test_sources.py::test_source_iter PASSED [ > 98%] > tests/test_tools.py::test_mkdirs_invalid PASSED [ > 98%] > tests/test_tools.py::test_mkdirs PASSED [ > 98%] > tests/test_tools.py::test_deprecate_positional_args[FutureWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[DeprecationWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[PendingDeprecationWarning- > third='third' ] PASSED [ 99%] > tests/test_tools.py::test_deprecate_positional_args[None-None] PASSED > [100%] > > =================================== FAILURES > =================================== > _________________ [doctest] graphviz.backend.rendering.render > __________________ > 250 graphviz.UnknownSuffixWarning: If the suffix of ``outfile`` > 251 is empty or unknown. > 252 graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile`` > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > UNEXPECTED EXCEPTION: FileNotFoundError(2, 'No such file or directory') > Traceback (most recent call last): > File "/usr/lib/python3.11/doctest.py", line 1355, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[3]>", line 1, in <module> > File "/usr/lib/python3.11/pathlib.py", line 1079, in write_text > with self.open(mode='w', encoding=encoding, errors=errors, > newline=newline) as f: > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/pathlib.py", line 1045, in open > return io.open(self, mode, buffering, encoding, errors, newline) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > FileNotFoundError: [Errno 2] No such file or directory: > 'doctest-output/spam.gv' > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:259: > UnexpectedException > 251 is empty or unknown. > 252 graphviz.FormatSuffixMismatchWarning: If the suffix of ``outfile`` > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.11/doctest.py", line 1355, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[4]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:260: > UnexpectedException > 253 does not match the given ``format``. > 254 > 255 Example: > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > 261 'doctest-output/spam.gv.png' > 262 >>> graphviz.render('dot', filepath='doctest-output/spam.gv', > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.11/doctest.py", line 1355, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[5]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:262: > UnexpectedException > 256 >>> doctest_mark_exe() > 257 >>> import pathlib > 258 >>> import graphviz > 259 >>> assert > pathlib.Path('doctest-output/spam.gv').write_text('graph { spam }') == 14 > 260 >>> graphviz.render('dot', 'png', > 'doctest-output/spam.gv').replace('\\', '/') > 261 'doctest-output/spam.gv.png' > 262 >>> graphviz.render('dot', filepath='doctest-output/spam.gv', > 263 ... > outfile='doctest-output/spam.png').replace('\\', '/') > 264 'doctest-output/spam.png' > 265 >>> graphviz.render('dot', > outfile='doctest-output/spam.pdf').replace('\\', '/') > UNEXPECTED EXCEPTION: ExecutableNotFound("failed to execute PosixPath('dot'), > make sure the Graphviz executables are on your systems' PATH") > Traceback (most recent call last): > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 78, in run_check > proc = subprocess.run(cmd, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 548, in run > with Popen(*popenargs, **kwargs) as process: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > File "/usr/lib/python3.11/subprocess.py", line 1026, in __init__ > self._execute_child(args, executable, preexec_fn, close_fds, > File "/usr/lib/python3.11/subprocess.py", line 1953, in _execute_child > raise child_exception_type(errno_num, err_msg, err_filename) > FileNotFoundError: [Errno 2] No such file or directory: > PosixPath('doctest-output') > The above exception was the direct cause of the following exception: > Traceback (most recent call last): > File "/usr/lib/python3.11/doctest.py", line 1355, in __run > exec(compile(example.source, filename, "single", > File "<doctest graphviz.backend.rendering.render[6]>", line 1, in <module> > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/_tools.py", > line 171, in wrapper > return func(*args, **kwargs) > ^^^^^^^^^^^^^^^^^^^^^ > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py", > line 326, in render > execute.run_check(cmd, > File > "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/execute.py", > line 81, in run_check > raise ExecutableNotFound(cmd) from e > graphviz.backend.execute.ExecutableNotFound: failed to execute > PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build/graphviz/backend/rendering.py:265: > UnexpectedException > ------------------------------ Captured log call > ------------------------------- > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpng', '-O', 'spam.gv'] > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpng', '-o', 'spam.png', 'spam.gv'] > DEBUG graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), > '-Kdot', '-Tpdf', '-o', 'spam.pdf', 'spam.gv'] > ____ test_render_unknown_parameter_raises[args0-ValueError-unknown engine] > _____ > > args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown engine' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > with pytest.raises(expected_exception, match=match), > pytest.deprecated_call(): > > graphviz.render(*args) > > tests/backend/test_rendering.py:40: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > graphviz/_tools.py:171: in wrapper > return func(*args, **kwargs) > graphviz/backend/rendering.py:314: in render > cmd = dot_command.command(engine, format, > graphviz/backend/dot_command.py:31: in command > parameters.verify_engine(engine, required=True) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > engine = '' > > def verify_engine(engine: str, *, required: bool = REQUIRED) -> None: > if engine is None: > if required: > raise ValueError('missing engine') > elif engine.lower() not in ENGINES: > > raise ValueError(f'unknown engine: {engine!r}' > f' (must be one of {sorted(ENGINES)})') > E ValueError: unknown engine: '' (must be one of ['circo', 'dot', > 'fdp', 'neato', 'osage', 'patchwork', 'sfdp', 'twopi']) > > graphviz/parameters/engines.py:28: ValueError > > During handling of the above exception, another exception occurred: > > args = ['', 'pdf', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown engine' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > > with pytest.raises(expected_exception, match=match), > > pytest.deprecated_call(): > E Failed: DID NOT WARN. No warnings of type (<class > 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class > 'FutureWarning'>) were emitted. > E Emitted warnings: []. > > tests/backend/test_rendering.py:39: Failed > ____ test_render_unknown_parameter_raises[args1-ValueError-unknown format] > _____ > > args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown format' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > with pytest.raises(expected_exception, match=match), > pytest.deprecated_call(): > > graphviz.render(*args) > > tests/backend/test_rendering.py:40: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > graphviz/_tools.py:171: in wrapper > return func(*args, **kwargs) > graphviz/backend/rendering.py:307: in render > outfile = get_outfile(filepath, > graphviz/backend/rendering.py:142: in get_outfile > parameters.verify_format(format, required=True) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > format = '' > > def verify_format(format: str, *, required: bool = REQUIRED) -> None: > if format is None: > if required: > raise ValueError('missing format') > elif format.lower() not in FORMATS: > > raise ValueError(f'unknown format: {format!r}' > f' (must be one of {sorted(FORMATS)})') > E ValueError: unknown format: '' (must be one of ['bmp', 'canon', > 'cgimage', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'dot_json', 'eps', 'exr', > 'fig', 'gd', 'gd2', 'gif', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap', > 'jp2', 'jpe', 'jpeg', 'jpg', 'json', 'json0', 'pct', 'pdf', 'pic', 'pict', > 'plain', 'plain-ext', 'png', 'pov', 'ps', 'ps2', 'psd', 'sgi', 'svg', 'svgz', > 'tga', 'tif', 'tiff', 'tk', 'vml', 'vmlz', 'vrml', 'wbmp', 'webp', 'x11', > 'xdot', 'xdot1.2', 'xdot1.4', 'xdot_json', 'xlib']) > > graphviz/parameters/formats.py:56: ValueError > > During handling of the above exception, another exception occurred: > > args = ['dot', '', 'nonfilepath'], expected_exception = <class 'ValueError'> > match = 'unknown format' > > @pytest.mark.parametrize( > 'args, expected_exception, match', > [(['', 'pdf', 'nonfilepath'], ValueError, r'unknown engine'), > (['dot', '', 'nonfilepath'], ValueError, r'unknown format'), > (['dot', 'ps', 'nonfilepath', '', None], ValueError, r'unknown > renderer'), > (['dot', 'ps', 'nonfilepath', None, 'core'], > graphviz.RequiredArgumentError, r'without renderer'), > (['dot', 'ps', 'nonfilepath', 'ps', ''], ValueError, r'unknown > formatter')], > ids=lambda x: getattr(x, '__name__', x)) > def test_render_unknown_parameter_raises(args, expected_exception, match): > > with pytest.raises(expected_exception, match=match), > > pytest.deprecated_call(): > E Failed: DID NOT WARN. No warnings of type (<class > 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class > 'FutureWarning'>) were emitted. > E Emitted warnings: []. > > tests/backend/test_rendering.py:39: Failed > > ---------- coverage: platform linux, python 3.11.8-final-0 ----------- > Name > Stmts Miss Cover > ----------------------------------------------------------------------------------------------- > /<<PKGBUILDDIR>>/conftest.py 23 2 91% > /usr/lib/python3/dist-packages/_distutils_hack/__init__.py > 100 95 5% > /usr/lib/python3/dist-packages/_pytest/_argcomplete.py > 37 36 3% > /usr/lib/python3/dist-packages/_pytest/_code/code.py > 754 516 32% > /usr/lib/python3/dist-packages/_pytest/_code/source.py > 145 78 46% > /usr/lib/python3/dist-packages/_pytest/_io/saferepr.py > 67 49 27% > /usr/lib/python3/dist-packages/_pytest/_io/terminalwriter.py > 126 80 37% > /usr/lib/python3/dist-packages/_pytest/_io/wcwidth.py > 25 16 36% > /usr/lib/python3/dist-packages/_pytest/_py/path.py > 948 943 1% > /usr/lib/python3/dist-packages/_pytest/assertion/__init__.py > 88 74 16% > /usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py > 663 342 48% > /usr/lib/python3/dist-packages/_pytest/cacheprovider.py > 316 266 16% > /usr/lib/python3/dist-packages/_pytest/capture.py > 607 450 26% > /usr/lib/python3/dist-packages/_pytest/compat.py > 127 79 38% > /usr/lib/python3/dist-packages/_pytest/config/__init__.py > 917 731 20% > /usr/lib/python3/dist-packages/_pytest/config/argparsing.py > 271 191 30% > /usr/lib/python3/dist-packages/_pytest/config/compat.py > 44 22 50% > /usr/lib/python3/dist-packages/_pytest/debugging.py > 230 221 4% > /usr/lib/python3/dist-packages/_pytest/deprecated.py > 26 25 4% > /usr/lib/python3/dist-packages/_pytest/doctest.py > 355 189 47% > /usr/lib/python3/dist-packages/_pytest/faulthandler.py > 58 43 26% > /usr/lib/python3/dist-packages/_pytest/fixtures.py > 809 428 47% > /usr/lib/python3/dist-packages/_pytest/helpconfig.py > 135 125 7% > /usr/lib/python3/dist-packages/_pytest/junitxml.py > 367 365 1% > /usr/lib/python3/dist-packages/_pytest/legacypath.py > 216 188 13% > /usr/lib/python3/dist-packages/_pytest/logging.py > 450 303 33% > /usr/lib/python3/dist-packages/_pytest/main.py > 493 268 46% > /usr/lib/python3/dist-packages/_pytest/mark/__init__.py > 132 85 36% > /usr/lib/python3/dist-packages/_pytest/mark/expression.py > 123 74 40% > /usr/lib/python3/dist-packages/_pytest/mark/structures.py > 276 195 29% > /usr/lib/python3/dist-packages/_pytest/monkeypatch.py > 168 114 32% > /usr/lib/python3/dist-packages/_pytest/nodes.py > 337 206 39% > /usr/lib/python3/dist-packages/_pytest/nose.py > 29 20 31% > /usr/lib/python3/dist-packages/_pytest/outcomes.py > 106 94 11% > /usr/lib/python3/dist-packages/_pytest/pastebin.py > 70 69 1% > /usr/lib/python3/dist-packages/_pytest/pathlib.py > 403 281 30% > /usr/lib/python3/dist-packages/_pytest/python.py > 911 576 37% > /usr/lib/python3/dist-packages/_pytest/python_api.py > 334 307 8% > /usr/lib/python3/dist-packages/_pytest/python_path.py > 16 15 6% > /usr/lib/python3/dist-packages/_pytest/recwarn.py > 140 84 40% > /usr/lib/python3/dist-packages/_pytest/reports.py > 298 258 13% > /usr/lib/python3/dist-packages/_pytest/runner.py > 301 156 48% > /usr/lib/python3/dist-packages/_pytest/scope.py > 37 27 27% > /usr/lib/python3/dist-packages/_pytest/setuponly.py > 59 51 14% > /usr/lib/python3/dist-packages/_pytest/setupplan.py > 24 20 17% > /usr/lib/python3/dist-packages/_pytest/skipping.py > 165 114 31% > /usr/lib/python3/dist-packages/_pytest/stash.py > 36 25 31% > /usr/lib/python3/dist-packages/_pytest/stepwise.py > 74 72 3% > /usr/lib/python3/dist-packages/_pytest/terminal.py > 927 711 23% > /usr/lib/python3/dist-packages/_pytest/threadexception.py > 43 27 37% > /usr/lib/python3/dist-packages/_pytest/tmpdir.py > 156 89 43% > /usr/lib/python3/dist-packages/_pytest/unittest.py > 253 242 4% > /usr/lib/python3/dist-packages/_pytest/unraisableexception.py > 45 29 36% > /usr/lib/python3/dist-packages/_pytest/warnings.py > 74 52 30% > /usr/lib/python3/dist-packages/pkg_resources/extern/__init__.py > 37 34 8% > /usr/lib/python3/dist-packages/pluggy/_callers.py > 109 44 60% > /usr/lib/python3/dist-packages/pluggy/_hooks.py > 266 180 32% > /usr/lib/python3/dist-packages/pluggy/_manager.py > 230 180 22% > /usr/lib/python3/dist-packages/pluggy/_result.py > 50 39 22% > /usr/lib/python3/dist-packages/pluggy/_tracing.py > 48 38 21% > /usr/lib/python3/dist-packages/pytest/__init__.py > 91 89 2% > /usr/lib/python3/dist-packages/pytest_cov/compat.py > 17 13 24% > /usr/lib/python3/dist-packages/pytest_cov/embed.py > 69 63 9% > /usr/lib/python3/dist-packages/pytest_cov/engine.py > 250 229 8% > /usr/lib/python3/dist-packages/pytest_cov/plugin.py > 224 194 13% > /usr/lib/python3/dist-packages/pytest_doctestplus/plugin.py > 486 479 1% > /usr/lib/python3/dist-packages/pytest_mock/_util.py > 19 11 42% > /usr/lib/python3/dist-packages/pytest_mock/plugin.py > 312 233 25% > graphviz/__init__.py > 36 0 100% > graphviz/_compat.py > 5 0 100% > graphviz/_defaults.py > 21 0 100% > graphviz/_tools.py > 64 0 100% > graphviz/backend/__init__.py > 9 0 100% > graphviz/backend/dot_command.py > 20 0 100% > graphviz/backend/execute.py > 61 0 100% > graphviz/backend/mixins.py > 37 0 100% > graphviz/backend/piping.py > 26 0 100% > graphviz/backend/rendering.py > 83 0 100% > graphviz/backend/unflattening.py > 21 0 100% > graphviz/backend/upstream_version.py > 15 0 100% > graphviz/backend/viewing.py > 34 0 100% > graphviz/base.py > 8 0 100% > graphviz/copying.py > 7 0 100% > graphviz/dot.py > 132 0 100% > graphviz/encoding.py > 22 0 100% > graphviz/exceptions.py > 7 0 100% > graphviz/graphs.py > 28 0 100% > graphviz/jupyter_integration.py > 34 0 100% > graphviz/parameters/__init__.py > 6 0 100% > graphviz/parameters/base.py > 7 0 100% > graphviz/parameters/engines.py > 32 0 100% > graphviz/parameters/formats.py > 32 0 100% > graphviz/parameters/formatters.py > 32 0 100% > graphviz/parameters/mixins.py > 26 0 100% > graphviz/parameters/renderers.py > 32 0 100% > graphviz/piping.py > 39 0 100% > graphviz/quoting.py > 59 0 100% > graphviz/rendering.py > 40 0 100% > graphviz/saving.py > 44 0 100% > graphviz/sources.py > 52 0 100% > graphviz/unflattening.py > 14 0 100% > tests/_common.py > 25 2 92% > tests/backend/conftest.py > 13 1 92% > tests/backend/test_execute.py > 43 0 100% > tests/backend/test_piping.py > 72 18 75% > tests/backend/test_rendering.py > 107 0 100% > tests/backend/test_unflattening.py > 20 0 100% > tests/backend/test_upstream_version.py > 20 0 100% > tests/backend/test_viewing.py > 20 1 95% > tests/conftest.py > 62 22 65% > tests/test_all_classes.py > 208 0 100% > tests/test_graphs.py > 117 0 100% > tests/test_init.py > 77 0 100% > tests/test_jupyter_integration.py > 33 0 100% > tests/test_parameters.py > 33 0 100% > tests/test_quoting.py > 29 0 100% > tests/test_saving.py > 10 0 100% > tests/test_sources.py > 47 1 98% > tests/test_tools.py > 39 0 100% > ----------------------------------------------------------------------------------------------- > TOTAL > 18202 11989 34% > Coverage HTML written to dir htmlcov > > ============================= slowest 10 durations > ============================= > 0.09s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] > 0.09s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False] > 0.08s teardown > .pybuild/cpython3_3.11_graphviz/build/tests/test_tools.py::test_deprecate_positional_args[None-None] > 0.08s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] > 0.08s call > .pybuild/cpython3_3.11_graphviz/build/graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_ > 0.08s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True] > 0.08s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False] > 0.08s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_execute.py::test_run_check_input_lines_mocked > 0.07s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True] > 0.07s setup > .pybuild/cpython3_3.11_graphviz/build/tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False] > =========================== short test summary info > ============================ > FAILED graphviz/backend/rendering.py::graphviz.backend.rendering.render > FAILED > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown > engine] > FAILED > tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown > format] > ================= 3 failed, 346 passed, 2 deselected in 10.78s > ================= > E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_graphviz/build; python3.11 -m pytest > -k 'not test_pipe_pipe_invalid_data_mocked' > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 > 3.11" returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2024/03/13/python-graphviz_0.20.1+20240103-1_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240313;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240313&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.