Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

New version?馃 #217

Closed
kloczek opened this issue Mar 16, 2024 · 8 comments
Closed

New version?馃 #217

kloczek opened this issue Mar 16, 2024 · 8 comments

Comments

@kloczek
Copy link

kloczek commented Mar 16, 2024

Looking on 0.20.1...master I think that it would be good to flush all currently committed changes and release new version.

Doable? 馃

@xflr6
Copy link
Owner

xflr6 commented Mar 17, 2024

@xflr6 xflr6 closed this as completed Mar 17, 2024
@kloczek
Copy link
Author

kloczek commented Mar 18, 2024

Thank you.

Just started packaging your module and cannot pass pytest.
Looks like it is some conflict between tests/backend/conftest.py and tests/conftest.py 馃

+ /usr/bin/pytest -ra -m 'not network'
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.9.18, pytest-8.1.1, pluggy-1.4.0
rootdir: /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2
configfile: setup.cfg
testpaths: README.rst, docs, graphviz, tests
plugins: hypothesis-6.99.6, mock-3.12.0
collected 369 items / 1 error

========================================================================================== ERRORS ===========================================================================================
____________________________________________________________________________ ERROR collecting tests/conftest.py _____________________________________________________________________________
import file mismatch:
imported module 'conftest' has this __file__ attribute:
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/backend/conftest.py
which is not the same as the test file we want to collect:
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/conftest.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
================================================================================== short test summary info ==================================================================================
ERROR tests/conftest.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
===================================================================================== 1 error in 1.10s ======================================================================================

@kloczek
Copy link
Author

kloczek commented Mar 18, 2024

pytest passes scanning test units with --import-mode=importlib and it fails in two units and shows some warnings

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-graphviz-0.20.2-2.fc36.x86_64/usr/lib64/python3.9/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-graphviz-0.20.2-2.fc36.x86_64/usr/lib/python3.9/site-packages
+ /usr/bin/pytest -ra -m 'not network' --import-mode=importlib
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.9.18, pytest-8.1.1, pluggy-1.4.0
rootdir: /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2
configfile: setup.cfg
testpaths: README.rst, docs, graphviz, tests
plugins: hypothesis-6.99.6, mock-3.12.0
collected 369 items

