Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

Open
kloczek opened this issue Apr 15, 2024 · 7 comments

Comments

@kloczek
Copy link

kloczek commented Apr 15, 2024

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
Copy link
Author

kloczek commented Apr 15, 2024

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
Copy link
Author

kloczek commented Apr 15, 2024

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
``

@hugovk
Copy link
Contributor

hugovk commented Apr 15, 2024

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

python3 --version
Python 3.12.3python3 -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

@kloczek
Copy link
Author

kloczek commented Apr 16, 2024

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

@hugovk
Copy link
Contributor

hugovk commented Apr 16, 2024

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.3python3 -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.whlunzip -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
Copy link
Contributor

hugovk commented Apr 16, 2024

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

@kloczek
Copy link
Author

kloczek commented Apr 17, 2024

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? 🤔

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

No branches or pull requests

2 participants