Context
Our Mkdocs website is collaborative and many of writers are using Windows without any ability to install the CairoSVG dependencies at system level (https://squidfunk.github.io/mkdocs-material/plugins/requirements/image-processing/#cairo-graphics).
Bug description
Expected behavior: try/except the exception raised by cairosvg and display a error, warning or even info message to inform that social cards have been disabled, but let the build going on.
Related links
Reproduction
Sorry I cant' generate a minimal reproduction since the build is failing. Still, here comes a manual zip: material-social-card-build-crash.zip
Steps to reproduce
Install:
pip install --upgrade --force-reinstall mkdocs-material[imaging]
Given this mkdocs.yml:
site_name: My Docs
site_url: https://example.com
theme:
name: material
plugins:
- info
- social:
enabled: true
cards: true
Running build:
(.venv) PS C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash> mkdocs build
Traceback (most recent call last):
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\Scripts\mkdocs.exe\__main__.py", line 7, in <module>
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\__main__.py", line 283, in build_command
cfg = config.load_config(**kwargs)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\base.py", line 378, in load_config
errors, warnings = cfg.validate()
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\base.py", line 230, in validate
run_failed, run_warnings = self._validate()
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\base.py", line 188, in _validate
self[key] = config_option.validate(value)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\config_options.py", line 182, in validate
return self.run_validation(value)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\config_options.py", line 1064, in run_validation
self.load_plugin_with_namespace(name, cfg)
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\config_options.py", line 1102, in load_plugin_with_namespace
return (name, self.load_plugin(name, config))
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\mkdocs\config\config_options.py", line 1120, in load_plugin plugin_cls = self.installed_plugins[name].load()
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\importlib\metadata\__init__.py", line 171, in load
module = import_module(match.group('module'))
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
from cairosvg import svg2png
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\cairosvg\__init__.py", line 26, in <module>
from . import surface # noqa isort:skip
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\cairosvg\surface.py", line 9, in <module>
import cairocffi as cairo
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\cairocffi\__init__.py", line 47, in <module>
cairo = dlopen(
File "C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash\.venv\lib\site-packages\cairocffi\__init__.py", line 44, in dlopen
raise OSError(error_message) # pragma: no cover
OSError: no library called "cairo-2" was found
no library called "cairo" was found
no library called "libcairo-2" was found
cannot load library 'libcairo.so.2': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'libcairo.so.2'
cannot load library 'libcairo.2.dylib': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'libcairo.2.dylib'
cannot load library 'libcairo-2.dll': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'libcairo-2.dll'
(.venv) PS C:\Users\username\Documents\GitHub\Perso\material-social-card-build-crash>
Browser
No response
Before submitting
Context
Our Mkdocs website is collaborative and many of writers are using Windows without any ability to install the CairoSVG dependencies at system level (https://squidfunk.github.io/mkdocs-material/plugins/requirements/image-processing/#cairo-graphics).
Bug description
Expected behavior: try/except the exception raised by cairosvg and display a error, warning or even info message to inform that social cards have been disabled, but let the build going on.
Related links
Reproduction
Sorry I cant' generate a minimal reproduction since the build is failing. Still, here comes a manual zip: material-social-card-build-crash.zip
Steps to reproduce
Install:
Given this mkdocs.yml:
Running build:
Browser
No response
Before submitting