README.rst::README.rst PASSED                                                                                                                                                         [  0%]
docs/api.rst::api.rst PASSED                                                                                                                                                          [  0%]
docs/attributes.rst::attributes.rst PASSED                                                                                                                                            [  0%]
docs/basic_usage.rst::basic_usage.rst PASSED                                                                                                                                          [  1%]
docs/custom_dot.rst::custom_dot.rst PASSED                                                                                                                                            [  1%]
docs/engines.rst::engines.rst PASSED                                                                                                                                                  [  1%]
docs/escapes.rst::escapes.rst PASSED                                                                                                                                                  [  1%]
docs/existing_files.rst::existing_files.rst PASSED                                                                                                                                    [  2%]
docs/formats.rst::formats.rst PASSED                                                                                                                                                  [  2%]
docs/integration_with_viewers.rst::integration_with_viewers.rst PASSED                                                                                                                [  2%]
docs/neato_no_op.rst::neato_no_op.rst PASSED                                                                                                                                          [  2%]
docs/node_ports.rst::node_ports.rst PASSED                                                                                                                                            [  3%]
docs/piped_output.rst::piped_output.rst PASSED                                                                                                                                        [  3%]
docs/quoting.rst::quoting.rst PASSED                                                                                                                                                  [  3%]
docs/raw_dot.rst::raw_dot.rst PASSED                                                                                                                                                  [  4%]
docs/styling.rst::styling.rst PASSED                                                                                                                                                  [  4%]
docs/subgraphs_and_clusters.rst::subgraphs_and_clusters.rst PASSED                                                                                                                    [  4%]
docs/unflatten.rst::unflatten.rst PASSED                                                                                                                                              [  4%]
graphviz/__init__.py::graphviz PASSED                                                                                                                                                 [  5%]
graphviz/_tools.py::graphviz._tools.attach PASSED                                                                                                                                     [  5%]
graphviz/_tools.py::graphviz._tools.mapping_items PASSED                                                                                                                              [  5%]
graphviz/backend/piping.py::graphviz.backend.piping.pipe PASSED                                                                                                                       [  5%]
graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines PASSED                                                                                                                 [  6%]
graphviz/backend/piping.py::graphviz.backend.piping.pipe_lines_string PASSED                                                                                                          [  6%]
graphviz/backend/piping.py::graphviz.backend.piping.pipe_string PASSED                                                                                                                [  6%]
graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_formats PASSED                                                                                                [  7%]
graphviz/backend/rendering.py::graphviz.backend.rendering.get_supported_suffixes PASSED                                                                                               [  7%]
graphviz/backend/rendering.py::graphviz.backend.rendering.infer_format PASSED                                                                                                         [  7%]
graphviz/backend/rendering.py::graphviz.backend.rendering.render PASSED                                                                                                               [  7%]
graphviz/backend/upstream_version.py::graphviz.backend.upstream_version.version PASSED                                                                                                [  8%]
graphviz/graphs.py::graphviz.graphs PASSED                                                                                                                                            [  8%]
graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_ FAILED                                                                             [  8%]
graphviz/piping.py::graphviz.piping.Pipe.pipe PASSED                                                                                                                                  [  8%]
graphviz/quoting.py::graphviz.quoting.a_list PASSED                                                                                                                                   [  9%]
graphviz/quoting.py::graphviz.quoting.attr_list PASSED                                                                                                                                [  9%]
graphviz/quoting.py::graphviz.quoting.escape PASSED                                                                                                                                   [  9%]
graphviz/quoting.py::graphviz.quoting.nohtml PASSED                                                                                                                                   [ 10%]
graphviz/quoting.py::graphviz.quoting.quote PASSED                                                                                                                                    [ 10%]
graphviz/quoting.py::graphviz.quoting.quote_edge PASSED                                                                                                                               [ 10%]
graphviz/rendering.py::graphviz.rendering.Render.render PASSED                                                                                                                        [ 10%]
tests/backend/test_execute.py::test_missing_executable[render-args0] PASSED                                                                                                           [ 11%]
tests/backend/test_execute.py::test_missing_executable[pipe-args1] PASSED                                                                                                             [ 11%]
tests/backend/test_execute.py::test_missing_executable[unflatten-args2] PASSED                                                                                                        [ 11%]
tests/backend/test_execute.py::test_missing_executable[version-args3] PASSED                                                                                                          [ 11%]
tests/backend/test_execute.py::test_run_check_oserror PASSED                                                                                                                          [ 12%]
tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=False] PASSED                                                                                         [ 12%]
tests/backend/test_execute.py::test_run_check_called_process_error_mocked[quiet=True] PASSED                                                                                          [ 12%]
tests/backend/test_execute.py::test_run_check_input_lines_mocked PASSED                                                                                                               [ 13%]
tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False] PASSED                                                                                                              [ 13%]
tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True] PASSED                                                                                                               [ 13%]
tests/backend/test_piping.py::test_pipe_pipe_invalid_data_mocked[quiet=False] PASSED                                                                                                  [ 13%]
tests/backend/test_piping.py::test_pipe_pipe_invalid_data_mocked[quiet=True] PASSED                                                                                                   [ 14%]
tests/backend/test_piping.py::test_pipe[dot-svg-None-None-(?s)^<\\?xml .+</svg>\\s*$] PASSED                                                                                          [ 14%]
tests/backend/test_piping.py::test_pipe[dot-ps-ps-core-%!PS-] PASSED                                                                                                                  [ 14%]
tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml .+</svg>\\s*$] FAILED                                                                                         [ 14%]
tests/backend/test_piping.py::test_pipe_mocked[quiet=False] PASSED                                                                                                                    [ 15%]
tests/backend/test_piping.py::test_pipe_mocked[quiet=True] PASSED                                                                                                                     [ 15%]
tests/backend/test_piping.py::test_pipe_string_mocked[quiet=False] PASSED                                                                                                             [ 15%]
tests/backend/test_piping.py::test_pipe_string_mocked[quiet=True] PASSED                                                                                                              [ 15%]
tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=False] PASSED                                                                                                              [ 16%]
tests/backend/test_piping.py::test_pipe_lines_mocked[quiet=True] PASSED                                                                                                               [ 16%]
tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=False] PASSED                                                                                                       [ 16%]
tests/backend/test_piping.py::test_pipe_lines_string_mocked[quiet=True] PASSED                                                                                                        [ 17%]
tests/backend/test_rendering.py::test_render_missing_file[quiet=False] PASSED                                                                                                         [ 17%]
tests/backend/test_rendering.py::test_render_missing_file[quiet=True] PASSED                                                                                                          [ 17%]
tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args0-ValueError-unknown engine] PASSED                                                                         [ 17%]
tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args1-ValueError-unknown format] PASSED                                                                         [ 18%]
tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args2-ValueError-unknown renderer] PASSED                                                                       [ 18%]
tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args3-RequiredArgumentError-without renderer] PASSED                                                            [ 18%]
tests/backend/test_rendering.py::test_render_unknown_parameter_raises[args4-ValueError-unknown formatter] PASSED                                                                      [ 18%]
tests/backend/test_rendering.py::test_render[dot-pdf-None-None-pdf] PASSED                                                                                                            [ 19%]
tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain] PASSED                                                                                                [ 19%]
tests/backend/test_rendering.py::test_render_img PASSED                                                                                                                               [ 19%]
tests/backend/test_rendering.py::test_render_outfile_differnt_parent PASSED                                                                                                           [ 20%]
tests/backend/test_rendering.py::test_render_mocked[quiet=False-None] PASSED                                                                                                          [ 20%]
tests/backend/test_rendering.py::test_render_mocked[quiet=False-dot_sources] PASSED                                                                                                   [ 20%]
tests/backend/test_rendering.py::test_render_mocked[quiet=True-None] PASSED                                                                                                           [ 20%]
tests/backend/test_rendering.py::test_render_mocked[quiet=True-dot_sources] PASSED                                                                                                    [ 21%]
tests/backend/test_rendering.py::test_render_raises_mocked[args0-kwargs0-RequiredArgumentError-filepath: \\(required] PASSED                                                          [ 21%]
tests/backend/test_rendering.py::test_render_raises_mocked[args1-kwargs1-RequiredArgumentError-filepath: \\(required] PASSED                                                          [ 21%]
tests/backend/test_rendering.py::test_render_raises_mocked[args2-kwargs2-RequiredArgumentError-format: \\(required] PASSED                                                            [ 21%]
tests/backend/test_rendering.py::test_render_raises_mocked[args3-kwargs3-RequiredArgumentError-filepath: \\(required] PASSED                                                          [ 22%]
tests/backend/test_rendering.py::test_render_raises_mocked[args4-kwargs4-ValueError-outfile 'spam\\.gv' must be different from input file 'spam\\.gv'] PASSED                         [ 22%]
tests/backend/test_rendering.py::test_render_raises_mocked[args5-kwargs5-ValueError-overwrite_filepath cannot be combined with raise_if_result_exists] PASSED                         [ 22%]
tests/backend/test_rendering.py::test_render_raises_mocked[args6-kwargs6-FileExistsError-output file exists: 'spam.png'] PASSED                                                       [ 23%]
tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs0-spam.gv.pdf] PASSED                                                                                                 [ 23%]
tests/backend/test_rendering.py::test_get_outfile[spam.gv-kwargs1-spam.gv.dot.plain] PASSED                                                                                           [ 23%]
tests/backend/test_rendering.py::test_get_filepath[spam.pdf-spam.gv] PASSED                                                                                                           [ 23%]
tests/backend/test_rendering.py::test_get_filepath[spam-spam.gv] PASSED                                                                                                               [ 24%]
tests/backend/test_rendering.py::test_get_format[spam.gv.pdf-None-pdf] PASSED                                                                                                         [ 24%]
tests/backend/test_rendering.py::test_get_format[spam.jpeg-None-jpeg] PASSED                                                                                                          [ 24%]
tests/backend/test_rendering.py::test_get_format[spam.SVG-None-svg] PASSED                                                                                                            [ 24%]
tests/backend/test_rendering.py::test_get_format[spam.pdf-None-pdf] PASSED                                                                                                            [ 25%]
tests/backend/test_rendering.py::test_get_format[spam.pdf-pdf-pdf] PASSED                                                                                                             [ 25%]
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    [ 25%]
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 [ 26%]
tests/backend/test_rendering.py::test_get_format_warns[spam-svg-svg-UnknownSuffixWarning-unknown outfile suffix '' \\(expected: '\\.svg'\\)] PASSED                                   [ 26%]
tests/backend/test_rendering.py::test_get_format_warns[spam.peng-png-png-UnknownSuffixWarning-unknown outfile suffix '.peng' \\(expected: '\\.png'\\)] PASSED                         [ 26%]
tests/backend/test_rendering.py::test_get_format_warns[spam-pdf-pdf-UnknownSuffixWarning-unknown outfile suffix '' \\(expected: '\\.pdf'\\)] PASSED                                   [ 26%]
tests/backend/test_rendering.py::test_get_format_raises[spam-RequiredArgumentError-cannot infer rendering format from suffix '' of outfile: 'spam'] PASSED                            [ 27%]
tests/backend/test_rendering.py::test_get_format_raises[spam.peng-RequiredArgumentError-cannot infer rendering format from suffix '.peng' of outfile: 'spam.peng'] PASSED             [ 27%]
tests/backend/test_rendering.py::test_get_format_raises[spam.wav-RequiredArgumentError-cannot infer rendering format from suffix '.wav' of outfile: 'spam.wav'] PASSED                [ 27%]
tests/backend/test_unflattening.py::test_unflatten_stagger_missing PASSED                                                                                                             [ 27%]
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              [ 28%]
tests/backend/test_unflattening.py::test_unflatten_mocked PASSED                                                                                                                      [ 28%]
tests/backend/test_upstream_version.py::test_version PASSED                                                                                                                           [ 28%]
tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz version 1.2.3 (mocked)-expected0] PASSED                                                                   [ 28%]
tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz version 2.43.20190912.0211 (20190912.0211)\n-expected1] PASSED                                             [ 29%]
tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz version 2.44.2~dev.20200927.0217 (20200927.0217)\n-expected2] PASSED                                       [ 29%]
tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz version 2.44.1 (mocked)\n-expected3] PASSED                                                                [ 29%]
tests/backend/test_upstream_version.py::test_version_mocked[dot - graphviz version 2.44.2~dev.20200704.1652 (mocked)\n-expected4] PASSED                                              [ 30%]
tests/backend/test_upstream_version.py::test_version_parsefail_mocked PASSED                                                                                                          [ 30%]
tests/backend/test_viewing.py::test_view_unknown_platform PASSED                                                                                                                      [ 30%]
tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=False] PASSED                                                                                                 [ 30%]
tests/backend/test_viewing.py::test_view_mocked[platform='darwin'-quiet=True] PASSED                                                                                                  [ 31%]
tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=False] PASSED                                                                                                [ 31%]
tests/backend/test_viewing.py::test_view_mocked[platform='freebsd'-quiet=True] PASSED                                                                                                 [ 31%]
tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=False] PASSED                                                                                                  [ 31%]
tests/backend/test_viewing.py::test_view_mocked[platform='linux'-quiet=True] PASSED                                                                                                   [ 32%]
tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=False] PASSED                                                                                                [ 32%]
tests/backend/test_viewing.py::test_view_mocked[platform='windows'-quiet=True] PASSED                                                                                                 [ 32%]
tests/test_all_classes.py::test_copy[Graph] PASSED                                                                                                                                    [ 33%]
tests/test_all_classes.py::test_copy[Digraph] PASSED                                                                                                                                  [ 33%]
tests/test_all_classes.py::test_copy[Source] PASSED                                                                                                                                   [ 33%]
tests/test_all_classes.py::test_str[Graph] PASSED                                                                                                                                     [ 33%]
tests/test_all_classes.py::test_str[Digraph] PASSED                                                                                                                                   [ 34%]
tests/test_all_classes.py::test_str[Source] PASSED                                                                                                                                    [ 34%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-engine-ValueError-unknown engine] PASSED                                                                     [ 34%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-format-ValueError-unknown format] PASSED                                                                     [ 34%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-renderer-ValueError-unknown renderer] PASSED                                                                 [ 35%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-formatter-ValueError-unknown formatter] PASSED                                                               [ 35%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Graph-encoding-LookupError-encoding] PASSED                                                                        [ 35%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-engine-ValueError-unknown engine] PASSED                                                                   [ 36%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-format-ValueError-unknown format] PASSED                                                                   [ 36%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-renderer-ValueError-unknown renderer] PASSED                                                               [ 36%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-formatter-ValueError-unknown formatter] PASSED                                                             [ 36%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Digraph-encoding-LookupError-encoding] PASSED                                                                      [ 37%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-engine-ValueError-unknown engine] PASSED                                                                    [ 37%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-format-ValueError-unknown format] PASSED                                                                    [ 37%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-renderer-ValueError-unknown renderer] PASSED                                                                [ 37%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-formatter-ValueError-unknown formatter] PASSED                                                              [ 38%]
tests/test_all_classes.py::test_invalid_parameter_raises_valuerror[Source-encoding-LookupError-encoding] PASSED                                                                       [ 38%]
tests/test_all_classes.py::test_encoding_none[Graph] PASSED                                                                                                                           [ 38%]
tests/test_all_classes.py::test_encoding_none[Digraph] PASSED                                                                                                                         [ 39%]
tests/test_all_classes.py::test_encoding_none[Source] PASSED                                                                                                                          [ 39%]
tests/test_all_classes.py::test_render_raises_before_save[Graph-kwargs0] PASSED                                                                                                       [ 39%]
tests/test_all_classes.py::test_render_raises_before_save[Digraph-kwargs0] PASSED                                                                                                     [ 39%]
tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0] PASSED                                                                                                      [ 40%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs0] PASSED                                                                                                [ 40%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs1] PASSED                                                                                                [ 40%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs2] PASSED                                                                                                [ 40%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Graph-kwargs3] PASSED                                                                                                [ 41%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs0] PASSED                                                                                              [ 41%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs1] PASSED                                                                                              [ 41%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs2] PASSED                                                                                              [ 42%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Digraph-kwargs3] PASSED                                                                                              [ 42%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0] PASSED                                                                                               [ 42%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1] PASSED                                                                                               [ 42%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2] PASSED                                                                                               [ 43%]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3] PASSED                                                                                               [ 43%]
tests/test_all_classes.py::test_render_mocked[Graph] PASSED                                                                                                                           [ 43%]
tests/test_all_classes.py::test_render_mocked[Digraph] PASSED                                                                                                                         [ 43%]
tests/test_all_classes.py::test_render_mocked[Source] PASSED                                                                                                                          [ 44%]
tests/test_all_classes.py::test_render_outfile_mocked[Graph] PASSED                                                                                                                   [ 44%]
tests/test_all_classes.py::test_render_outfile_mocked[Digraph] PASSED                                                                                                                 [ 44%]
tests/test_all_classes.py::test_render_outfile_mocked[Source] PASSED                                                                                                                  [ 44%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Graph] PASSED                                                                                            [ 45%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Digraph] PASSED                                                                                          [ 45%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source] PASSED                                                                                           [ 45%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Graph] PASSED                                                                                             [ 46%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Digraph] PASSED                                                                                           [ 46%]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source] PASSED                                                                                            [ 46%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-None] PASSED                                                                                                     [ 46%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-False] PASSED                                                                                                    [ 47%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-True] PASSED                                                                                                     [ 47%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-0] PASSED                                                                                                        [ 47%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-1] PASSED                                                                                                        [ 47%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Graph-2] PASSED                                                                                                        [ 48%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-None] PASSED                                                                                                   [ 48%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-False] PASSED                                                                                                  [ 48%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-True] PASSED                                                                                                   [ 49%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-0] PASSED                                                                                                      [ 49%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-1] PASSED                                                                                                      [ 49%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Digraph-2] PASSED                                                                                                      [ 49%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-None] PASSED                                                                                                    [ 50%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-False] PASSED                                                                                                   [ 50%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-True] PASSED                                                                                                    [ 50%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-0] PASSED                                                                                                       [ 50%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-1] PASSED                                                                                                       [ 51%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=False-Source-2] PASSED                                                                                                       [ 51%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-None] PASSED                                                                                                      [ 51%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-False] PASSED                                                                                                     [ 52%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-True] PASSED                                                                                                      [ 52%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-0] PASSED                                                                                                         [ 52%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-1] PASSED                                                                                                         [ 52%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Graph-2] PASSED                                                                                                         [ 53%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-None] PASSED                                                                                                    [ 53%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-False] PASSED                                                                                                   [ 53%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-True] PASSED                                                                                                    [ 53%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-0] PASSED                                                                                                       [ 54%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-1] PASSED                                                                                                       [ 54%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Digraph-2] PASSED                                                                                                       [ 54%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-None] PASSED                                                                                                     [ 55%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-False] PASSED                                                                                                    [ 55%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-True] PASSED                                                                                                     [ 55%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-0] PASSED                                                                                                        [ 55%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-1] PASSED                                                                                                        [ 56%]
tests/test_all_classes.py::test_neato_no_op_mocked[quiet=True-Source-2] PASSED                                                                                                        [ 56%]
tests/test_all_classes.py::test_save_mocked[Graph] PASSED                                                                                                                             [ 56%]
tests/test_all_classes.py::test_save_mocked[Digraph] PASSED                                                                                                                           [ 56%]
tests/test_all_classes.py::test_save_mocked[Source] PASSED                                                                                                                            [ 57%]
tests/test_all_classes.py::test_pipe[Graph] PASSED                                                                                                                                    [ 57%]
tests/test_all_classes.py::test_pipe[Digraph] PASSED                                                                                                                                  [ 57%]
tests/test_all_classes.py::test_pipe[Source] PASSED                                                                                                                                   [ 57%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-None] PASSED                                                                                                            [ 58%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-ascii] PASSED                                                                                                           [ 58%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Graph-utf-8] PASSED                                                                                                           [ 58%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-None] PASSED                                                                                                          [ 59%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-ascii] PASSED                                                                                                         [ 59%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Digraph-utf-8] PASSED                                                                                                         [ 59%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-None] PASSED                                                                                                           [ 59%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-ascii] PASSED                                                                                                          [ 60%]
tests/test_all_classes.py::test_pipe_mocked[quiet=False-Source-utf-8] PASSED                                                                                                          [ 60%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-None] PASSED                                                                                                             [ 60%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-ascii] PASSED                                                                                                            [ 60%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Graph-utf-8] PASSED                                                                                                            [ 61%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-None] PASSED                                                                                                           [ 61%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-ascii] PASSED                                                                                                          [ 61%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Digraph-utf-8] PASSED                                                                                                          [ 62%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-None] PASSED                                                                                                            [ 62%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-ascii] PASSED                                                                                                           [ 62%]
tests/test_all_classes.py::test_pipe_mocked[quiet=True-Source-utf-8] PASSED                                                                                                           [ 62%]
tests/test_all_classes.py::test_pipe_lines_mocked[Graph] PASSED                                                                                                                       [ 63%]
tests/test_all_classes.py::test_pipe_lines_mocked[Digraph] PASSED                                                                                                                     [ 63%]
tests/test_all_classes.py::test_pipe_lines_mocked[Source] PASSED                                                                                                                      [ 63%]
tests/test_all_classes.py::test_pipe_lines_called_process_error[Graph] PASSED                                                                                                         [ 63%]
tests/test_all_classes.py::test_pipe_lines_called_process_error[Digraph] PASSED                                                                                                       [ 64%]
tests/test_all_classes.py::test_pipe_lines_called_process_error[Source] PASSED                                                                                                        [ 64%]
tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Graph] PASSED                                                                                                  [ 64%]
tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Digraph] PASSED                                                                                                [ 65%]
tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source] PASSED                                                                                                 [ 65%]
tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Graph] PASSED                                                                                                    [ 65%]
tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Digraph] PASSED                                                                                                  [ 65%]
tests/test_all_classes.py::test_repr_mimebundle_image_svg_xml_mocked[Source] PASSED                                                                                                   [ 66%]
tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Graph] PASSED                                                                                                        [ 66%]
tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Digraph] PASSED                                                                                                      [ 66%]
tests/test_all_classes.py::test_repr_mimebundle_image_png_mocked[Source] PASSED                                                                                                       [ 66%]
tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Graph] PASSED                                                                                                       [ 67%]
tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Digraph] PASSED                                                                                                     [ 67%]
tests/test_all_classes.py::test_repr_mimebundle_image_jpeg_mocked[Source] PASSED                                                                                                      [ 67%]
tests/test_all_classes.py::test_unflatten[Graph] PASSED                                                                                                                               [ 68%]
tests/test_all_classes.py::test_unflatten[Digraph] PASSED                                                                                                                             [ 68%]
tests/test_all_classes.py::test_unflatten[Source] PASSED                                                                                                                              [ 68%]
tests/test_all_classes.py::test_unflatten_mocked[Graph] PASSED                                                                                                                        [ 68%]
tests/test_all_classes.py::test_unflatten_mocked[Digraph] PASSED                                                                                                                      [ 69%]
tests/test_all_classes.py::test_unflatten_mocked[Source] PASSED                                                                                                                       [ 69%]
tests/test_all_classes.py::test_view_mocked[Graph] PASSED                                                                                                                             [ 69%]
tests/test_all_classes.py::test_view_mocked[Digraph] PASSED                                                                                                                           [ 69%]
tests/test_all_classes.py::test_view_mocked[Source] PASSED                                                                                                                            [ 70%]
tests/test_all_classes.py::test__view_unknown_platform[Graph] PASSED                                                                                                                  [ 70%]
tests/test_all_classes.py::test__view_unknown_platform[Digraph] PASSED                                                                                                                [ 70%]
tests/test_all_classes.py::test__view_unknown_platform[Source] PASSED                                                                                                                 [ 71%]
tests/test_all_classes.py::test__view_mocked[platform='darwin'-Graph] PASSED                                                                                                          [ 71%]
tests/test_all_classes.py::test__view_mocked[platform='darwin'-Digraph] PASSED                                                                                                        [ 71%]
tests/test_all_classes.py::test__view_mocked[platform='darwin'-Source] PASSED                                                                                                         [ 71%]
tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Graph] PASSED                                                                                                         [ 72%]
tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Digraph] PASSED                                                                                                       [ 72%]
tests/test_all_classes.py::test__view_mocked[platform='freebsd'-Source] PASSED                                                                                                        [ 72%]
tests/test_all_classes.py::test__view_mocked[platform='linux'-Graph] PASSED                                                                                                           [ 72%]
tests/test_all_classes.py::test__view_mocked[platform='linux'-Digraph] PASSED                                                                                                         [ 73%]
tests/test_all_classes.py::test__view_mocked[platform='linux'-Source] PASSED                                                                                                          [ 73%]
tests/test_all_classes.py::test__view_mocked[platform='windows'-Graph] PASSED                                                                                                         [ 73%]
tests/test_all_classes.py::test__view_mocked[platform='windows'-Digraph] PASSED                                                                                                       [ 73%]
tests/test_all_classes.py::test__view_mocked[platform='windows'-Source] PASSED                                                                                                        [ 74%]
tests/test_graphs.py::test_init_filename[Graph] PASSED                                                                                                                                [ 74%]
tests/test_graphs.py::test_init_filename[Digraph] PASSED                                                                                                                              [ 74%]
tests/test_graphs.py::test_init_body[Graph-...-...] PASSED                                                                                                                            [ 75%]
tests/test_graphs.py::test_init_body[Digraph-...-...] PASSED                                                                                                                          [ 75%]
tests/test_graphs.py::test_subgraph_render[Graph-...] PASSED                                                                                                                          [ 75%]
tests/test_graphs.py::test_subgraph_render[Digraph-...] PASSED                                                                                                                        [ 75%]
tests/test_graphs.py::test_clear[Graph-False] PASSED                                                                                                                                  [ 76%]
tests/test_graphs.py::test_clear[Graph-True] PASSED                                                                                                                                   [ 76%]
tests/test_graphs.py::test_clear[Digraph-False] PASSED                                                                                                                                [ 76%]
tests/test_graphs.py::test_clear[Digraph-True] PASSED                                                                                                                                 [ 76%]
tests/test_graphs.py::test_iter_subgraph_strict[Graph] PASSED                                                                                                                         [ 77%]
tests/test_graphs.py::test_iter_subgraph_strict[Digraph] PASSED                                                                                                                       [ 77%]
tests/test_graphs.py::test_iter_strict[Graph-...] PASSED                                                                                                                              [ 77%]
tests/test_graphs.py::test_iter_strict[Digraph-...] PASSED                                                                                                                            [ 78%]
tests/test_graphs.py::test_attr_invalid_kw[Graph] PASSED                                                                                                                              [ 78%]
tests/test_graphs.py::test_attr_invalid_kw[Digraph] PASSED                                                                                                                            [ 78%]
tests/test_graphs.py::test_attr_kw_none[Graph-...] PASSED                                                                                                                             [ 78%]
tests/test_graphs.py::test_attr_kw_none[Digraph-...] PASSED                                                                                                                           [ 79%]
tests/test_graphs.py::test_escaped_quotes_and_escapes[Graph-...] PASSED                                                                                                               [ 79%]
tests/test_graphs.py::test_escaped_quotes_and_escapes[Digraph-...] PASSED                                                                                                             [ 79%]
tests/test_graphs.py::test_subgraph_graph_none[Graph-...] PASSED                                                                                                                      [ 79%]
tests/test_graphs.py::test_subgraph_graph_none[Digraph-...] PASSED                                                                                                                    [ 80%]
tests/test_graphs.py::test_subgraph_graph_notsole[Graph] PASSED                                                                                                                       [ 80%]
tests/test_graphs.py::test_subgraph_graph_notsole[Digraph] PASSED                                                                                                                     [ 80%]
tests/test_graphs.py::test_subgraph_mixed[Graph, Digraph] PASSED                                                                                                                      [ 81%]
tests/test_graphs.py::test_subgraph_mixed[Digraph, Graph] PASSED                                                                                                                      [ 81%]
tests/test_graphs.py::test_subgraph_reflexive[Graph-...] PASSED                                                                                                                       [ 81%]
tests/test_graphs.py::test_subgraph_reflexive[Digraph-...] PASSED                                                                                                                     [ 81%]
tests/test_graphs.py::test_subgraph PASSED                                                                                                                                            [ 82%]
tests/test_graphs.py::test_label_html PASSED                                                                                                                                          [ 82%]
tests/test_init.py::test_set_default_engine_invalid PASSED                                                                                                                            [ 82%]
tests/test_init.py::test_set_default_format_invalid PASSED                                                                                                                            [ 82%]
tests/test_init.py::test_set_default_engine PASSED                                                                                                                                    [ 83%]
tests/test_init.py::test_set_default_format PASSED                                                                                                                                    [ 83%]
tests/test_init.py::test_set_jupyter_format PASSED                                                                                                                                    [ 83%]
tests/test_jupyter_integration.py::test_get_jupyter_format_mimetype_invalid_raises_unknown PASSED                                                                                     [ 84%]
tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_normalizes PASSED                                                                                                 [ 84%]
tests/test_jupyter_integration.py::test_get_jupyter_mimetype_format_raises_unsupported PASSED                                                                                         [ 84%]
tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding PASSED                                                                                                            [ 84%]
tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[utf-8] PASSED                                                                                              [ 85%]
tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[ascii] PASSED                                                                                              [ 85%]
tests/test_jupyter_integration.py::test_repr_image_svg_xml_encoding_mocked[latin1] PASSED                                                                                             [ 85%]
tests/test_parameters.py::test_parameters[Graph] PASSED                                                                                                                               [ 85%]
tests/test_parameters.py::test_parameters[Digraph] PASSED                                                                                                                             [ 86%]
tests/test_parameters.py::test_parameters[Source] PASSED                                                                                                                              [ 86%]
tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_engine] PASSED                                                                                                  [ 86%]
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                                                                                                [ 87%]
tests/test_parameters.py::test_verify_parameter_raises_unknown[verify_formatter] PASSED                                                                                               [ 87%]
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                                                                                      [ 88%]
tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_renderer] PASSED                                                                                    [ 88%]
tests/test_parameters.py::test_verify_parameter_none_required_false_passes[verify_formatter] PASSED                                                                                   [ 88%]
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                                                                                    [ 89%]
tests/test_parameters.py::test_verify_parameter_none_required_raises_missing[verify_renderer] PASSED                                                                                  [ 89%]
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                                                                                                                               [ 90%]
tests/test_quoting.py::test_deprecated_escape[T] PASSED                                                                                                                               [ 90%]
tests/test_quoting.py::test_deprecated_escape[H] PASSED                                                                                                                               [ 90%]
tests/test_quoting.py::test_deprecated_escape[L] PASSED                                                                                                                               [ 91%]
tests/test_quoting.py::test_deprecated_escape[l] PASSED                                                                                                                               [ 91%]
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                                                                                                                                 [ 92%]
tests/test_quoting.py::test_quote[Graph-"Graph"] PASSED                                                                                                                               [ 92%]
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                                                                                                                                 [ 93%]
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                                                                                                                           [ 94%]
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_quote[\\\\\\\\"spam-"\\\\\\\\\\"spam"] PASSED                                                                                                             [ 94%]
tests/test_quoting.py::test_attr_list[attributes0- [spam=eggs]] PASSED                                                                                                                [ 95%]
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                                                                                                                              [ 96%]
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                                                                                                                         [ 97%]
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                                                                                                                                          [ 98%]
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.jupyter_integration.JupyterIntegration._repr_mimebundle_ ________________________________________________________
075             >>> doctest_mark_exe()
076             >>> import graphviz
077             >>> dot = graphviz.Graph()
078             >>> dot._repr_mimebundle_()  # doctest: +ELLIPSIS
079             {'image/svg+xml': '<?xml version=...
080             >>> dot._repr_mimebundle_(include=['image/png'])  # doctest: +ELLIPSIS
081             {'image/png': b'\x89PNG...
082             >>> dot._repr_mimebundle_(include=[])
083             {}
084             >>> dot._repr_mimebundle_(include=['image/svg+xml', 'image/jpeg'],
UNEXPECTED EXCEPTION: CalledProcessError(1, [PosixPath('dot'), '-Kdot', '-Tjpeg'], b'', b'Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib\n')
Traceback (most recent call last):
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/execute.py", line 88, in run_check
    proc.check_returncode()
  File "/usr/lib64/python3.9/subprocess.py", line 460, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tjpeg']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib64/python3.9/doctest.py", line 1334, in __run
    exec(compile(example.source, filename, "single",
  File "<doctest graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_[6]>", line 1, in <module>
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 98, in _repr_mimebundle_
    return {mimetype: getattr(self, method_name)()
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 98, in <dictcomp>
    return {mimetype: getattr(self, method_name)()
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 104, in _repr_image_jpeg
    return self.pipe(format='jpeg')
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 104, in pipe
    return self._pipe_legacy(format,
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/_tools.py", line 176, in wrapper
    return func(*args, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 121, in _pipe_legacy
    return self._pipe_future(format,
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 161, in _pipe_future
    return self._pipe_lines(*args, input_encoding=self.encoding, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/piping.py", line 161, in pipe_lines
    proc = execute.run_check(cmd, capture_output=True, quiet=quiet, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/execute.py", line 90, in run_check
    raise CalledProcessError(*e.args)
graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tjpeg']' returned non-zero exit status 1. [stderr: b'Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib\n']
/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py:84: UnexpectedException
078             >>> dot._repr_mimebundle_()  # doctest: +ELLIPSIS
079             {'image/svg+xml': '<?xml version=...
080             >>> dot._repr_mimebundle_(include=['image/png'])  # doctest: +ELLIPSIS
081             {'image/png': b'\x89PNG...
082             >>> dot._repr_mimebundle_(include=[])
083             {}
084             >>> dot._repr_mimebundle_(include=['image/svg+xml', 'image/jpeg'],
085             ...                       exclude=['image/svg+xml'])  # doctest: +ELLIPSIS
086             {'image/jpeg': b'\xff...
087             >>> list(dot._repr_mimebundle_(include=['image/png', 'image/jpeg']))
UNEXPECTED EXCEPTION: CalledProcessError(1, [PosixPath('dot'), '-Kdot', '-Tjpeg'], b'', b'Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib\n')
Traceback (most recent call last):
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/execute.py", line 88, in run_check
    proc.check_returncode()
  File "/usr/lib64/python3.9/subprocess.py", line 460, in check_returncode
    raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tjpeg']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib64/python3.9/doctest.py", line 1334, in __run
    exec(compile(example.source, filename, "single",
  File "<doctest graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_[7]>", line 1, in <module>
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 98, in _repr_mimebundle_
    return {mimetype: getattr(self, method_name)()
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 98, in <dictcomp>
    return {mimetype: getattr(self, method_name)()
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py", line 104, in _repr_image_jpeg
    return self.pipe(format='jpeg')
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 104, in pipe
    return self._pipe_legacy(format,
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/_tools.py", line 176, in wrapper
    return func(*args, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 121, in _pipe_legacy
    return self._pipe_future(format,
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/piping.py", line 161, in _pipe_future
    return self._pipe_lines(*args, input_encoding=self.encoding, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/piping.py", line 161, in pipe_lines
    proc = execute.run_check(cmd, capture_output=True, quiet=quiet, **kwargs)
  File "/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/backend/execute.py", line 90, in run_check
    raise CalledProcessError(*e.args)
graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tjpeg']' returned non-zero exit status 1. [stderr: b'Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib\n']
/home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/jupyter_integration.py:87: UnexpectedException
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib
Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-Kdot', '-Tsvg']
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-Kdot', '-Tpng']
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-Kdot', '-Tjpeg']
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-Kdot', '-Tjpeg']
_________________________________________________________________ test_pipe[sfdp-svg-None-None-(?s)^<\\?xml .+</svg>\\s*$] __________________________________________________________________

cmd = [PosixPath('dot'), '-Ksfdp', '-Tsvg'], input_lines = None, encoding = None, quiet = False, kwargs = {'capture_output': True, 'input': b'graph { spam }', 'startupinfo': None}
proc = CompletedProcess(args=[PosixPath('dot'), '-Ksfdp', '-Tsvg'], returncode=1, stdout=b'<?xml version="1.0" encoding="UTF-...">spam</text>\n</g>\n</g>\n</svg>\n', stderr=b'Error: remove_overlap: Graphviz not built with triangulation library\n')

    def run_check(cmd: typing.Sequence[typing.Union[os.PathLike, str]], *,
                  input_lines: typing.Optional[BytesOrStrIterator] = None,
                  encoding: typing.Optional[str] = None,
                  quiet: bool = False,
                  **kwargs) -> subprocess.CompletedProcess:
        """Run the command described by ``cmd``
            with ``check=True`` and return its completed process.

        Raises:
            CalledProcessError: if the returncode of the subprocess is non-zero.
        """
        log.debug('run %r', cmd)
        if not kwargs.pop('check', True):  # pragma: no cover
            raise NotImplementedError('check must be True or omited')

        if encoding is not None:
            kwargs['encoding'] = encoding

        kwargs.setdefault('startupinfo', _compat.get_startupinfo())

        try:
            if input_lines is not None:
                assert kwargs.get('input') is None
                assert iter(input_lines) is input_lines
                if kwargs.pop('capture_output'):
                    kwargs['stdout'] = kwargs['stderr'] = subprocess.PIPE
                proc = _run_input_lines(cmd, input_lines, kwargs=kwargs)
            else:
                proc = subprocess.run(cmd, **kwargs)
        except OSError as e:
            if e.errno == errno.ENOENT:
                raise ExecutableNotFound(cmd) from e
            raise

        if not quiet and proc.stderr:
            _write_stderr(proc.stderr)

        try:
>           proc.check_returncode()

graphviz/backend/execute.py:88:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = CompletedProcess(args=[PosixPath('dot'), '-Ksfdp', '-Tsvg'], returncode=1, stdout=b'<?xml version="1.0" encoding="UTF-...">spam</text>\n</g>\n</g>\n</svg>\n', stderr=b'Error: remove_overlap: Graphviz not built with triangulation library\n')

    def check_returncode(self):
        """Raise CalledProcessError if the exit code is non-zero."""
        if self.returncode:
>           raise CalledProcessError(self.returncode, self.args, self.stdout,
                                     self.stderr)
E           subprocess.CalledProcessError: Command '[PosixPath('dot'), '-Ksfdp', '-Tsvg']' returned non-zero exit status 1.

/usr/lib64/python3.9/subprocess.py:460: CalledProcessError

During handling of the above exception, another exception occurred:

capsys = <_pytest.capture.CaptureFixture object at 0x7fd2df0e46a0>, engine = 'sfdp', format_ = 'svg', renderer = None, formatter = None, pattern = '(?s)^<\\?xml .+</svg>\\s*$'
data = b'graph { spam }'

    @pytest.mark.exe
    @pytest.mark.parametrize(
        'engine, format_, renderer, formatter, pattern',
        [('dot', 'svg', None, None, SVG_PATTERN),
         ('dot', 'ps', 'ps', 'core', r'%!PS-'),
         # Error: remove_overlap: Graphviz not built with triangulation library
         pytest.param('sfdp', 'svg', None, None, SVG_PATTERN,
             marks=pytest.mark.xfail('graphviz.version() > (2, 38, 0)'
                                    " and platform.system().lower() == 'windows'",
             reason='https://gitlab.com/graphviz/graphviz/-/issues/1269'))])
    def test_pipe(capsys, engine, format_, renderer, formatter, pattern,
                  data=b'graph { spam }'):
        with pytest.deprecated_call(match=r'3 positional args'):
>           out = graphviz.pipe(engine, format_, data,
                                renderer, formatter).decode('ascii')

tests/backend/test_piping.py:79:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
graphviz/_tools.py:176: in wrapper
    return func(*args, **kwargs)
graphviz/backend/piping.py:59: in pipe
    proc = execute.run_check(cmd, capture_output=True, quiet=quiet, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cmd = [PosixPath('dot'), '-Ksfdp', '-Tsvg'], input_lines = None, encoding = None, quiet = False, kwargs = {'capture_output': True, 'input': b'graph { spam }', 'startupinfo': None}
proc = CompletedProcess(args=[PosixPath('dot'), '-Ksfdp', '-Tsvg'], returncode=1, stdout=b'<?xml version="1.0" encoding="UTF-...">spam</text>\n</g>\n</g>\n</svg>\n', stderr=b'Error: remove_overlap: Graphviz not built with triangulation library\n')

    def run_check(cmd: typing.Sequence[typing.Union[os.PathLike, str]], *,
                  input_lines: typing.Optional[BytesOrStrIterator] = None,
                  encoding: typing.Optional[str] = None,
                  quiet: bool = False,
                  **kwargs) -> subprocess.CompletedProcess:
        """Run the command described by ``cmd``
            with ``check=True`` and return its completed process.

        Raises:
            CalledProcessError: if the returncode of the subprocess is non-zero.
        """
        log.debug('run %r', cmd)
        if not kwargs.pop('check', True):  # pragma: no cover
            raise NotImplementedError('check must be True or omited')

        if encoding is not None:
            kwargs['encoding'] = encoding

        kwargs.setdefault('startupinfo', _compat.get_startupinfo())

        try:
            if input_lines is not None:
                assert kwargs.get('input') is None
                assert iter(input_lines) is input_lines
                if kwargs.pop('capture_output'):
                    kwargs['stdout'] = kwargs['stderr'] = subprocess.PIPE
                proc = _run_input_lines(cmd, input_lines, kwargs=kwargs)
            else:
                proc = subprocess.run(cmd, **kwargs)
        except OSError as e:
            if e.errno == errno.ENOENT:
                raise ExecutableNotFound(cmd) from e
            raise

        if not quiet and proc.stderr:
            _write_stderr(proc.stderr)

        try:
            proc.check_returncode()
        except subprocess.CalledProcessError as e:
>           raise CalledProcessError(*e.args)
E           graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Ksfdp', '-Tsvg']' returned non-zero exit status 1. [stderr: b'Error: remove_overlap: Graphviz not built with triangulation library\n']

graphviz/backend/execute.py:90: CalledProcessError
------------------------------------------------------------------------------------ Captured log setup -------------------------------------------------------------------------------------
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-V']
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
Error: remove_overlap: Graphviz not built with triangulation library
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-V']
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-Ksfdp', '-Tsvg']
DEBUG    graphviz.backend.execute:execute.py:61 run [PosixPath('dot'), '-V']
===================================================================================== warnings summary ======================================================================================
README.rst::README.rst
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory='doctest-output/round-table.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

docs/basic_usage.rst: 1 warning
docs/escapes.rst: 1 warning
docs/formats.rst: 1 warning
docs/neato_no_op.rst: 1 warning
docs/quoting.rst: 1 warning
docs/subgraphs_and_clusters.rst: 1 warning
graphviz/rendering.py: 1 warning
tests/test_all_classes.py: 3 warnings
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory=None as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

docs/raw_dot.rst::raw_dot.rst
  <doctest raw_dot.rst[1]>:1: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph "the holy hand grenade" { rankdir=LR; 1 -> 2 -> 3 -> lob }' as keyword arg(s)

docs/raw_dot.rst::raw_dot.rst
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory='doctest-output/holy-grenade.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

docs/unflatten.rst::unflatten.rst
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph wide {\n\t0 -> 1\t[minlen=1];\n\t0 -> 2\t[minlen=2];\n\t0 -> 3\t[minlen=3];\n\t0 -> 4\t[minlen=1];\n\t0 -> 5\t[minlen=2];\n\t0 -> 6\t[minlen=3];\n\t0 -> 7\t[minlen=1];\n\t0 -> 8\t[minlen=2];\n\t0 -> 9\t[minlen=3];\n}\n' as keyword arg(s)
    return sources.Source(out,

docs/unflatten.rst::unflatten.rst
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph wide {\n\t0 -> 1\t[minlen=1];\n\t0 -> 2\t[minlen=2];\n\t0 -> 3\t[minlen=1];\n\t0 -> 4\t[minlen=2];\n\t0 -> 5\t[minlen=1];\n\t0 -> 6\t[minlen=2];\n\t0 -> 7\t[minlen=1];\n\t0 -> 8\t[minlen=2];\n\t0 -> 9\t[minlen=1];\n}\n' as keyword arg(s)
    return sources.Source(out,

graphviz/graphs.py::graphviz.graphs
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory='doctest-output/m00se.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

graphviz/piping.py::graphviz.piping.Pipe.pipe
  <doctest graphviz.piping.Pipe.pipe[3]>:1: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph { spam }' as keyword arg(s)

graphviz/piping.py::graphviz.piping.Pipe.pipe
  <doctest graphviz.piping.Pipe.pipe[4]>:1: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph { spam }' as keyword arg(s)

graphviz/piping.py::graphviz.piping.Pipe.pipe
  <doctest graphviz.piping.Pipe.pipe[5]>:1: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph { spam }' as keyword arg(s)

graphviz/rendering.py::graphviz.rendering.Render.render
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory=PosixPath('doctest-output/spam.gv') as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

tests/test_all_classes.py: 30 warnings
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:23: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph { hello -> world }\n' as keyword arg(s)
    return cls('digraph { hello -> world }\n')

tests/test_all_classes.py::test_render_raises_before_save[Source-kwargs0]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:74: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph { spam }' as keyword arg(s)
    dot = cls(*args, filename=filename, directory=tmp_path)

tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs0]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs1]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs2]
tests/test_all_classes.py::test_render_raises_before_save_mocked[Source-kwargs3]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:97: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    dot = cls(*args, filename=filename, directory=tmp_path)

tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=False-Source]
tests/test_all_classes.py::test_format_renderer_formatter_mocked[quiet=True-Source]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:162: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    dot = cls(*[''] if cls.__name__ == 'Source' else [],

tests/test_all_classes.py: 12 warnings
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:190: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    dot = cls(*[''] if cls.__name__ == 'Source' else [],

tests/test_all_classes.py::test_pipe_lines_called_process_error[Source]
tests/test_all_classes.py::test_pipe_lines_called_process_error_mocked[Source]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_all_classes.py:30: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph { spam -- \\ }' as keyword arg(s)
    return cls('graph { spam -- \\ }')

tests/test_all_classes.py::test_unflatten[Graph]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph {\n}\n' as keyword arg(s)
    return sources.Source(out,

tests/test_all_classes.py::test_unflatten[Digraph]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph {\n}\n' as keyword arg(s)
    return sources.Source(out,

tests/test_all_classes.py::test_unflatten[Source]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph {\n\thello -> world;\n}\n' as keyword arg(s)
    return sources.Source(out,

tests/test_all_classes.py::test_unflatten_mocked[Graph]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename=<MagicMock name='unflatten()' id='140543661503296'> as keyword arg(s)
    return sources.Source(out,

tests/test_all_classes.py::test_unflatten_mocked[Digraph]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename=<MagicMock name='unflatten()' id='140543664739232'> as keyword arg(s)
    return sources.Source(out,

tests/test_all_classes.py::test_unflatten_mocked[Source]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/unflattening.py:55: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename=<MagicMock name='unflatten()' id='140543661294352'> as keyword arg(s)
    return sources.Source(out,

tests/test_graphs.py::test_subgraph_render[Graph-...]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory='/tmp/pytest-of-tkloczko/pytest-83/test_subgraph_render_Graph____0/s1.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

tests/test_graphs.py::test_subgraph_render[Digraph-...]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/rendering.py:118: PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']: pass directory='/tmp/pytest-of-tkloczko/pytest-83/test_subgraph_render_Digraph__0/s1.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

tests/test_parameters.py::test_parameters[Source]
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_parameters.py:17: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    dot = cls(*args,

tests/test_saving.py::test_saves_source_from_file
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_saving.py:9: PendingDeprecationWarning: The signature of from_file will be reduced to 1 positional arg ['filename']: pass directory=PosixPath('/tmp/pytest-of-tkloczko/pytest-83/test_saves_source_from_file0/spam.gv') as keyword arg(s)
    source = graphviz.Source.from_file(path)

tests/test_saving.py::test_saves_source_from_file
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/graphviz/sources.py:70: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='graph spam { spam }' as keyword arg(s)
    return cls(source,

tests/test_sources.py::test_init_filename
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_sources.py:32: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    assert graphviz.Source('').filename == 'Source.gv'

tests/test_sources.py::test_init_filename
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_sources.py:33: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='' as keyword arg(s)
    assert type('Subcls', (graphviz.Source,),

tests/test_sources.py::test_source_iter
  /home/tkloczko/rpmbuild/BUILD/graphviz-0.20.2/tests/test_sources.py:75: PendingDeprecationWarning: The signature of __init__ will be reduced to 1 positional arg ['source']: pass filename='digraph { hello -> world }\ndigraph { hello -> world }' as keyword arg(s)
    source_without_newline = graphviz.Source(source.source + source.source.rstrip())

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=================================================================================== slowest 10 durations ====================================================================================
0.09s call     graphviz/backend/rendering.py::graphviz.backend.rendering.render
0.09s call     graphviz/piping.py::graphviz.piping.Pipe.pipe
0.08s call     graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
0.05s call     tests/backend/test_rendering.py::test_render[dot-plain-dot-core-core.dot.plain]
0.05s call     docs/piped_output.rst::piped_output.rst
0.05s call     tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml .+</svg>\\s*$]
0.04s setup    tests/backend/test_execute.py::test_run_check_input_lines_mocked
0.04s call     tests/backend/test_piping.py::test_pipe_invalid_data[quiet=False]
0.04s call     tests/backend/test_piping.py::test_pipe_invalid_data[quiet=True]
0.04s call     graphviz/graphs.py::graphviz.graphs
================================================================================== short test summary info ==================================================================================
FAILED graphviz/jupyter_integration.py::graphviz.jupyter_integration.JupyterIntegration._repr_mimebundle_
FAILED tests/backend/test_piping.py::test_pipe[sfdp-svg-None-None-(?s)^<\\?xml .+</svg>\\s*$] - graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Ksfdp', '-Tsvg']' returned non-zero exit status 1. [stderr: b'Error: remove_overlap: Graphviz not built with ...
======================================================================== 2 failed, 367 passed, 85 warnings in 4.55s =========================================================================

Sorry for longer output but I cannot find where is enabled pytest verbose mode (I cannot find anytinig about that in pytest options in setup.cfg)

@xflr6
Copy link
Owner

xflr6 commented Mar 18, 2024

Looks like it is some conflict between tests/backend/conftest.py and tests/conftest.py

AFAICT this is due to a bug in pytest 8.1.1:

See

'test': ['pytest>=7,<8.1', # https://github.com/pytest-dev/pytest/issues/12123

@xflr6
Copy link
Owner

xflr6 commented Mar 18, 2024

pytest passes scanning test units with --import-mode=importlib and it fails in two units

The FAILED tests hint at an issue with the upstream graphviz version you are using (or its build dependencies).

Built without jpeg support?

graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tjpeg']' returned non-zero exit status 1.
[stderr: b'Format: "jpeg" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 kitty kittyz mp pdf pic plain plain-ext png pov ps ps2 svg svg_inline svgz tk vt vt-24bit webp x11 xdot xdot1.2 xdot1.4 xdot_json xlib\n']

Built without triangulation library (seems to be the same as #190)?

CompletedProcess(args=[PosixPath('dot'), '-Ksfdp', '-Tsvg'], returncode=1, stdout=b'<?xml version="1.0" encoding="UTF-...">spam</text>\n</g>\n</g>\n</svg>\n',
stderr=b'Error: remove_overlap: Graphviz not built with triangulation library\n')

Both pass here under Ubuntu 22.04.4 with upstream graphviz version 2.43.0.

Side note: The upstream Windows version has had the triangulation issue for a while now:

[ $FAILED -eq 0 ] || echo "::$SEVERITY::try-examples.py failed with exit code $FAILED (XFAIL 'Graphviz not built with triangulation library' on Windows cbuild)"

@xflr6
Copy link
Owner

xflr6 commented Mar 18, 2024

and shows some warnings

Thanks. I think pytest has got more strict about warnings recently. These are all our own warnings about arguments that should be turned into keyword-only arguments (we already check pytest.deprecated_call for them in some tests, but maybe have missed some or should start using the keyword-argument ourselves):

PendingDeprecationWarning: The signature of save will be reduced to 1 positional arg ['filename']:
pass directory='doctest-output/round-table.gv' as keyword arg(s)
    filepath = self.save(filename, directory=directory, skip_existing=None)

For now I have added a note to use -W ignore:"The signature of":PendingDeprecationWarning in https://graphviz.readthedocs.io/en/stable/release_process.html (7fab480).

Side note: I did not manage to specify the module for -W as wanted yet.

@xflr6
Copy link
Owner

xflr6 commented Mar 18, 2024

I think pytest has got more strict about warnings recently.

Hm, or maybe I messed up in e5578d3?

Either way, opened #218 for this.

@kloczek
Copy link
Author

kloczek commented Mar 18, 2024

Looks like it is some conflict between tests/backend/conftest.py and tests/conftest.py

AFAICT this is due to a bug in pytest 8.1.1:

See

'test': ['pytest>=7,<8.1', # https://github.com/pytest-dev/pytest/issues/12123

Ha .. good catch 馃槃
Thx to let me know 馃憤

Either way, opened #218 for this.

Subscribed., Thx 馃構

EOT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants