sphinxext-opengraph icon indicating copy to clipboard operation
sphinxext-opengraph copied to clipboard

0.9.1: pytest fails in more than half units becuse test suite cannot find sphinxext/opengraph/_static/Roboto-Flex.ttf

Open kloczek opened this issue 10 months ago • 7 comments

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix> using installer module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")
List of installed modules in build env:
Package                       Version
----------------------------- -----------
alabaster                     0.7.16
Babel                         2.14.0
beautifulsoup4                4.12.3
build                         1.2.1
charset-normalizer            3.3.2
contourpy                     1.2.1
cycler                        0.12.1
docutils                      0.20.1
exceptiongroup                1.1.3
fonttools                     4.51.0
idna                          3.7
imagesize                     1.4.1
importlib_metadata            7.1.0
iniconfig                     2.0.0
installer                     0.7.0
Jinja2                        3.1.3
kiwisolver                    1.4.5
markdown-it-py                3.0.0
MarkupSafe                    2.1.5
matplotlib                    3.8.4
mdit-py-plugins               0.4.0
mdurl                         0.1.2
myst-parser                   2.0.0
numpy                         1.26.5
olefile                       0.47
packaging                     24.0
pillow                        10.3.0
pluggy                        1.4.0
Pygments                      2.17.2
pyparsing                     3.1.2
pyproject_hooks               1.0.0
pytest                        8.1.1
python-dateutil               2.9.0.post0
PyYAML                        6.0.1
requests                      2.31.0
setuptools                    69.4.0
setuptools-scm                8.0.4
snowballstemmer               2.2.0
soupsieve                     2.5
Sphinx                        7.2.6
sphinx_design                 0.5.0
sphinxcontrib-applehelp       1.0.8
sphinxcontrib-devhelp         1.0.6
sphinxcontrib-htmlhelp        2.0.5
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.7
sphinxcontrib-serializinghtml 1.1.10
tokenize_rt                   5.2.0
tomli                         2.0.1
typing_extensions             4.11.0
urllib3                       2.2.1
wheel                         0.43.0
zipp                          3.18.1

Please let me know if you need more details or want me to perform some diagnostics.

kloczek avatar Apr 15 '24 10:04 kloczek

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
============================= test session starts ==============================
platform linux -- Python 3.10.14, pytest-8.1.1, pluggy-1.4.0
rootdir: /home/tkloczko/rpmbuild/BUILD/sphinxext-opengraph-0.9.1
collected 38 items

tests/test_options.py EEEEEE..E.EEEEE...EEEEEEEEEEE...EFF.EE             [100%]

==================================== ERRORS ====================================
________________________ ERROR at setup of test_simple _________________________

self = <sphinx.events.EventManager object at 0x7fc13e5fdf30>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fc13e5fdf30>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_________________ ERROR at setup of test_meta_name_description _________________

self = <sphinx.events.EventManager object at 0x7fc13e4cb100>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fc13e4cb100>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_____________ ERROR at setup of test_meta_name_manual_description ______________

self = <sphinx.events.EventManager object at 0x7fc13e4c95a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d...atoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <meta...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fc13e4c95a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d...atoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <meta...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
____________ ERROR at setup of test_meta_name_manual_og_description ____________

self = <sphinx.events.EventManager object at 0x7fbfb7adb100>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7adb100>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_______________________ ERROR at setup of test_site_url ________________________

self = <sphinx.events.EventManager object at 0x7fbfb7c4d5a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7c4d5a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
______________________ ERROR at setup of test_dirhtml_url ______________________

self = <sphinx.events.EventManager object at 0x7fbfb7b7ec80>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d...rius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'dirhtml', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='dirhtml'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b7ec80>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d...rius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'dirhtml', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
___________________ ERROR at setup of test_social_cards_svg ____________________

self = <sphinx.events.EventManager object at 0x7fbfb802dcc0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb802dcc0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
__________________ ERROR at setup of test_image_social_cards ___________________

self = <sphinx.events.EventManager object at 0x7fbfb7d5c970>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7d5c970>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_________________________ ERROR at setup of test_type __________________________

self = <sphinx.events.EventManager object at 0x7fbfb8028df0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '', 'builder': 'html', ...}, <document: >)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb8028df0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '', 'builder': 'html', ...}, <document: >)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
__________________ ERROR at setup of test_description_length ___________________

self = <sphinx.events.EventManager object at 0x7fbfb8027790>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb8027790>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_______________________ ERROR at setup of test_site_name _______________________

self = <sphinx.events.EventManager object at 0x7fbfb8027880>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb8027880>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
___________________ ERROR at setup of test_site_name_project ___________________

self = <sphinx.events.EventManager object at 0x7fbfb7b1ecb0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b1ecb0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
___________________ ERROR at setup of test_skip_admonitions ____________________

self = <sphinx.events.EventManager object at 0x7fbfb7b7caf0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<div class="admo...his is text.</p>\n', 'builder': 'html', ...}, <document: <attention...><caution...><danger...><error...><importan ...>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b7caf0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<div class="admo...his is text.</p>\n', 'builder': 'html', ...}, <document: <attention...><caution...><danger...><error...><importan ...>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
___________________ ERROR at setup of test_skip_first_title ____________________

self = <sphinx.events.EventManager object at 0x7fbfb7d798a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<section id="a-t...mple text.</p>\n</section>\n', 'builder': 'html', ...}, <document: <section "a title"...><section "another title"...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7d798a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<section id="a-t...mple text.</p>\n</section>\n', 'builder': 'html', ...}, <document: <section "a title"...><section "another title"...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
________________ ERROR at setup of test_skip_title_punctuation _________________

self = <sphinx.events.EventManager object at 0x7fbfb7c32aa0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<section id="a-t...mple text.</p>\n</section>\n', 'builder': 'html', ...}, <document: <section "a title"...><section "another title"...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7c32aa0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<section id="a-t...mple text.</p>\n</section>\n', 'builder': 'html', ...}, <document: <section "a title"...><section "another title"...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_________________ ERROR at setup of test_remove_double_spacing _________________

self = <sphinx.events.EventManager object at 0x7fbfb7db1a20>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Example sentence 1.  Example sentence 2.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7db1a20>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Example sentence 1.  Example sentence 2.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
___________________ ERROR at setup of test_list_punctuation ____________________

self = <sphinx.events.EventManager object at 0x7fbfb7c32d70>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul class="simpl...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7c32d70>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul class="simpl...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
________________ ERROR at setup of test_nested_list_punctuation ________________

self = <sphinx.events.EventManager object at 0x7fbfb7db2980>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7db2980>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_____________________ ERROR at setup of test_skip_comments _____________________

self = <sphinx.events.EventManager object at 0x7fbfb7dd4a90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This is text.</p>\n', 'builder': 'html', ...}, <document: <comment...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7dd4a90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This is text.</p>\n', 'builder': 'html', ...}, <document: <comment...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
______________________ ERROR at setup of test_custom_tags ______________________

self = <sphinx.events.EventManager object at 0x7fbfb802e4a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb802e4a0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_______________________ ERROR at setup of test_skip_raw ________________________

self = <sphinx.events.EventManager object at 0x7fbfb78a9c90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This text sho...p>This text should also be included.</p>\n', 'builder': 'html', ...}, <document: <paragraph...><raw...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb78a9c90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This text sho...p>This text should also be included.</p>\n', 'builder': 'html', ...}, <document: <paragraph...><raw...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
____________________ ERROR at setup of test_skip_code_block ____________________

self = <sphinx.events.EventManager object at 0x7fbfb7a84f70>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This text sho...t should also be included.</p>\n', 'builder': 'html', ...}, <document: <paragraph...><literal_block...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7a84f70>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>This text sho...t should also be included.</p>\n', 'builder': 'html', ...}, <document: <paragraph...><literal_block...><paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
____________________ ERROR at setup of test_quotation_marks ____________________

self = <sphinx.events.EventManager object at 0x7fbfb802fd90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>&quot;This te...as well &quot;while this is once again in quotations&quot;</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb802fd90>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>&quot;This te...as well &quot;while this is once again in quotations&quot;</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
____________________ ERROR at setup of test_arbitrary_tags _____________________

self = <sphinx.events.EventManager object at 0x7fbfb80288e0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb80288e0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_________________ ERROR at setup of test_no_configuration_html _________________

self = <sphinx.events.EventManager object at 0x7fbfb7b1f070>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b1f070>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
_______________ ERROR at setup of test_no_configuration_dirhtml ________________

self = <sphinx.events.EventManager object at 0x7fbfb7d5f7f0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...i>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'dirhtml', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='dirhtml'>

    @pytest.fixture()
    def content(app):
>       app.build()

tests/conftest.py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7d5f7f0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...i>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'dirhtml', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
=================================== FAILURES ===================================
______________________________ test_rtd_override _______________________________

self = <sphinx.events.EventManager object at 0x7fbfb7b543d0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fbfb7b57700>

    @pytest.mark.sphinx("html", testroot="simple")
    def test_rtd_override(app: Sphinx, monkeypatch):
        monkeypatch.setenv("READTHEDOCS", "True")
        app.config.html_baseurl = "https://failure.com/en/latest/"

>       app.build()

tests/test_options.py:293:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b543d0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<p>Lorem ipsum d... varius natoque penatibus et magnis dis parturient mauris.</p>\n', 'builder': 'html', ...}, <document: <paragraph...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-49/simple
# outdir: /tmp/pytest-of-tkloczko/pytest-49/simple/_build/html
# status:
Running Sphinx v7.2.6
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 1 source files that are out of date
updating environment: [new config] 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
copying assets... copying static files... done
copying extra files... done
done
writing output... [100%] index
# warning:
WARNING: [Social card]: image_mini file doesn't exist, skipping...

________________________________ test_rtd_valid ________________________________

self = <sphinx.events.EventManager object at 0x7fbfb7b2b8e0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
>               results.append(listener.handler(self.app, *args))

/usr/lib/python3.10/site-packages/sphinx/events.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:266: in html_page_context
    context["metatags"] += get_tags(app, context, doctree, app.config)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/__init__.py:176: in get_tags
    image_path = create_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:122: in create_social_card
    plt_objects = render_social_card(
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:157: in render_social_card
    ) = create_social_card_objects(**kwargs_fig)
../../BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/socialcards.py:190: in create_social_card_objects
    matplotlib.font_manager.fontManager.addfont(path_font)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <matplotlib.font_manager.FontManager object at 0x7fbfb85c2e60>
path = '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

    def addfont(self, path):
        """
        Cache the properties of the font at *path* to make it available to the
        `FontManager`.  The type of font is inferred from the path suffix.

        Parameters
        ----------
        path : str or path-like

        Notes
        -----
        This method is useful for adding a custom font without installing it in
        your operating system. See the `FontManager` singleton instance for
        usage and caveats about this function.
        """
        # Convert to string in case of a path as
        # afmFontProperty and FT2Font expect this
        path = os.fsdecode(path)
        if Path(path).suffix.lower() == ".afm":
            with open(path, "rb") as fh:
                font = _afm.AFM(fh)
            prop = afmFontProperty(path, font)
            self.afmlist.append(prop)
        else:
>           font = ft2font.FT2Font(path)
E           FileNotFoundError: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf'

/usr/lib64/python3.10/site-packages/matplotlib/font_manager.py:1076: FileNotFoundError

The above exception was the direct cause of the following exception:

app = <SphinxTestApp buildername='html'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fbfb7b2a080>

    @pytest.mark.sphinx("html", testroot="rtd-default")
    def test_rtd_valid(app: Sphinx, monkeypatch):
        monkeypatch.setenv("READTHEDOCS", "True")
        app.config.html_baseurl = "https://failure.com/en/latest/"

>       app.build()

tests/test_options.py:304:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/sphinx/testing/util.py:147: in build
    super().build(force_all, filenames)
/usr/lib/python3.10/site-packages/sphinx/application.py:355: in build
    self.builder.build_update()
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:293: in build_update
    self.build(to_build,
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:363: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:571: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.10/site-packages/sphinx/builders/__init__.py:581: in _write_serial
    self.write_doc(docname, doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:655: in write_doc
    self.handle_page(docname, ctx, event_arg=doctree)
/usr/lib/python3.10/site-packages/sphinx/builders/html/__init__.py:1107: in handle_page
    newtmpl = self.app.emit_firstresult('html-page-context', pagename,
/usr/lib/python3.10/site-packages/sphinx/application.py:492: in emit_firstresult
    return self.events.emit_firstresult(event, *args,
/usr/lib/python3.10/site-packages/sphinx/events.py:118: in emit_firstresult
    for result in self.emit(name, *args, allowed_exceptions=allowed_exceptions):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sphinx.events.EventManager object at 0x7fbfb7b2b8e0>
name = 'html-page-context', allowed_exceptions = ()
args = ('index', 'page.html', {'alabaster_version': '0.7.16', 'alabaster_version_info': (0, 7, 16), 'body': '<ul>\n<li><p>Ite...</li>\n<li><p>Item 3</p></li>\n<li><p>Item 4</p></li>\n</ul>\n', 'builder': 'html', ...}, <document: <bullet_list...>>)
results = [None, None, None]
listeners = [EventListener(id=10, handler=<function setup_resource_paths at 0x7fc13e1f5990>, priority=500), EventListener(id=11, h...c13db0d6c0>, priority=500), EventListener(id=60, handler=<function html_page_context at 0x7fbfb810bc70>, priority=500)]

    def emit(self, name: str, *args: Any,
             allowed_exceptions: tuple[type[Exception], ...] = ()) -> list:
        """Emit a Sphinx event."""

        # not every object likes to be repr()'d (think
        # random stuff coming via autodoc)
        with contextlib.suppress(Exception):
            logger.debug('[app] emitting event: %r%s', name, repr(args)[:100])

        results = []
        listeners = sorted(self.listeners[name], key=attrgetter("priority"))
        for listener in listeners:
            try:
                results.append(listener.handler(self.app, *args))
            except allowed_exceptions:
                # pass through the errors specified as *allowed_exceptions*
                raise
            except SphinxError:
                raise
            except Exception as exc:
                if self.app.pdb:
                    # Just pass through the error, so that it can be debugged.
                    raise
                modname = safe_getattr(listener.handler, '__module__', None)
>               raise ExtensionError(__("Handler %r for event %r threw an exception") %
                                     (listener.handler, name), exc, modname=modname) from exc
E               sphinx.errors.ExtensionError: Handler <function html_page_context at 0x7fbfb810bc70> for event 'html-page-context' threw an exception (exception: [Errno 2] No such file or directory: '/home/tkloczko/rpmbuild/BUILDROOT/python-sphinxext-opengraph-0.9.1-2.fc37.x86_64/usr/lib/python3.10/site-packages/sphinxext/opengraph/_static/Roboto-Flex.ttf')

/usr/lib/python3.10/site-packages/sphinx/events.py:108: ExtensionError
--------------------------- Captured stdout teardown ---------------------------
# testroot: root
# builder: html
# srcdir: /tmp/pytest-of-tkloczko/pytest-49/rtd-default
# outdir: /tmp/pytest-of-tkloczko/pytest-49/rtd-default/_build/html
# status:
Running Sphinx v7.2.6
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 1 source files that are out of date
updating environment: [new config] 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
copying assets... copying static files... done
copying extra files... done
done
writing output... [100%] index
# warning:
WARNING: [Social card]: image_mini file doesn't exist, skipping...

=============================== warnings summary ===============================
tests/conftest.py:3
  /home/tkloczko/rpmbuild/BUILD/sphinxext-opengraph-0.9.1/tests/conftest.py:3: RemovedInSphinx90Warning: 'sphinx.testing.path' is deprecated. Use 'os.path' or 'pathlib' instead.
    from sphinx.testing.path import path

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
ERROR tests/test_options.py::test_simple - sphinx.errors.ExtensionError: Hand...
ERROR tests/test_options.py::test_meta_name_description - sphinx.errors.Exten...
ERROR tests/test_options.py::test_meta_name_manual_description - sphinx.error...
ERROR tests/test_options.py::test_meta_name_manual_og_description - sphinx.er...
ERROR tests/test_options.py::test_site_url - sphinx.errors.ExtensionError: Ha...
ERROR tests/test_options.py::test_dirhtml_url - sphinx.errors.ExtensionError:...
ERROR tests/test_options.py::test_social_cards_svg - sphinx.errors.ExtensionE...
ERROR tests/test_options.py::test_image_social_cards - sphinx.errors.Extensio...
ERROR tests/test_options.py::test_type - sphinx.errors.ExtensionError: Handle...
ERROR tests/test_options.py::test_description_length - sphinx.errors.Extensio...
ERROR tests/test_options.py::test_site_name - sphinx.errors.ExtensionError: H...
ERROR tests/test_options.py::test_site_name_project - sphinx.errors.Extension...
ERROR tests/test_options.py::test_skip_admonitions - sphinx.errors.ExtensionE...
ERROR tests/test_options.py::test_skip_first_title - sphinx.errors.ExtensionE...
ERROR tests/test_options.py::test_skip_title_punctuation - sphinx.errors.Exte...
ERROR tests/test_options.py::test_remove_double_spacing - sphinx.errors.Exten...
ERROR tests/test_options.py::test_list_punctuation - sphinx.errors.ExtensionE...
ERROR tests/test_options.py::test_nested_list_punctuation - sphinx.errors.Ext...
ERROR tests/test_options.py::test_skip_comments - sphinx.errors.ExtensionErro...
ERROR tests/test_options.py::test_custom_tags - sphinx.errors.ExtensionError:...
ERROR tests/test_options.py::test_skip_raw - sphinx.errors.ExtensionError: Ha...
ERROR tests/test_options.py::test_skip_code_block - sphinx.errors.ExtensionEr...
ERROR tests/test_options.py::test_quotation_marks - sphinx.errors.ExtensionEr...
ERROR tests/test_options.py::test_arbitrary_tags - sphinx.errors.ExtensionErr...
ERROR tests/test_options.py::test_no_configuration_html - sphinx.errors.Exten...
ERROR tests/test_options.py::test_no_configuration_dirhtml - sphinx.errors.Ex...
FAILED tests/test_options.py::test_rtd_override - sphinx.errors.ExtensionErro...
FAILED tests/test_options.py::test_rtd_valid - sphinx.errors.ExtensionError: ...
============== 2 failed, 10 passed, 1 warning, 26 errors in 7.68s ==============

kloczek avatar Apr 15 '24 10:04 kloczek

And indeed that .ttf fornt file is not included in generated by pep517 build procedure .whl archive

[tkloczko@pers-jacek dist]$ unzip -l sphinxext_opengraph-0.9.1-py3-none-any.whl
Archive:  sphinxext_opengraph-0.9.1-py3-none-any.whl
  Length      Date    Time    Name
---------  ---------- -----   ----
     9686  12-14-2023 11:55   sphinxext/opengraph/__init__.py
     3910  12-14-2023 11:55   sphinxext/opengraph/descriptionparser.py
      748  12-14-2023 11:55   sphinxext/opengraph/metaparser.py
    10246  12-14-2023 11:55   sphinxext/opengraph/socialcards.py
      811  12-14-2023 11:55   sphinxext/opengraph/titleparser.py
     1477  04-15-2024 10:14   sphinxext_opengraph-0.9.1.dist-info/LICENSE.md
     6499  04-15-2024 10:14   sphinxext_opengraph-0.9.1.dist-info/METADATA
       92  04-15-2024 10:14   sphinxext_opengraph-0.9.1.dist-info/WHEEL
       20  04-15-2024 10:14   sphinxext_opengraph-0.9.1.dist-info/top_level.txt
      905  04-15-2024 10:14   sphinxext_opengraph-0.9.1.dist-info/RECORD
---------                     -------
    34394                     10 files
``

kloczek avatar Apr 15 '24 10:04 kloczek

Starting from a fresh git clone on macOS, it adds the .ttf for me when I create the wheel:

❯ python3 --version
Python 3.12.3
❯ python3 -m build --version
build 1.0.3 (/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/build)
❯ python3 -sBm build -w --no-isolation
* Getting build dependencies for wheel...
* Building wheel...
[04/15/24 14:16:33] WARNING  toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'                                             pyproject_reading.py:42
running bdist_wheel
running build
running build_py
copying sphinxext/opengraph/metaparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/__init__.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/descriptionparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/titleparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/socialcards.py -> build/lib/sphinxext/opengraph
running egg_info
writing sphinxext_opengraph.egg-info/PKG-INFO
writing dependency_links to sphinxext_opengraph.egg-info/dependency_links.txt
writing requirements to sphinxext_opengraph.egg-info/requires.txt
writing top-level names to sphinxext_opengraph.egg-info/top_level.txt
adding license file 'LICENSE.md'
writing manifest file 'sphinxext_opengraph.egg-info/SOURCES.txt'
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'sphinxext/opengraph._static' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'sphinxext/opengraph._static' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'sphinxext/opengraph._static' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'sphinxext/opengraph._static' to be distributed and are
        already explicitly excluding 'sphinxext/opengraph._static' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
copying sphinxext/opengraph/_static/Roboto-Flex.ttf -> build/lib/sphinxext/opengraph/_static
copying sphinxext/opengraph/_static/sphinx-logo-shadow.png -> build/lib/sphinxext/opengraph/_static
installing to build/bdist.macosx-10.9-universal2/wheel
running install
running install_lib
creating build/bdist.macosx-10.9-universal2/wheel
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/metaparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/__init__.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/_static/Roboto-Flex.ttf -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/_static/sphinx-logo-shadow.png -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/descriptionparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/titleparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/socialcards.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
running install_egg_info
Copying sphinxext_opengraph.egg-info to build/bdist.macosx-10.9-universal2/wheel/sphinxext_opengraph-0.9.2.dev1+g1da6c73-py3.12.egg-info
running install_scripts
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/WHEEL
creating '/private/tmp/sphinxext-opengraph/dist/.tmp-7cgna2p9/sphinxext_opengraph-0.9.2.dev1+g1da6c73-py3-none-any.whl' and adding 'build/bdist.macosx-10.9-universal2/wheel' to it
adding 'sphinxext/opengraph/__init__.py'
adding 'sphinxext/opengraph/descriptionparser.py'
adding 'sphinxext/opengraph/metaparser.py'
adding 'sphinxext/opengraph/socialcards.py'
adding 'sphinxext/opengraph/titleparser.py'
adding 'sphinxext/opengraph/_static/Roboto-Flex.ttf'
adding 'sphinxext/opengraph/_static/sphinx-logo-shadow.png'
adding 'sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/LICENSE.md'
adding 'sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/METADATA'
adding 'sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/WHEEL'
adding 'sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/top_level.txt'
adding 'sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/RECORD'
removing build/bdist.macosx-10.9-universal2/wheel
Successfully built sphinxext_opengraph-0.9.2.dev1+g1da6c73-py3-none-any.whl

And unzipping it shows it's present as well:

❯ unzip -l dist/sphinxext_opengraph-0.9.2.dev1+g1da6c73-py3-none-any.whl
Archive:  dist/sphinxext_opengraph-0.9.2.dev1+g1da6c73-py3-none-any.whl
  Length      Date    Time    Name
---------  ---------- -----   ----
     9686  04-15-2024 11:12   sphinxext/opengraph/__init__.py
     3910  04-15-2024 11:12   sphinxext/opengraph/descriptionparser.py
      748  04-15-2024 11:12   sphinxext/opengraph/metaparser.py
    10246  04-15-2024 11:12   sphinxext/opengraph/socialcards.py
      811  04-15-2024 11:12   sphinxext/opengraph/titleparser.py
  1755856  04-15-2024 11:12   sphinxext/opengraph/_static/Roboto-Flex.ttf
     1878  04-15-2024 11:12   sphinxext/opengraph/_static/sphinx-logo-shadow.png
     1477  04-15-2024 11:16   sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/LICENSE.md
     6538  04-15-2024 11:16   sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/METADATA
       92  04-15-2024 11:16   sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/WHEEL
       20  04-15-2024 11:16   sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/top_level.txt
     1185  04-15-2024 11:16   sphinxext_opengraph-0.9.2.dev1+g1da6c73.dist-info/RECORD
---------                     -------
  1792447                     12 files

hugovk avatar Apr 15 '24 11:04 hugovk

I'm using as input source tar ball autogenerated from git tag which do not contain git metadata 🤔

kloczek avatar Apr 16 '24 13:04 kloczek

Also works for me when starting with the sphinxext-opengraph-0.9.1.tar.gz sdist from https://pypi.org/project/sphinxext-opengraph/#files:

Details
❯ python3 --version
Python 3.12.3

❯ python3 -m build --version
build 1.1.1 (/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/build)

❯ python3 -sBm build -w --no-isolation
* Getting build dependencies for wheel...
* Building wheel...
[04/16/24 17:42:10] WARNING  toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'                                             pyproject_reading.py:42
running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/sphinxext
creating build/lib/sphinxext/opengraph
copying sphinxext/opengraph/metaparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/__init__.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/descriptionparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/titleparser.py -> build/lib/sphinxext/opengraph
copying sphinxext/opengraph/socialcards.py -> build/lib/sphinxext/opengraph
running egg_info
writing sphinxext_opengraph.egg-info/PKG-INFO
writing dependency_links to sphinxext_opengraph.egg-info/dependency_links.txt
writing requirements to sphinxext_opengraph.egg-info/requires.txt
writing top-level names to sphinxext_opengraph.egg-info/top_level.txt
                    ERROR    listing git files failed - pretending there aren't any                                                                                         git.py:24
reading manifest file 'sphinxext_opengraph.egg-info/SOURCES.txt'
adding license file 'LICENSE.md'
writing manifest file 'sphinxext_opengraph.egg-info/SOURCES.txt'
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'sphinxext/opengraph._static' is absent from the `packages` configuration.
!!

        ********************************************************************************
        ############################
        # Package would be ignored #
        ############################
        Python recognizes 'sphinxext/opengraph._static' as an importable package[^1],
        but it is absent from setuptools' `packages` configuration.

        This leads to an ambiguous overall configuration. If you want to distribute this
        package, please make sure that 'sphinxext/opengraph._static' is explicitly added
        to the `packages` configuration field.

        Alternatively, you can also rely on setuptools' discovery methods
        (for example by using `find_namespace_packages(...)`/`find_namespace:`
        instead of `find_packages(...)`/`find:`).

        You can read more about "package discovery" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

        If you don't want 'sphinxext/opengraph._static' to be distributed and are
        already explicitly excluding 'sphinxext/opengraph._static' via
        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
        you can try to use `exclude_package_data`, or `include-package-data=False` in
        combination with a more fine grained `package-data` configuration.

        You can read more about "package data files" on setuptools documentation page:

        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


        [^1]: For Python, any directory (with suitable naming) can be imported,
              even if it does not contain any `.py` files.
              On the other hand, currently there is no concept of package data
              directory, all directories are treated like packages.
        ********************************************************************************

!!
  check.warn(importable)
creating build/lib/sphinxext/opengraph/_static
copying sphinxext/opengraph/_static/Roboto-Flex.ttf -> build/lib/sphinxext/opengraph/_static
copying sphinxext/opengraph/_static/sphinx-logo-shadow.png -> build/lib/sphinxext/opengraph/_static
installing to build/bdist.macosx-10.9-universal2/wheel
running install
running install_lib
creating build/bdist.macosx-10.9-universal2
creating build/bdist.macosx-10.9-universal2/wheel
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/metaparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/__init__.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/_static/Roboto-Flex.ttf -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/_static/sphinx-logo-shadow.png -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph/_static
copying build/lib/sphinxext/opengraph/descriptionparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/titleparser.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
copying build/lib/sphinxext/opengraph/socialcards.py -> build/bdist.macosx-10.9-universal2/wheel/sphinxext/opengraph
running install_egg_info
Copying sphinxext_opengraph.egg-info to build/bdist.macosx-10.9-universal2/wheel/sphinxext_opengraph-0.9.1-py3.12.egg-info
running install_scripts
creating build/bdist.macosx-10.9-universal2/wheel/sphinxext_opengraph-0.9.1.dist-info/WHEEL
creating '/private/tmp/downloads/sphinxext-opengraph-0.9.1/dist/.tmp-p2dp52df/sphinxext_opengraph-0.9.1-py3-none-any.whl' and adding 'build/bdist.macosx-10.9-universal2/wheel' to it
adding 'sphinxext/opengraph/__init__.py'
adding 'sphinxext/opengraph/descriptionparser.py'
adding 'sphinxext/opengraph/metaparser.py'
adding 'sphinxext/opengraph/socialcards.py'
adding 'sphinxext/opengraph/titleparser.py'
adding 'sphinxext/opengraph/_static/Roboto-Flex.ttf'
adding 'sphinxext/opengraph/_static/sphinx-logo-shadow.png'
adding 'sphinxext_opengraph-0.9.1.dist-info/LICENSE.md'
adding 'sphinxext_opengraph-0.9.1.dist-info/METADATA'
adding 'sphinxext_opengraph-0.9.1.dist-info/WHEEL'
adding 'sphinxext_opengraph-0.9.1.dist-info/top_level.txt'
adding 'sphinxext_opengraph-0.9.1.dist-info/RECORD'
removing build/bdist.macosx-10.9-universal2/wheel
Successfully built sphinxext_opengraph-0.9.1-py3-none-any.whl

❯ unzip -l dist/sphinxext_opengraph-0.9.1-py3-none-any.whl
Archive:  dist/sphinxext_opengraph-0.9.1-py3-none-any.whl
  Length      Date    Time    Name
---------  ---------- -----   ----
     9686  12-14-2023 11:55   sphinxext/opengraph/__init__.py
     3910  12-14-2023 11:55   sphinxext/opengraph/descriptionparser.py
      748  12-14-2023 11:55   sphinxext/opengraph/metaparser.py
    10246  12-14-2023 11:55   sphinxext/opengraph/socialcards.py
      811  12-14-2023 11:55   sphinxext/opengraph/titleparser.py
  1755856  12-14-2023 11:55   sphinxext/opengraph/_static/Roboto-Flex.ttf
     1878  12-14-2023 11:55   sphinxext/opengraph/_static/sphinx-logo-shadow.png
     1477  04-16-2024 14:42   sphinxext_opengraph-0.9.1.dist-info/LICENSE.md
     6473  04-16-2024 14:42   sphinxext_opengraph-0.9.1.dist-info/METADATA
       92  04-16-2024 14:42   sphinxext_opengraph-0.9.1.dist-info/WHEEL
       20  04-16-2024 14:42   sphinxext_opengraph-0.9.1.dist-info/top_level.txt
     1115  04-16-2024 14:42   sphinxext_opengraph-0.9.1.dist-info/RECORD
---------                     -------
  1792312                     12 files

hugovk avatar Apr 16 '24 14:04 hugovk

When using the GitHub release zip from https://github.com/wpilibsuite/sphinxext-opengraph/releases/tag/v0.9.1 the error message says to build from a Git repo or PyPI tarball:

Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work.

For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj

ERROR Backend subprocess exited when trying to invoke build_wheel

Details
❯ python3 -sBm build -w --no-isolation
Found existing alias for "python3". You should use: "python"
* Getting build dependencies for wheel...
* Building wheel...
[04/16/24 17:46:17] WARNING  toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'                                             pyproject_reading.py:42
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pyproject_hooks/_in_process/_in_process.py", line 335, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
    return _build_backend().build_wheel(wheel_directory, config_settings,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/build_meta.py", line 410, in build_wheel
    return self._build_with_temp_dir(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
    self.run_setup()
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/build_meta.py", line 487, in run_setup
    super().run_setup(setup_script=setup_script)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
    exec(code, locals())
  File "<string>", line 6, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/__init__.py", line 104, in setup
    return distutils.core.setup(**attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 146, in setup
    _setup_distribution = dist = klass(attrs)
                                 ^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/dist.py", line 307, in __init__
    _Distribution.__init__(self, dist_attrs)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 284, in __init__
    self.finalize_options()
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/dist.py", line 658, in finalize_options
    ep(self)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools/dist.py", line 678, in _finalize_setup_keywords
    ep.load()(self, ep.name, value)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools_scm/_integration/setuptools.py", line 101, in version_keyword
    _assign_version(dist, config)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools_scm/_integration/setuptools.py", line 56, in _assign_version
    _version_missing(config)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/setuptools_scm/_get_version_impl.py", line 112, in _version_missing
    raise LookupError(
LookupError: setuptools-scm was unable to detect version for /private/tmp/downloads/sphinxext-opengraph-0.9.1-github.

Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work.

For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj

ERROR Backend subprocess exited when trying to invoke build_wheel

hugovk avatar Apr 16 '24 14:04 hugovk

When using the GitHub release zip from https://github.com/wpilibsuite/sphinxext-opengraph/releases/tag/v0.9.1 the error message says to build from a Git repo or PyPI tarball:

Yes and in such cases setuptools-scm provides injecting version over $SETUPTOOLS_SCM_PRETEND_VERSION env variable. This methodology works in case of +130 other cases when setuptools-scm is used

[tkloczko@pers-jacek SPECS]$ grep -l "BuildRequires:.*python3dist(setuptools-scm)" *spec | wc -l
136

So how in cases sdist tar ball is passed that this font file is data file? 🤔

kloczek avatar Apr 17 '24 10:04 kloczek