webifier 1.0.2__tar.gz → 1.0.4__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 (26) hide show
  1. {webifier-1.0.2 → webifier-1.0.4}/PKG-INFO +1 -1
  2. {webifier-1.0.2 → webifier-1.0.4}/action.yml +6 -1
  3. {webifier-1.0.2 → webifier-1.0.4}/webifier/_version.py +2 -2
  4. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/html.py +25 -6
  5. {webifier-1.0.2 → webifier-1.0.4}/.github/workflows/python-publish.yml +0 -0
  6. {webifier-1.0.2 → webifier-1.0.4}/.gitignore +0 -0
  7. {webifier-1.0.2 → webifier-1.0.4}/LICENSE +0 -0
  8. {webifier-1.0.2 → webifier-1.0.4}/README.md +0 -0
  9. {webifier-1.0.2 → webifier-1.0.4}/pyproject.toml +0 -0
  10. {webifier-1.0.2 → webifier-1.0.4}/tests/test_extensions.py +0 -0
  11. {webifier-1.0.2 → webifier-1.0.4}/webifier/__init__.py +0 -0
  12. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/__init__.py +0 -0
  13. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/base.py +0 -0
  14. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/builder.py +0 -0
  15. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/extensions.py +0 -0
  16. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/frontmatter.py +0 -0
  17. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/loader.py +0 -0
  18. {webifier-1.0.2 → webifier-1.0.4}/webifier/core/markdown.py +0 -0
  19. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/__init__.py +0 -0
  20. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/cli.py +0 -0
  21. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/io.py +0 -0
  22. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/resolvers/__init__.py +0 -0
  23. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/resolvers/base.py +0 -0
  24. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/resolvers/builtins.py +0 -0
  25. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/resolvers/engine.py +0 -0
  26. {webifier-1.0.2 → webifier-1.0.4}/webifier/interface/resolvers/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webifier
3
- Version: 1.0.2
3
+ Version: 1.0.4
4
4
  Summary: Cook up a fully functional static website from YAML and Markdown.
5
5
  Project-URL: Homepage, https://github.com/webifier/build
6
6
  Project-URL: Repository, https://github.com/webifier/build
@@ -32,12 +32,17 @@ inputs:
32
32
  Where should the webified results end up (default: "./webified/")
33
33
  default: "./webified/"
34
34
  required: false
35
+ python-version:
36
+ description: >
37
+ Python version used to install and run Webifier.
38
+ default: "3.13"
39
+ required: false
35
40
  runs:
36
41
  using: "composite"
37
42
  steps:
38
43
  - uses: actions/setup-python@v5
39
44
  with:
40
- python-version: "3.12"
45
+ python-version: ${{ inputs.python-version }}
41
46
  - run: python -m pip install --upgrade pip
42
47
  shell: bash
43
48
  - run: python -m pip install --upgrade webifier webifier-extensions
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.2'
22
- __version_tuple__ = version_tuple = (1, 0, 2)
21
+ __version__ = version = '1.0.4'
22
+ __version_tuple__ = version_tuple = (1, 0, 4)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import os
3
4
  import re
5
+ from urllib.parse import unquote, urlsplit
4
6
 
5
7
  from bs4 import BeautifulSoup
6
8
 
@@ -35,12 +37,29 @@ def process_html(
35
37
  # Resolve src attributes on media tags
36
38
  for tag in ["img", "audio", "embed", "iframe", "script", "source", "track", "video"]:
37
39
  for src_tag in soup.find_all(tag, src=True):
38
- new_src = builder.files.copy_file(
39
- src_tag["src"],
40
- src_tag["src"],
41
- src_dir=assets_src_dir,
42
- target_dir=assets_target_dir,
43
- )
40
+ src = src_tag["src"]
41
+ local_src = src
42
+ if "://" not in src and not src.startswith("data:"):
43
+ local_src = unquote(urlsplit(src).path)
44
+ try:
45
+ new_src = builder.files.copy_file(
46
+ local_src,
47
+ local_src,
48
+ src_dir=assets_src_dir,
49
+ target_dir=assets_target_dir,
50
+ )
51
+ except FileNotFoundError:
52
+ fallback_src = os.path.join("files", local_src)
53
+ if not assets_src_dir or local_src.startswith("files/") or not os.path.isfile(
54
+ os.path.join(assets_src_dir, fallback_src)
55
+ ):
56
+ raise
57
+ new_src = builder.files.copy_file(
58
+ fallback_src,
59
+ fallback_src,
60
+ src_dir=assets_src_dir,
61
+ target_dir=assets_target_dir,
62
+ )
44
63
  if new_src:
45
64
  src_tag["src"] = new_src
46
65
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes