Removed dependencies with native extensions

This commit is contained in:
squidfunk 2022-09-15 18:51:35 +02:00
parent 77655074f6
commit 5afacad66c
3 changed files with 47 additions and 15 deletions

View File

@ -18,21 +18,29 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE. # IN THE SOFTWARE.
import logging
import os import os
import re import re
import requests import requests
import sys
from cairosvg import svg2png
from collections import defaultdict from collections import defaultdict
from hashlib import md5 from hashlib import md5
from io import BytesIO from io import BytesIO
from mkdocs.config.config_options import Deprecated, Type from mkdocs.commands.build import DuplicateFilter
from mkdocs.config.config_options import Type
from mkdocs.plugins import BasePlugin from mkdocs.plugins import BasePlugin
from PIL import Image, ImageDraw, ImageFont
from shutil import copyfile from shutil import copyfile
from tempfile import TemporaryFile from tempfile import TemporaryFile
from zipfile import ZipFile from zipfile import ZipFile
try:
from cairosvg import svg2png
from PIL import Image, ImageDraw, ImageFont
dependencies = True
except ImportError:
dependencies = False
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Class # Class
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
@ -50,9 +58,6 @@ class SocialPlugin(BasePlugin):
("cards_dir", Type(str, default = "assets/images/social")), ("cards_dir", Type(str, default = "assets/images/social")),
("cards_color", Type(dict, default = {})), ("cards_color", Type(dict, default = {})),
("cards_font", Type(str, default = None)), ("cards_font", Type(str, default = None)),
# Deprecated options
("cards_directory", Deprecated(moved_to = "cards_dir")),
) )
# Retrieve configuration # Retrieve configuration
@ -61,6 +66,14 @@ class SocialPlugin(BasePlugin):
if not self.config["cards"]: if not self.config["cards"]:
return return
# Check if required dependencies are installed
if not dependencies:
log.error(
"Required dependencies of \"social\" plugin not found. "
"Install with: pip install cairosvg pillow"
)
sys.exit()
# Ensure presence of cache directory # Ensure presence of cache directory
self.cache = self.config["cache_dir"] self.cache = self.config["cache_dir"]
if not os.path.isdir(self.cache): if not os.path.isdir(self.cache):
@ -372,6 +385,10 @@ class SocialPlugin(BasePlugin):
# Data # Data
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Set up logging
log = logging.getLogger("mkdocs")
log.addFilter(DuplicateFilter())
# Color palette # Color palette
colors = dict({ colors = dict({
"red": { "fill": "#ef5552", "text": "#ffffff" }, "red": { "fill": "#ef5552", "text": "#ffffff" },

View File

@ -26,7 +26,5 @@ mkdocs-material-extensions>=1.0.3
pygments>=2.12 pygments>=2.12
pymdown-extensions>=9.4 pymdown-extensions>=9.4
# Requirements for social plugin # Requirements for plugins
cairosvg>=2.5
pillow>=8.0
requests>=2.26 requests>=2.26

View File

@ -18,21 +18,29 @@
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE. # IN THE SOFTWARE.
import logging
import os import os
import re import re
import requests import requests
import sys
from cairosvg import svg2png
from collections import defaultdict from collections import defaultdict
from hashlib import md5 from hashlib import md5
from io import BytesIO from io import BytesIO
from mkdocs.config.config_options import Deprecated, Type from mkdocs.commands.build import DuplicateFilter
from mkdocs.config.config_options import Type
from mkdocs.plugins import BasePlugin from mkdocs.plugins import BasePlugin
from PIL import Image, ImageDraw, ImageFont
from shutil import copyfile from shutil import copyfile
from tempfile import TemporaryFile from tempfile import TemporaryFile
from zipfile import ZipFile from zipfile import ZipFile
try:
from cairosvg import svg2png
from PIL import Image, ImageDraw, ImageFont
dependencies = True
except ImportError:
dependencies = False
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Class # Class
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
@ -50,9 +58,6 @@ class SocialPlugin(BasePlugin):
("cards_dir", Type(str, default = "assets/images/social")), ("cards_dir", Type(str, default = "assets/images/social")),
("cards_color", Type(dict, default = {})), ("cards_color", Type(dict, default = {})),
("cards_font", Type(str, default = None)), ("cards_font", Type(str, default = None)),
# Deprecated options
("cards_directory", Deprecated(moved_to = "cards_dir")),
) )
# Retrieve configuration # Retrieve configuration
@ -61,6 +66,14 @@ class SocialPlugin(BasePlugin):
if not self.config["cards"]: if not self.config["cards"]:
return return
# Check if required dependencies are installed
if not dependencies:
log.error(
"Required dependencies of \"social\" plugin not found. "
"Install with: pip install cairosvg pillow"
)
sys.exit()
# Ensure presence of cache directory # Ensure presence of cache directory
self.cache = self.config["cache_dir"] self.cache = self.config["cache_dir"]
if not os.path.isdir(self.cache): if not os.path.isdir(self.cache):
@ -372,6 +385,10 @@ class SocialPlugin(BasePlugin):
# Data # Data
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Set up logging
log = logging.getLogger("mkdocs")
log.addFilter(DuplicateFilter())
# Color palette # Color palette
colors = dict({ colors = dict({
"red": { "fill": "#ef5552", "text": "#ffffff" }, "red": { "fill": "#ef5552", "text": "#ffffff" },