Given following log snippets, their explanation, and nothing else, explain what failure, if any, occurred during build of this package.

  Snippets are in a format of [X] : [Y], where [X] is a log snippet, and [Y] is the explanation.

  Snippets are delimited with '================'.

  Drawing on information from all snippets, provide a concise explanation of the issue and recommend a solution.

  Explanation of the issue, and recommended solution, should take a handful of sentences.

  Snippets:

  [+ /usr/bin/pytest -k 'not probe_options and not probe_run_online and not test_dnsviz_graph_output_format and not _online'
============================= test session starts ==============================
platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0
rootdir: /builddir/build/BUILD/dnsviz-0.11.0-build/dnsviz-0.11.0
collected 74 items / 32 deselected / 42 selected

tests/test_00_setup.py .                                                 [  2%]
tests/test_11_response.py .                                              [  4%]
tests/test_62_dnsviz_graph_options.py ........                           [ 23%]
tests/test_63_dnsviz_grok_options.py .......                             [ 40%]
tests/test_64_dnsviz_print_options.py .......                            [ 57%]
tests/test_71_dnsviz_probe_run_offline.py FFsss                          [ 69%]
tests/test_72_dnsviz_graph_run.py FFFF                                   [ 78%]
tests/test_73_dnsviz_grok_run.py FFFF                                    [ 88%]
tests/test_74_dnsviz_print_run.py FFFF                                   [ 97%]
tests/test_99_cleanup.py .                                               [100%]

=================================== FAILURES ===================================
_____ DNSProbeRunOfflineTestCase.test_dnsviz_probe_auth_local_signed_nsec ______

self = <test_71_dnsviz_probe_run_offline.DNSProbeRunOfflineTestCase testMethod=test_dnsviz_probe_auth_local_signed_nsec>

    def test_dnsviz_probe_auth_local_signed_nsec(self):
>       self._probe_zone('signed-nsec', True)

tests/test_71_dnsviz_probe_run_offline.py:53: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_71_dnsviz_probe_run_offline.py:50: in _probe_zone
    self.assertReturnCode(subprocess.call(cmd, stdout=fh))
tests/test_71_dnsviz_probe_run_offline.py:33: in assertReturnCode
    self.assertEqual(retcode, 0)
E   AssertionError: 4 != 0
----------------------------- Captured stderr call -----------------------------
Error analyzing example.com
Traceback (most recent call last):
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/commands/probe.py", line 167, in _analyze
    a = cls(name, rdclass=rdclass, dlv_domain=dlv_domain, try_ipv4=try_ipv4, try_ipv6=try_ipv6, client_ipv4=client_ipv4, client_ipv6=client_ipv6, query_class_mixin=query_class_mixin, ceiling=c, edns_diagnostics=edns_diagnostics, explicit_delegations=explicit_delegations, stop_at_explicit=stop_at_explicit, odd_ports=odd_ports, extra_rdtypes=extra_rdtypes, explicit_only=explicit_only, analysis_cache=cache, cache_level=cache_level, analysis_cache_lock=cache_lock, transport_manager=tm, th_factories=th_factories, resolver=resolver)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/analysis/online.py", line 1146, in __init__
    self.local_ceiling = self._detect_ceiling(ceiling)[0]
                         ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/analysis/online.py", line 1233, in _detect_ceiling
    ans = self.resolver.query_for_answer(ceiling, dns.rdatatype.NS, self.rdclass)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 438, in query_for_answer
    response, server = self.query(qname, rdtype, rdclass)
                       ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 426, in query
    l = self._query(qname, rdtype, rdclass, 0, self.SRC_NONAUTH_ANS)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 595, in _query
    server_cookie = response.get_server_cookie()
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/response.py", line 325, in get_server_cookie
    if cookie_opt is not None and len(cookie_opt.data) > 8:
                                      ^^^^^^^^^^^^^^^
AttributeError: 'CookieOption' object has no attribute 'data'
_____ DNSProbeRunOfflineTestCase.test_dnsviz_probe_auth_local_signed_nsec3 _____

self = <test_71_dnsviz_probe_run_offline.DNSProbeRunOfflineTestCase testMethod=test_dnsviz_probe_auth_local_signed_nsec3>

    def test_dnsviz_probe_auth_local_signed_nsec3(self):
>       self._probe_zone('signed-nsec3', True)

tests/test_71_dnsviz_probe_run_offline.py:56: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_71_dnsviz_probe_run_offline.py:50: in _probe_zone
    self.assertReturnCode(subprocess.call(cmd, stdout=fh))
tests/test_71_dnsviz_probe_run_offline.py:33: in assertReturnCode
    self.assertEqual(retcode, 0)
E   AssertionError: 4 != 0
----------------------------- Captured stderr call -----------------------------
Error analyzing example.com
Traceback (most recent call last):
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/commands/probe.py", line 167, in _analyze
    a = cls(name, rdclass=rdclass, dlv_domain=dlv_domain, try_ipv4=try_ipv4, try_ipv6=try_ipv6, client_ipv4=client_ipv4, client_ipv6=client_ipv6, query_class_mixin=query_class_mixin, ceiling=c, edns_diagnostics=edns_diagnostics, explicit_delegations=explicit_delegations, stop_at_explicit=stop_at_explicit, odd_ports=odd_ports, extra_rdtypes=extra_rdtypes, explicit_only=explicit_only, analysis_cache=cache, cache_level=cache_level, analysis_cache_lock=cache_lock, transport_manager=tm, th_factories=th_factories, resolver=resolver)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/analysis/online.py", line 1146, in __init__
    self.local_ceiling = self._detect_ceiling(ceiling)[0]
                         ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/analysis/online.py", line 1233, in _detect_ceiling
    ans = self.resolver.query_for_answer(ceiling, dns.rdatatype.NS, self.rdclass)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 438, in query_for_answer
    response, server = self.query(qname, rdtype, rdclass)
                       ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 426, in query
    l = self._query(qname, rdtype, rdclass, 0, self.SRC_NONAUTH_ANS)
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/resolver.py", line 595, in _query
    server_cookie = response.get_server_cookie()
  File "/builddir/build/BUILD/dnsviz-0.11.0-build/BUILDROOT/usr/lib/python3.13/site-packages/dnsviz/response.py", line 325, in get_server_cookie
    if cookie_opt is not None and len(cookie_opt.data) > 8:
                                      ^^^^^^^^^^^^^^^
AttributeError: 'CookieOption' object has no attribute 'data'
_________________ DNSGraphRunTestCase.test_dnsviz_graph_input __________________

self = <test_72_dnsviz_graph_run.DNSGraphRunTestCase testMethod=test_dnsviz_graph_input>

    def test_dnsviz_graph_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh_out:
            with io.open(input_file, 'rb') as fh_in:
                p = subprocess.Popen(['dnsviz', 'graph'], stdin=subprocess.PIPE, stdout=fh_out)
                p.communicate(fh_in.read())
>               self.assertEqual(p.returncode, 0)
E               AssertionError: 3 != 0

tests/test_72_dnsviz_graph_run.py:39: AssertionError
______________ DNSGraphRunTestCase.test_dnsviz_graph_names_input _______________

self = <test_72_dnsviz_graph_run.DNSGraphRunTestCase testMethod=test_dnsviz_graph_names_input>

    def test_dnsviz_graph_names_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'graph', '-r', input_file, '-f', self.names_file.name], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_72_dnsviz_graph_run.py:54: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
