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.
Files changed (30) hide show
  1. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/PKG-INFO +2 -1
  2. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/__init__.py +4 -0
  3. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/cli.py +5 -1
  4. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/__init__.py +1 -0
  5. blurry_cli-0.8.0/blurry/plugins/jinja_plugins/blurry_image_extension.py +75 -0
  6. blurry_cli-0.8.0/blurry/py.typed +0 -0
  7. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/pyproject.toml +5 -1
  8. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/LICENSE +0 -0
  9. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/README.md +0 -0
  10. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/__main__.py +0 -0
  11. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/async_typer.py +0 -0
  12. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/constants.py +0 -0
  13. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/images.py +0 -0
  14. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/__init__.py +0 -0
  15. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/front_matter.py +0 -0
  16. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/renderer_functions/__init__.py +0 -0
  17. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/markdown/renderer_functions/render_video.py +0 -0
  18. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/open_graph.py +0 -0
  19. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/html_plugins/__init__.py +0 -0
  20. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/html_plugins/minify_html_plugin.py +0 -0
  21. {blurry_cli-0.7.2/blurry/plugins/markdown_plugins → blurry_cli-0.8.0/blurry/plugins/jinja_plugins}/__init__.py +0 -0
  22. /blurry_cli-0.7.2/blurry/py.typed → /blurry_cli-0.8.0/blurry/plugins/markdown_plugins/__init__.py +0 -0
  23. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/container_plugin.py +0 -0
  24. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/punctuation_plugin.py +0 -0
  25. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/plugins/markdown_plugins/python_code_plugin.py +0 -0
  26. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/schema_validation.py +0 -0
  27. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/settings.py +0 -0
  28. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/sitemap.py +0 -0
  29. {blurry_cli-0.7.2 → blurry_cli-0.8.0}/blurry/types.py +0 -0
  30. {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.7.2
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([p.name for p in discovered_jinja_filter_plugins]),
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.7.2"
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