blurry-cli 0.7.2__tar.gz → 0.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/PKG-INFO +2 -1
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/__init__.py +4 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/cli.py +5 -1
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/__init__.py +1 -0
- blurry_cli-0.8.0/blurry/plugins/jinja_plugins/blurry_image_extension.py +75 -0
- blurry_cli-0.8.0/blurry/py.typed +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/pyproject.toml +5 -1
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/LICENSE +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/README.md +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/__main__.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/async_typer.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/constants.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/images.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/__init__.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/front_matter.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/renderer_functions/__init__.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/renderer_functions/render_video.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/open_graph.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/html_plugins/__init__.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/html_plugins/minify_html_plugin.py +0 -0
- {blurry_cli-0.7.2/blurry/plugins/markdown_plugins → blurry_cli-0.8.0/blurry/plugins/jinja_plugins}/__init__.py +0 -0
- /blurry_cli-0.7.2/blurry/py.typed → /blurry_cli-0.8.0/blurry/plugins/markdown_plugins/__init__.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/container_plugin.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/punctuation_plugin.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/python_code_plugin.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/schema_validation.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/settings.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/sitemap.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/types.py +0 -0
- {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: blurry-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: A Mistune-based static site generator for Python
|
|
5
5
|
Home-page: https://github.com/blurry-dev/blurry
|
|
6
6
|
License: MIT
|
|
@@ -26,6 +26,7 @@ Requires-Dist: Wand (>=0.6.6,<0.7.0)
|
|
|
26
26
|
Requires-Dist: dpath (>=2.1.6,<3.0.0)
|
|
27
27
|
Requires-Dist: ffmpeg-python (>=0.2.0,<0.3.0)
|
|
28
28
|
Requires-Dist: htmlmin2 (>=0.1.13,<0.2.0)
|
|
29
|
+
Requires-Dist: jinja2-simple-tags (>=0.6.1,<0.7.0)
|
|
29
30
|
Requires-Dist: livereload (>=2.6.3,<3.0.0)
|
|
30
31
|
Requires-Dist: mistune (>=3.0.0rc5,<4.0.0)
|
|
31
32
|
Requires-Dist: pydantic2-schemaorg (>=0.1.1,<0.2.0)
|
|
@@ -25,6 +25,7 @@ from blurry.images import generate_images_for_srcset
|
|
|
25
25
|
from blurry.markdown import convert_markdown_file_to_html
|
|
26
26
|
from blurry.open_graph import open_graph_meta_tags
|
|
27
27
|
from blurry.plugins import discovered_html_plugins
|
|
28
|
+
from blurry.plugins import discovered_jinja_extensions
|
|
28
29
|
from blurry.plugins import discovered_jinja_filter_plugins
|
|
29
30
|
from blurry.schema_validation import validate_front_matter_as_schema
|
|
30
31
|
from blurry.settings import get_build_directory
|
|
@@ -69,6 +70,9 @@ def get_jinja_env():
|
|
|
69
70
|
}
|
|
70
71
|
)
|
|
71
72
|
),
|
|
73
|
+
extensions=[
|
|
74
|
+
jinja_extension.load() for jinja_extension in discovered_jinja_extensions
|
|
75
|
+
],
|
|
72
76
|
)
|
|
73
77
|
for filter_plugin in discovered_jinja_filter_plugins:
|
|
74
78
|
try:
|
|
@@ -2,6 +2,7 @@ from rich.console import Console
|
|
|
2
2
|
from rich.table import Table
|
|
3
3
|
|
|
4
4
|
from blurry.plugins import discovered_html_plugins
|
|
5
|
+
from blurry.plugins import discovered_jinja_extensions
|
|
5
6
|
from blurry.plugins import discovered_jinja_filter_plugins
|
|
6
7
|
from blurry.plugins import discovered_markdown_plugins
|
|
7
8
|
|
|
@@ -27,7 +28,10 @@ def print_plugin_table():
|
|
|
27
28
|
plugin_table.add_row(
|
|
28
29
|
"\n".join([p.name for p in discovered_markdown_plugins]),
|
|
29
30
|
"\n".join([p.name for p in discovered_html_plugins]),
|
|
30
|
-
"\n".join(
|
|
31
|
+
"\n".join(
|
|
32
|
+
[p.name for p in discovered_jinja_filter_plugins]
|
|
33
|
+
+ [p.name for p in discovered_jinja_extensions]
|
|
34
|
+
),
|
|
31
35
|
)
|
|
32
36
|
|
|
33
37
|
console.print(plugin_table)
|
|
@@ -3,3 +3,4 @@ from importlib.metadata import entry_points
|
|
|
3
3
|
discovered_markdown_plugins = entry_points(group="blurry.markdown_plugins")
|
|
4
4
|
discovered_html_plugins = entry_points(group="blurry.html_plugins")
|
|
5
5
|
discovered_jinja_filter_plugins = entry_points(group="blurry.jinja_filter_plugins")
|
|
6
|
+
discovered_jinja_extensions = entry_points(group="blurry.jinja_extensions")
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import mimetypes
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from urllib.parse import urlparse
|
|
4
|
+
|
|
5
|
+
from jinja2_simple_tags import StandaloneTag
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from wand.exceptions import BlobError
|
|
8
|
+
from wand.image import Image
|
|
9
|
+
|
|
10
|
+
from blurry.images import add_image_width_to_path
|
|
11
|
+
from blurry.settings import get_build_directory
|
|
12
|
+
from blurry.utils import build_path_to_url
|
|
13
|
+
|
|
14
|
+
warning_console = Console(stderr=True, style="bold yellow")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BlurryImage(StandaloneTag):
|
|
18
|
+
safe_output = True
|
|
19
|
+
tags = {"blurry_image"}
|
|
20
|
+
|
|
21
|
+
def render(self, *args, **kwargs):
|
|
22
|
+
(image_url, width) = args
|
|
23
|
+
image_content_path: str = "." + urlparse(image_url).path
|
|
24
|
+
image_path = get_build_directory() / image_content_path
|
|
25
|
+
|
|
26
|
+
try:
|
|
27
|
+
with Image(filename=str(image_path)) as image:
|
|
28
|
+
image_width = image.width
|
|
29
|
+
image_height = image.height
|
|
30
|
+
image_mimetype = image.mimetype
|
|
31
|
+
except BlobError:
|
|
32
|
+
warning_console.print(f"Could not find image: {image_path}")
|
|
33
|
+
return ""
|
|
34
|
+
|
|
35
|
+
attributes = {
|
|
36
|
+
"width": image_width,
|
|
37
|
+
"height": image_height,
|
|
38
|
+
}
|
|
39
|
+
for attribute_key in kwargs:
|
|
40
|
+
if attribute_key in ["width", "height"]:
|
|
41
|
+
warning_console.print(
|
|
42
|
+
f"blurry_image: Received {attribute_key} in template {self.template} but this attribute is dynamic. Skipping."
|
|
43
|
+
)
|
|
44
|
+
continue
|
|
45
|
+
attributes[attribute_key] = kwargs.get(attribute_key)
|
|
46
|
+
|
|
47
|
+
if width:
|
|
48
|
+
image_path = add_image_width_to_path(image_path, width)
|
|
49
|
+
|
|
50
|
+
if image_mimetype in [
|
|
51
|
+
mimetypes.types_map[".jpg"],
|
|
52
|
+
mimetypes.types_map[".png"],
|
|
53
|
+
]:
|
|
54
|
+
image_path = Path(str(image_path).replace(image_path.suffix, ".avif"))
|
|
55
|
+
|
|
56
|
+
if not image_path.exists():
|
|
57
|
+
warning_console.print(
|
|
58
|
+
f"blurry_image: Could not find {image_path}. Skipping."
|
|
59
|
+
)
|
|
60
|
+
return ""
|
|
61
|
+
|
|
62
|
+
attributes["src"] = build_path_to_url(image_path)
|
|
63
|
+
|
|
64
|
+
if "alt" not in attributes:
|
|
65
|
+
warning_console.print(
|
|
66
|
+
f"blurry_image: alt attribute missing for image in {self.template}. "
|
|
67
|
+
"This can negatively affect accessibility. "
|
|
68
|
+
"Use an empty alt tag if an image is only for show."
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
attributes_str = " ".join(
|
|
72
|
+
f'{name}="{value}"' for name, value in attributes.items()
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
return f"<img {attributes_str}/>"
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "blurry-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.8.0"
|
|
4
4
|
description = "A Mistune-based static site generator for Python"
|
|
5
5
|
authors = ["John Franey <franey@duck.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -37,6 +37,7 @@ typer = "^0.6.1"
|
|
|
37
37
|
htmlmin2 = "^0.1.13"
|
|
38
38
|
pydantic2-schemaorg = "^0.1.1"
|
|
39
39
|
dpath = "^2.1.6"
|
|
40
|
+
jinja2-simple-tags = "^0.6.1"
|
|
40
41
|
|
|
41
42
|
[tool.poetry.scripts]
|
|
42
43
|
blurry = 'blurry:main'
|
|
@@ -70,3 +71,6 @@ python_code = 'blurry.plugins.markdown_plugins.python_code_plugin:python_code'
|
|
|
70
71
|
python_code_in_list = 'blurry.plugins.markdown_plugins.python_code_plugin:python_code_in_list'
|
|
71
72
|
punctuation = 'blurry.plugins.markdown_plugins.punctuation_plugin:punctuation'
|
|
72
73
|
container = 'blurry.plugins.markdown_plugins.container_plugin:container'
|
|
74
|
+
|
|
75
|
+
[tool.poetry.plugins."blurry.jinja_extensions"]
|
|
76
|
+
blurry_image = "blurry.plugins.jinja_plugins.blurry_image_extension:BlurryImage"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/blurry_cli-0.7.2/blurry/py.typed → /blurry_cli-0.8.0/blurry/plugins/markdown_plugins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|