_________________ DNSGraphRunTestCase.test_dnsviz_graph_output _________________

self = <test_72_dnsviz_graph_run.DNSGraphRunTestCase testMethod=test_dnsviz_graph_output>

    def test_dnsviz_graph_output(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'graph', '-r', input_file], cwd=self.run_cwd, stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_72_dnsviz_graph_run.py:79: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
________________ DNSGraphRunTestCase.test_dnsviz_graph_tk_input ________________

self = <test_72_dnsviz_graph_run.DNSGraphRunTestCase testMethod=test_dnsviz_graph_tk_input>

    def test_dnsviz_graph_tk_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
        tk_file = get_tk_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'graph', '-r', input_file, '-t', tk_file], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_72_dnsviz_graph_run.py:67: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
__________________ DNSGrokRunTestCase.test_dnsviz_grok_input ___________________

self = <test_73_dnsviz_grok_run.DNSGrokRunTestCase testMethod=test_dnsviz_grok_input>

    def test_dnsviz_grok_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh_out:
            with io.open(input_file, 'rb') as fh_in:
                p = subprocess.Popen(['dnsviz', 'grok'], stdin=subprocess.PIPE, stdout=fh_out)
                p.communicate(fh_in.read())
>               self.assertEqual(p.returncode, 0)
E               AssertionError: 3 != 0

tests/test_73_dnsviz_grok_run.py:39: AssertionError
_______________ DNSGrokRunTestCase.test_dnsviz_grok_names_input ________________

self = <test_73_dnsviz_grok_run.DNSGrokRunTestCase testMethod=test_dnsviz_grok_names_input>

    def test_dnsviz_grok_names_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'grok', '-r', input_file, '-f', self.names_file.name], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_73_dnsviz_grok_run.py:54: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
__________________ DNSGrokRunTestCase.test_dnsviz_grok_output __________________

self = <test_73_dnsviz_grok_run.DNSGrokRunTestCase testMethod=test_dnsviz_grok_output>

    def test_dnsviz_grok_output(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'grok', '-r', input_file], cwd=self.run_cwd, stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_73_dnsviz_grok_run.py:79: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
_________________ DNSGrokRunTestCase.test_dnsviz_grok_tk_input _________________

self = <test_73_dnsviz_grok_run.DNSGrokRunTestCase testMethod=test_dnsviz_grok_tk_input>

    def test_dnsviz_grok_tk_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
        tk_file = get_tk_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'grok', '-r', input_file, '-t', tk_file], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_73_dnsviz_grok_run.py:67: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
_________________ DNSPrintRunTestCase.test_dnsviz_print_input __________________

self = <test_74_dnsviz_print_run.DNSPrintRunTestCase testMethod=test_dnsviz_print_input>

    def test_dnsviz_print_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh_out:
            with io.open(input_file, 'rb') as fh_in:
                p = subprocess.Popen(['dnsviz', 'print'], stdin=subprocess.PIPE, stdout=fh_out)
                p.communicate(fh_in.read())
>               self.assertEqual(p.returncode, 0)
E               AssertionError: 3 != 0

tests/test_74_dnsviz_print_run.py:39: AssertionError
______________ DNSPrintRunTestCase.test_dnsviz_print_names_input _______________

self = <test_74_dnsviz_print_run.DNSPrintRunTestCase testMethod=test_dnsviz_print_names_input>

    def test_dnsviz_print_names_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'print', '-r', input_file, '-f', self.names_file.name], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_74_dnsviz_print_run.py:54: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
_________________ DNSPrintRunTestCase.test_dnsviz_print_output _________________

self = <test_74_dnsviz_print_run.DNSPrintRunTestCase testMethod=test_dnsviz_print_output>

    def test_dnsviz_print_output(self):
        input_file = get_probe_output_auth_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'print', '-r', input_file], cwd=self.run_cwd, stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_74_dnsviz_print_run.py:79: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
________________ DNSPrintRunTestCase.test_dnsviz_print_tk_input ________________

self = <test_74_dnsviz_print_run.DNSPrintRunTestCase testMethod=test_dnsviz_print_tk_input>

    def test_dnsviz_print_tk_input(self):
        input_file = get_probe_output_auth_file('signed-nsec')
        tk_file = get_tk_file('signed-nsec')
    
        with io.open(self.output.name, 'wb') as fh:
>           self.assertEqual(subprocess.call(['dnsviz', 'print', '-r', input_file, '-t', tk_file], stdout=fh), 0)
E           AssertionError: 3 != 0

tests/test_74_dnsviz_print_run.py:67: AssertionError
----------------------------- Captured stderr call -----------------------------
No input
=============================== warnings summary ===============================
<frozen importlib._bootstrap>:488
  <frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute

<frozen importlib._bootstrap>:488
  <frozen importlib._bootstrap>:488: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute

<frozen importlib._bootstrap>:488
  <frozen importlib._bootstrap>:488: DeprecationWarning: builtin type swigvarlink has no __module__ attribute

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_71_dnsviz_probe_run_offline.py::DNSProbeRunOfflineTestCase::test_dnsviz_probe_auth_local_signed_nsec
FAILED tests/test_71_dnsviz_probe_run_offline.py::DNSProbeRunOfflineTestCase::test_dnsviz_probe_auth_local_signed_nsec3
FAILED tests/test_72_dnsviz_graph_run.py::DNSGraphRunTestCase::test_dnsviz_graph_input
FAILED tests/test_72_dnsviz_graph_run.py::DNSGraphRunTestCase::test_dnsviz_graph_names_input
FAILED tests/test_72_dnsviz_graph_run.py::DNSGraphRunTestCase::test_dnsviz_graph_output
FAILED tests/test_72_dnsviz_graph_run.py::DNSGraphRunTestCase::test_dnsviz_graph_tk_input
FAILED tests/test_73_dnsviz_grok_run.py::DNSGrokRunTestCase::test_dnsviz_grok_input
FAILED tests/test_73_dnsviz_grok_run.py::DNSGrokRunTestCase::test_dnsviz_grok_names_input
FAILED tests/test_73_dnsviz_grok_run.py::DNSGrokRunTestCase::test_dnsviz_grok_output
FAILED tests/test_73_dnsviz_grok_run.py::DNSGrokRunTestCase::test_dnsviz_grok_tk_input
FAILED tests/test_74_dnsviz_print_run.py::DNSPrintRunTestCase::test_dnsviz_print_input
FAILED tests/test_74_dnsviz_print_run.py::DNSPrintRunTestCase::test_dnsviz_print_names_input
FAILED tests/test_74_dnsviz_print_run.py::DNSPrintRunTestCase::test_dnsviz_print_output
FAILED tests/test_74_dnsviz_print_run.py::DNSPrintRunTestCase::test_dnsviz_print_tk_input
===== 14 failed, 25 passed, 3 skipped, 32 deselected, 3 warnings in 7.80s ======
error: Bad exit status from /var/tmp/rpm-tmp.yg5z8E (%check)

RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.yg5z8E (%check)]: [The snippet shows failed tests.]


Answer: Issue: The build failed because the testsuite failed. In this particular case, the testsuite uncovered that dnsviz is not compatible with newest python-dns.
Resolution: Use compatible versions of dnsviz and python-dns.