Skip to content

Commit 5afacad

Browse files
committed
Removed dependencies with native extensions
1 parent 7765507 commit 5afacad

File tree

3 files changed

+47
-15
lines changed

3 files changed

+47
-15
lines changed

material/plugins/social/plugin.py

+23-6
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,29 @@
1818
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1919
# IN THE SOFTWARE.
2020

21+
import logging
2122
import os
2223
import re
2324
import requests
25+
import sys
2426

25-
from cairosvg import svg2png
2627
from collections import defaultdict
2728
from hashlib import md5
2829
from io import BytesIO
29-
from mkdocs.config.config_options import Deprecated, Type
30+
from mkdocs.commands.build import DuplicateFilter
31+
from mkdocs.config.config_options import Type
3032
from mkdocs.plugins import BasePlugin
31-
from PIL import Image, ImageDraw, ImageFont
3233
from shutil import copyfile
3334
from tempfile import TemporaryFile
3435
from zipfile import ZipFile
3536

37+
try:
38+
from cairosvg import svg2png
39+
from PIL import Image, ImageDraw, ImageFont
40+
dependencies = True
41+
except ImportError:
42+
dependencies = False
43+
3644
# -----------------------------------------------------------------------------
3745
# Class
3846
# -----------------------------------------------------------------------------
@@ -50,9 +58,6 @@ class SocialPlugin(BasePlugin):
5058
("cards_dir", Type(str, default = "assets/images/social")),
5159
("cards_color", Type(dict, default = {})),
5260
("cards_font", Type(str, default = None)),
53-
54-
# Deprecated options
55-
("cards_directory", Deprecated(moved_to = "cards_dir")),
5661
)
5762

5863
# Retrieve configuration
@@ -61,6 +66,14 @@ def on_config(self, config):
6166
if not self.config["cards"]:
6267
return
6368

69+
# Check if required dependencies are installed
70+
if not dependencies:
71+
log.error(
72+
"Required dependencies of \"social\" plugin not found. "
73+
"Install with: pip install cairosvg pillow"
74+
)
75+
sys.exit()
76+
6477
# Ensure presence of cache directory
6578
self.cache = self.config["cache_dir"]
6679
if not os.path.isdir(self.cache):
@@ -372,6 +385,10 @@ def _load_font_from_google(self, name):
372385
# Data
373386
# -----------------------------------------------------------------------------
374387

388+
# Set up logging
389+
log = logging.getLogger("mkdocs")
390+
log.addFilter(DuplicateFilter())
391+
375392
# Color palette
376393
colors = dict({
377394
"red": { "fill": "#ef5552", "text": "#ffffff" },

requirements.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,5 @@ mkdocs-material-extensions>=1.0.3
2626
pygments>=2.12
2727
pymdown-extensions>=9.4
2828

29-
# Requirements for social plugin
30-
cairosvg>=2.5
31-
pillow>=8.0
29+
# Requirements for plugins
3230
requests>=2.26

src/plugins/social/plugin.py

+23-6
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,29 @@
1818
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1919
# IN THE SOFTWARE.
2020

21+
import logging
2122
import os
2223
import re
2324
import requests
25+
import sys
2426

25-
from cairosvg import svg2png
2627
from collections import defaultdict
2728
from hashlib import md5
2829
from io import BytesIO
29-
from mkdocs.config.config_options import Deprecated, Type
30+
from mkdocs.commands.build import DuplicateFilter
31+
from mkdocs.config.config_options import Type
3032
from mkdocs.plugins import BasePlugin
31-
from PIL import Image, ImageDraw, ImageFont
3233
from shutil import copyfile
3334
from tempfile import TemporaryFile
3435
from zipfile import ZipFile
3536

37+
try:
38+
from cairosvg import svg2png
39+
from PIL import Image, ImageDraw, ImageFont
40+
dependencies = True
41+
except ImportError:
42+
dependencies = False
43+
3644
# -----------------------------------------------------------------------------
3745
# Class
3846
# -----------------------------------------------------------------------------
@@ -50,9 +58,6 @@ class SocialPlugin(BasePlugin):
5058
("cards_dir", Type(str, default = "assets/images/social")),
5159
("cards_color", Type(dict, default = {})),
5260
("cards_font", Type(str, default = None)),
53-
54-
# Deprecated options
55-
("cards_directory", Deprecated(moved_to = "cards_dir")),
5661
)
5762

5863
# Retrieve configuration
@@ -61,6 +66,14 @@ def on_config(self, config):
6166
if not self.config["cards"]:
6267
return
6368

69+
# Check if required dependencies are installed
70+
if not dependencies:
71+
log.error(
72+
"Required dependencies of \"social\" plugin not found. "
73+
"Install with: pip install cairosvg pillow"
74+
)
75+
sys.exit()
76+
6477
# Ensure presence of cache directory
6578
self.cache = self.config["cache_dir"]
6679
if not os.path.isdir(self.cache):
@@ -372,6 +385,10 @@ def _load_font_from_google(self, name):
372385
# Data
373386
# -----------------------------------------------------------------------------
374387

388+
# Set up logging
389+
log = logging.getLogger("mkdocs")
390+
log.addFilter(DuplicateFilter())
391+
375392
# Color palette
376393
colors = dict({
377394
"red": { "fill": "#ef5552", "text": "#ffffff" },

0 commit comments

Comments
 (0)