code: def test_section_header_underline_length(self):
      docstrings = [
          (
              """
  Summary line
  
  Example
  -
  Multiline example
  body
  
  """,
              """
  Summary line
  
  Example
  -
  Multiline example
  body
  """,
          ),
          ################################
          (
              """
  Summary line
  
  Example
  --
  Multiline example
  body
  
  """,
              """
  Summary line
  
  .. rubric:: Example
  
  Multiline example
  body
  """,
          ),
          ################################
          (
              """
  Summary line
  
  Example
  -------
  Multiline example
  body
  
  """,
              """
  Summary line
  
  .. rubric:: Example
  
  Multiline example
  body
  """,
          ),
          ################################
          (
              """
  Summary line
  
  Example
  ------------
  Multiline example
  body
  
  """,
              """
  Summary line
  
  .. rubric:: Example
  
  Multiline example
  body
  """,
          ),
      ]
      for docstring, expected in docstrings:
          actual = str(NumpyDocstring(docstring))
          assert expected == actual
  
imports: import re
  from collections import namedtuple
  from inspect import cleandoc
  from textwrap import dedent
  from unittest import mock
  import pytest
  from sphinx.ext.napoleon import Config
  from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring, _convert_numpy_type_spec, _recombine_set_tokens, _token_type, _tokenize_type_spec
  from tests.test_extensions.ext_napoleon_pep526_data_google import PEP526GoogleClass
  from tests.test_extensions.ext_napoleon_pep526_data_numpy import PEP526NumpyClass
label_desc: Use image node_id 15 for calling the TestNumpyDocstring obj's underlying member method code with example usage: obj.test_section_header_underline_length() without return types