render-engine 2025.9.1a1__tar.gz → 2025.10.1a1__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 (118) hide show
  1. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.all-contributorsrc +20 -0
  2. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/devcontainer-ci.yml +1 -1
  3. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/labeler.yml +1 -1
  4. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/lint.yml +2 -2
  5. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/publish.yml +1 -1
  6. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/scorecard.yml +1 -1
  7. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/workflows/test.yml +2 -2
  8. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/PKG-INFO +8 -6
  9. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/README.md +7 -5
  10. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/cli.md +1 -1
  11. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/collection.md +1 -0
  12. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/page.md +24 -6
  13. render_engine-2025.10.1a1/docs/docs/site_map.md +76 -0
  14. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/requirements.txt +33 -33
  15. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/_base_object.py +5 -0
  16. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/collection.py +27 -0
  17. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/page.py +34 -1
  18. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/sitemap.xml +2 -1
  19. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/sitemap_item.xml +2 -2
  20. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/site.py +54 -61
  21. render_engine-2025.10.1a1/src/render_engine/site_map.py +146 -0
  22. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine.egg-info/PKG-INFO +8 -6
  23. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine.egg-info/SOURCES.txt +3 -0
  24. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_plugins.py +21 -9
  25. render_engine-2025.10.1a1/tests/test_site_map.py +190 -0
  26. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_templates/test_base_html.py +8 -6
  27. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.devcontainer/Dockerfile +0 -0
  28. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.devcontainer/devcontainer.json +0 -0
  29. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.devcontainer/setup.sh +0 -0
  30. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/FUNDING.yml +0 -0
  31. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  32. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/ISSUE_TEMPLATE/form_issue_template.yml +0 -0
  33. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/dependabot-bot.yml +0 -0
  35. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/dependabot.yml +0 -0
  36. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/labeler.yml +0 -0
  37. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.github/release.yml +0 -0
  38. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.gitignore +0 -0
  39. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.markdownlint.json +0 -0
  40. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.pre-commit-config.yaml +0 -0
  41. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.readthedocs.yml +0 -0
  42. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/.vscode/tasks.json +0 -0
  43. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/CONTRIBUTING.md +0 -0
  44. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/SECURITY.md +0 -0
  45. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/.markdownlint.json +0 -0
  46. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/archive.md +0 -0
  47. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/create environment vs code.gif +0 -0
  48. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/create-app-help.png +0 -0
  49. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/create-codespace.gif +0 -0
  50. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/launching a dev container.gif +0 -0
  51. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/render-engine-init-help.png +0 -0
  52. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/assets/render-engine-init.png +0 -0
  53. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/contributing/CODE_OF_CONDUCT.md +0 -0
  54. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/contributing/CONTRIBUTING.md +0 -0
  55. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/contributing/environment_setup.md +0 -0
  56. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/custom_collections.md +0 -0
  57. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/feeds.md +0 -0
  58. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/building-your-site.md +0 -0
  59. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/creating-a-collection.md +0 -0
  60. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/creating-a-page.md +0 -0
  61. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/creating-your-app.md +0 -0
  62. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/getting-started.md +0 -0
  63. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/installation.md +0 -0
  64. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/getting-started/layout.md +0 -0
  65. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/index.md +0 -0
  66. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/parsers.md +0 -0
  67. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/plugins.md +0 -0
  68. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/site.md +0 -0
  69. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/templates.md +0 -0
  70. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/docs/theme_management.md +0 -0
  71. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/mkdocs.yml +0 -0
  72. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/docs/requirements.txt +0 -0
  73. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/noxfile.py +0 -0
  74. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/pyproject.toml +0 -0
  75. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/setup.cfg +0 -0
  76. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/.gitignore +0 -0
  77. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/__init__.py +0 -0
  78. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/__main__.py +0 -0
  79. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/archive.py +0 -0
  80. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/blog.py +0 -0
  81. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/engine.py +0 -0
  82. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/extras/__init__.py +0 -0
  83. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/feeds.py +0 -0
  84. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/hookspecs.py +0 -0
  85. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/links.py +0 -0
  86. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/parsers/markdown.py +0 -0
  87. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/plugins.py +0 -0
  88. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/py.typed +0 -0
  89. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/__init__.py +0 -0
  90. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/archive.html +0 -0
  91. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/base.html +0 -0
  92. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/base_collection_path.md +0 -0
  93. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/base_templates/_archive.html +0 -0
  94. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/base_templates/_base.html +0 -0
  95. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/base_templates/_page.html +0 -0
  96. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/components/footer.html +0 -0
  97. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/components/page_title.html +0 -0
  98. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/page.html +0 -0
  99. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/rss2.0.xml +0 -0
  100. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/render_engine_templates/rss2.0_items.xml +0 -0
  101. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/themes.py +0 -0
  102. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine/utils/__init__.py +0 -0
  103. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine.egg-info/dependency_links.txt +0 -0
  104. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine.egg-info/requires.txt +0 -0
  105. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/src/render_engine.egg-info/top_level.txt +0 -0
  106. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/conftest.py +0 -0
  107. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_archive.py +0 -0
  108. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_base_object.py +0 -0
  109. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_blog.py +0 -0
  110. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_collections.py +0 -0
  111. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_engine.py +0 -0
  112. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_feeds/conftest_feed.py +0 -0
  113. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_feeds/test_feeds.py +0 -0
  114. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_page.py +0 -0
  115. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_parsers_remove_2024_3_1.py +0 -0
  116. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_site.py +0 -0
  117. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/tests/test_theme_manager.py +0 -0
  118. {render_engine-2025.9.1a1 → render_engine-2025.10.1a1}/uv.lock +0 -0
@@ -175,6 +175,26 @@
175
175
  "contributions": [
176
176
  "code"
177
177
  ]
178
+ },
179
+ {
180
+ "login": "kjaymiller",
181
+ "name": "Jay Miller",
182
+ "avatar_url": "https://avatars.githubusercontent.com/u/8632637?v=4",
183
+ "profile": "https://github.com/kjaymiller",
184
+ "contributions": [
185
+ "code",
186
+ "doc",
187
+ "maintenance"
188
+ ]
189
+ },
190
+ {
191
+ "login": "bdougie",
192
+ "name": "Brian Douglas",
193
+ "avatar_url": "https://avatars.githubusercontent.com/u/5713670?v=4",
194
+ "profile": "https://b.dougie.dev/",
195
+ "contributions": [
196
+ "financial"
197
+ ]
178
198
  }
179
199
  ],
180
200
  "contributorsPerLine": 7,
@@ -19,7 +19,7 @@ jobs:
19
19
  build:
20
20
  runs-on: ubuntu-latest
21
21
  steps:
22
- - uses: actions/checkout@v4
22
+ - uses: actions/checkout@v5
23
23
  - name: Use Node.js 20.x
24
24
  uses: actions/setup-node@v4
25
25
  with:
@@ -12,5 +12,5 @@ jobs:
12
12
  labeler:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v5
16
16
  - uses: actions/labeler@v5
@@ -13,7 +13,7 @@ jobs:
13
13
  name: Format and Lint Python
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - uses: actions/checkout@v5
17
17
  with:
18
18
  fetch-depth: 0
19
19
  - name: Install Python
@@ -34,7 +34,7 @@ jobs:
34
34
  name: Lint Markdown
35
35
  runs-on: ubuntu-latest
36
36
  steps:
37
- - uses: actions/checkout@v4
37
+ - uses: actions/checkout@v5
38
38
  - name: Markdown Lint base-files
39
39
  uses: DavidAnson/markdownlint-cli2-action@v20
40
40
  with:
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: Checkout source
18
- uses: actions/checkout@v4
18
+ uses: actions/checkout@v5
19
19
 
20
20
  - name: Set up Python 3.11
21
21
  uses: actions/setup-python@v5
@@ -32,7 +32,7 @@ jobs:
32
32
 
33
33
  steps:
34
34
  - name: "Checkout code"
35
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
35
+ uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.1.1
36
36
  with:
37
37
  persist-credentials: false
38
38
 
@@ -23,7 +23,7 @@ jobs:
23
23
  python-version: ["3.10", "3.11", "3.12", "3.13"]
24
24
  fail-fast: true
25
25
  steps:
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
27
27
  - uses: actions/setup-python@v5
28
28
  with:
29
29
  python-version: ${{ matrix.python-version }}
@@ -44,7 +44,7 @@ jobs:
44
44
  fail-fast: true
45
45
  runs-on: ${{ matrix.os }}
46
46
  steps:
47
- - uses: actions/checkout@v4
47
+ - uses: actions/checkout@v5
48
48
  - uses: actions/setup-python@v5
49
49
  with:
50
50
  python-version: "3.12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: render_engine
3
- Version: 2025.9.1a1
3
+ Version: 2025.10.1a1
4
4
  Summary: A Flexible Static Site Generator for Python
5
5
  Project-URL: homepage, https://github.com/render-engine/render-engine/
6
6
  Project-URL: repository, https://github.com/render-engine/render-engine/
@@ -40,7 +40,7 @@ Requires-Dist: watchfiles; extra == "dev"
40
40
 
41
41
  <!-- markdownlint-disable -->
42
42
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
43
- [![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)
43
+ [![All Contributors](https://img.shields.io/badge/all_contributors-20-orange.svg?style=flat-square)](#contributors-)
44
44
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
45
45
  <!-- markdownlint-restore -->
46
46
 
@@ -100,22 +100,24 @@ We've compiled a set of [awesome add-ons](https://github.com/render-engine/rende
100
100
  <tr>
101
101
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Tashuuuu"><img src="https://avatars.githubusercontent.com/u/85075827?v=4?s=57" width="57px;" alt="Akriti Sengar"/><br /><sub><b>Akriti Sengar</b></sub></a><br /><a href="#tool-Tashuuuu" title="Tools">🔧</a></td>
102
102
  <td align="center" valign="top" width="14.28%"><a href="https://tonybaloney.github.io/"><img src="https://avatars.githubusercontent.com/u/1532417?v=4?s=57" width="57px;" alt="Anthony Shaw"/><br /><sub><b>Anthony Shaw</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=tonybaloney" title="Documentation">📖</a></td>
103
+ <td align="center" valign="top" width="14.28%"><a href="https://b.dougie.dev/"><img src="https://avatars.githubusercontent.com/u/5713670?v=4?s=57" width="57px;" alt="Brian Douglas"/><br /><sub><b>Brian Douglas</b></sub></a><br /><a href="#financial-bdougie" title="Financial">💵</a></td>
103
104
  <td align="center" valign="top" width="14.28%"><a href="https://brassnet.biz"><img src="https://avatars.githubusercontent.com/u/1806946?v=4?s=57" width="57px;" alt="Dan Shernicoff"/><br /><sub><b>Dan Shernicoff</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=brass75" title="Code">💻</a></td>
104
105
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/mannyanebi"><img src="https://avatars.githubusercontent.com/u/25439000?v=4?s=57" width="57px;" alt="Emmanuel Anebi"/><br /><sub><b>Emmanuel Anebi</b></sub></a><br /><a href="#plugin-mannyanebi" title="Plugin/utility libraries">🔌</a></td>
105
106
  <td align="center" valign="top" width="14.28%"><a href="http://giovannimartins.dev"><img src="https://avatars.githubusercontent.com/u/7796661?v=4?s=57" width="57px;" alt="Giovanni Martins"/><br /><sub><b>Giovanni Martins</b></sub></a><br /><a href="#infra-giovannism20" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
106
- <td align="center" valign="top" width="14.28%"><a href="https://webology.dev"><img src="https://avatars.githubusercontent.com/u/50527?v=4?s=57" width="57px;" alt="Jeff Triplett"/><br /><sub><b>Jeff Triplett</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jefftriplett" title="Documentation">📖</a> <a href="#mentoring-jefftriplett" title="Mentoring">🧑‍🏫</a></td>
107
- <td align="center" valign="top" width="14.28%"><a href="https://linktr.ee/john0isaac"><img src="https://avatars.githubusercontent.com/u/64026625?v=4?s=57" width="57px;" alt="John Aziz"/><br /><sub><b>John Aziz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=john0isaac" title="Documentation">📖</a> <a href="#maintenance-john0isaac" title="Maintenance">🚧</a> <a href="#userTesting-john0isaac" title="User Testing">📓</a></td>
107
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/kjaymiller"><img src="https://avatars.githubusercontent.com/u/8632637?v=4?s=57" width="57px;" alt="Jay Miller"/><br /><sub><b>Jay Miller</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=kjaymiller" title="Code">💻</a> <a href="https://github.com/render-engine/render-engine/commits?author=kjaymiller" title="Documentation">📖</a> <a href="#maintenance-kjaymiller" title="Maintenance">🚧</a></td>
108
108
  </tr>
109
109
  <tr>
110
+ <td align="center" valign="top" width="14.28%"><a href="https://webology.dev"><img src="https://avatars.githubusercontent.com/u/50527?v=4?s=57" width="57px;" alt="Jeff Triplett"/><br /><sub><b>Jeff Triplett</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jefftriplett" title="Documentation">📖</a> <a href="#mentoring-jefftriplett" title="Mentoring">🧑‍🏫</a></td>
111
+ <td align="center" valign="top" width="14.28%"><a href="https://linktr.ee/john0isaac"><img src="https://avatars.githubusercontent.com/u/64026625?v=4?s=57" width="57px;" alt="John Aziz"/><br /><sub><b>John Aziz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=john0isaac" title="Documentation">📖</a> <a href="#maintenance-john0isaac" title="Maintenance">🚧</a> <a href="#userTesting-john0isaac" title="User Testing">📓</a></td>
110
112
  <td align="center" valign="top" width="14.28%"><a href="https://www.jonafato.com"><img src="https://avatars.githubusercontent.com/u/392720?v=4?s=57" width="57px;" alt="Jon Banafato"/><br /><sub><b>Jon Banafato</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jonafato" title="Code">💻</a></td>
111
113
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/jlgimeno"><img src="https://avatars.githubusercontent.com/u/17421585?v=4?s=57" width="57px;" alt="Jorge L. Gimeno"/><br /><sub><b>Jorge L. Gimeno</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jlgimeno" title="Documentation">📖</a></td>
112
114
  <td align="center" valign="top" width="14.28%"><a href="http://lauralangdon.io"><img src="https://avatars.githubusercontent.com/u/48335772?v=4?s=57" width="57px;" alt="Laura Langdon"/><br /><sub><b>Laura Langdon</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=LauraLangdon" title="Documentation">📖</a></td>
113
115
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Mahhheshh"><img src="https://avatars.githubusercontent.com/u/100200105?v=4?s=57" width="57px;" alt="Mahhheshh"/><br /><sub><b>Mahhheshh</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=Mahhheshh" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=Mahhheshh" title="Code">💻</a> <a href="#maintenance-Mahhheshh" title="Maintenance">🚧</a></td>
114
116
  <td align="center" valign="top" width="14.28%"><a href="https://www.pythonbynight.com"><img src="https://avatars.githubusercontent.com/u/46942991?v=4?s=57" width="57px;" alt="Mario Munoz"/><br /><sub><b>Mario Munoz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=tataraba" title="Code">💻</a></td>
115
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/MohitKambli"><img src="https://avatars.githubusercontent.com/u/31406633?v=4?s=57" width="57px;" alt="Mohit Kambli"/><br /><sub><b>Mohit Kambli</b></sub></a><br /><a href="#infra-MohitKambli" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
116
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/OsamaRab3"><img src="https://avatars.githubusercontent.com/u/159753803?v=4?s=57" width="57px;" alt="Osama Rabea "/><br /><sub><b>Osama Rabea </b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Tests">⚠️</a></td>
117
117
  </tr>
118
118
  <tr>
119
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/MohitKambli"><img src="https://avatars.githubusercontent.com/u/31406633?v=4?s=57" width="57px;" alt="Mohit Kambli"/><br /><sub><b>Mohit Kambli</b></sub></a><br /><a href="#infra-MohitKambli" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
120
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/OsamaRab3"><img src="https://avatars.githubusercontent.com/u/159753803?v=4?s=57" width="57px;" alt="Osama Rabea "/><br /><sub><b>Osama Rabea </b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Tests">⚠️</a></td>
119
121
  <td align="center" valign="top" width="14.28%"><a href="https://www.pamelafox.org"><img src="https://avatars.githubusercontent.com/u/297042?v=4?s=57" width="57px;" alt="Pamela Fox"/><br /><sub><b>Pamela Fox</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=pamelafox" title="Documentation">📖</a></td>
120
122
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/viktoriussuwandi"><img src="https://avatars.githubusercontent.com/u/68414300?v=4?s=57" width="57px;" alt="Viktorius Suwandi"/><br /><sub><b>Viktorius Suwandi</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=viktoriussuwandi" title="Code">💻</a></td>
121
123
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/VinayakG311"><img src="https://avatars.githubusercontent.com/u/96966973?v=4?s=57" width="57px;" alt="VinayakG311"/><br /><sub><b>VinayakG311</b></sub></a><br /><a href="#plugin-VinayakG311" title="Plugin/utility libraries">🔌</a></td>
@@ -1,6 +1,6 @@
1
1
  <!-- markdownlint-disable -->
2
2
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
3
- [![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)
3
+ [![All Contributors](https://img.shields.io/badge/all_contributors-20-orange.svg?style=flat-square)](#contributors-)
4
4
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
5
5
  <!-- markdownlint-restore -->
6
6
 
@@ -60,22 +60,24 @@ We've compiled a set of [awesome add-ons](https://github.com/render-engine/rende
60
60
  <tr>
61
61
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Tashuuuu"><img src="https://avatars.githubusercontent.com/u/85075827?v=4?s=57" width="57px;" alt="Akriti Sengar"/><br /><sub><b>Akriti Sengar</b></sub></a><br /><a href="#tool-Tashuuuu" title="Tools">🔧</a></td>
62
62
  <td align="center" valign="top" width="14.28%"><a href="https://tonybaloney.github.io/"><img src="https://avatars.githubusercontent.com/u/1532417?v=4?s=57" width="57px;" alt="Anthony Shaw"/><br /><sub><b>Anthony Shaw</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=tonybaloney" title="Documentation">📖</a></td>
63
+ <td align="center" valign="top" width="14.28%"><a href="https://b.dougie.dev/"><img src="https://avatars.githubusercontent.com/u/5713670?v=4?s=57" width="57px;" alt="Brian Douglas"/><br /><sub><b>Brian Douglas</b></sub></a><br /><a href="#financial-bdougie" title="Financial">💵</a></td>
63
64
  <td align="center" valign="top" width="14.28%"><a href="https://brassnet.biz"><img src="https://avatars.githubusercontent.com/u/1806946?v=4?s=57" width="57px;" alt="Dan Shernicoff"/><br /><sub><b>Dan Shernicoff</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=brass75" title="Code">💻</a></td>
64
65
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/mannyanebi"><img src="https://avatars.githubusercontent.com/u/25439000?v=4?s=57" width="57px;" alt="Emmanuel Anebi"/><br /><sub><b>Emmanuel Anebi</b></sub></a><br /><a href="#plugin-mannyanebi" title="Plugin/utility libraries">🔌</a></td>
65
66
  <td align="center" valign="top" width="14.28%"><a href="http://giovannimartins.dev"><img src="https://avatars.githubusercontent.com/u/7796661?v=4?s=57" width="57px;" alt="Giovanni Martins"/><br /><sub><b>Giovanni Martins</b></sub></a><br /><a href="#infra-giovannism20" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
66
- <td align="center" valign="top" width="14.28%"><a href="https://webology.dev"><img src="https://avatars.githubusercontent.com/u/50527?v=4?s=57" width="57px;" alt="Jeff Triplett"/><br /><sub><b>Jeff Triplett</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jefftriplett" title="Documentation">📖</a> <a href="#mentoring-jefftriplett" title="Mentoring">🧑‍🏫</a></td>
67
- <td align="center" valign="top" width="14.28%"><a href="https://linktr.ee/john0isaac"><img src="https://avatars.githubusercontent.com/u/64026625?v=4?s=57" width="57px;" alt="John Aziz"/><br /><sub><b>John Aziz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=john0isaac" title="Documentation">📖</a> <a href="#maintenance-john0isaac" title="Maintenance">🚧</a> <a href="#userTesting-john0isaac" title="User Testing">📓</a></td>
67
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/kjaymiller"><img src="https://avatars.githubusercontent.com/u/8632637?v=4?s=57" width="57px;" alt="Jay Miller"/><br /><sub><b>Jay Miller</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=kjaymiller" title="Code">💻</a> <a href="https://github.com/render-engine/render-engine/commits?author=kjaymiller" title="Documentation">📖</a> <a href="#maintenance-kjaymiller" title="Maintenance">🚧</a></td>
68
68
  </tr>
69
69
  <tr>
70
+ <td align="center" valign="top" width="14.28%"><a href="https://webology.dev"><img src="https://avatars.githubusercontent.com/u/50527?v=4?s=57" width="57px;" alt="Jeff Triplett"/><br /><sub><b>Jeff Triplett</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jefftriplett" title="Documentation">📖</a> <a href="#mentoring-jefftriplett" title="Mentoring">🧑‍🏫</a></td>
71
+ <td align="center" valign="top" width="14.28%"><a href="https://linktr.ee/john0isaac"><img src="https://avatars.githubusercontent.com/u/64026625?v=4?s=57" width="57px;" alt="John Aziz"/><br /><sub><b>John Aziz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=john0isaac" title="Documentation">📖</a> <a href="#maintenance-john0isaac" title="Maintenance">🚧</a> <a href="#userTesting-john0isaac" title="User Testing">📓</a></td>
70
72
  <td align="center" valign="top" width="14.28%"><a href="https://www.jonafato.com"><img src="https://avatars.githubusercontent.com/u/392720?v=4?s=57" width="57px;" alt="Jon Banafato"/><br /><sub><b>Jon Banafato</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jonafato" title="Code">💻</a></td>
71
73
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/jlgimeno"><img src="https://avatars.githubusercontent.com/u/17421585?v=4?s=57" width="57px;" alt="Jorge L. Gimeno"/><br /><sub><b>Jorge L. Gimeno</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=jlgimeno" title="Documentation">📖</a></td>
72
74
  <td align="center" valign="top" width="14.28%"><a href="http://lauralangdon.io"><img src="https://avatars.githubusercontent.com/u/48335772?v=4?s=57" width="57px;" alt="Laura Langdon"/><br /><sub><b>Laura Langdon</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=LauraLangdon" title="Documentation">📖</a></td>
73
75
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/Mahhheshh"><img src="https://avatars.githubusercontent.com/u/100200105?v=4?s=57" width="57px;" alt="Mahhheshh"/><br /><sub><b>Mahhheshh</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=Mahhheshh" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=Mahhheshh" title="Code">💻</a> <a href="#maintenance-Mahhheshh" title="Maintenance">🚧</a></td>
74
76
  <td align="center" valign="top" width="14.28%"><a href="https://www.pythonbynight.com"><img src="https://avatars.githubusercontent.com/u/46942991?v=4?s=57" width="57px;" alt="Mario Munoz"/><br /><sub><b>Mario Munoz</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=tataraba" title="Code">💻</a></td>
75
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/MohitKambli"><img src="https://avatars.githubusercontent.com/u/31406633?v=4?s=57" width="57px;" alt="Mohit Kambli"/><br /><sub><b>Mohit Kambli</b></sub></a><br /><a href="#infra-MohitKambli" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
76
- <td align="center" valign="top" width="14.28%"><a href="https://github.com/OsamaRab3"><img src="https://avatars.githubusercontent.com/u/159753803?v=4?s=57" width="57px;" alt="Osama Rabea "/><br /><sub><b>Osama Rabea </b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Tests">⚠️</a></td>
77
77
  </tr>
78
78
  <tr>
79
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/MohitKambli"><img src="https://avatars.githubusercontent.com/u/31406633?v=4?s=57" width="57px;" alt="Mohit Kambli"/><br /><sub><b>Mohit Kambli</b></sub></a><br /><a href="#infra-MohitKambli" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
80
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/OsamaRab3"><img src="https://avatars.githubusercontent.com/u/159753803?v=4?s=57" width="57px;" alt="Osama Rabea "/><br /><sub><b>Osama Rabea </b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Documentation">📖</a> <a href="https://github.com/render-engine/render-engine/commits?author=OsamaRab3" title="Tests">⚠️</a></td>
79
81
  <td align="center" valign="top" width="14.28%"><a href="https://www.pamelafox.org"><img src="https://avatars.githubusercontent.com/u/297042?v=4?s=57" width="57px;" alt="Pamela Fox"/><br /><sub><b>Pamela Fox</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=pamelafox" title="Documentation">📖</a></td>
80
82
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/viktoriussuwandi"><img src="https://avatars.githubusercontent.com/u/68414300?v=4?s=57" width="57px;" alt="Viktorius Suwandi"/><br /><sub><b>Viktorius Suwandi</b></sub></a><br /><a href="https://github.com/render-engine/render-engine/commits?author=viktoriussuwandi" title="Code">💻</a></td>
81
83
  <td align="center" valign="top" width="14.28%"><a href="https://github.com/VinayakG311"><img src="https://avatars.githubusercontent.com/u/96966973?v=4?s=57" width="57px;" alt="VinayakG311"/><br /><sub><b>VinayakG311</b></sub></a><br /><a href="#plugin-VinayakG311" title="Plugin/utility libraries">🔌</a></td>
@@ -29,7 +29,7 @@ collection = "blog" # optional
29
29
  ### Example Configuration
30
30
 
31
31
  ```toml
32
- [render-engine.cli]
32
+ [tool.render-engine.cli]
33
33
  module = "my_site"
34
34
  site = "MySite"
35
35
  collection = "posts"
@@ -46,6 +46,7 @@ sort_reverse: bool = False
46
46
  title: str
47
47
  template: str | None
48
48
  archive_template str | None: The template to use for the archive pages.
49
+ skip_site_map: bool = False: Flag to indicate whether this Collection should not be included in the SiteMap.
49
50
  ```
50
51
 
51
52
  ## Attributes
@@ -24,12 +24,13 @@ This is not intended to be used directly.
24
24
 
25
25
  **Attributes:**
26
26
 
27
- | Name | Type | Description |
28
- | --- | --- | --- |
29
- | `slug` | |The slug of the page. Defaults to the `title` slugified. |
30
- | `content` | |The content to be rendered by the page |
31
- | `parser` | |The Parser used to parse the page's content. Defaults to `BasePageParser`. |
32
- | `reference` | |The attribute to use as the reference for the page in the site's route list. Defaults to `slug`. |
27
+ | Name | Type | Description |
28
+ |--------------------| --- | --- |
29
+ | `slug` | |The slug of the page. Defaults to the `title` slugified. |
30
+ | `content` | |The content to be rendered by the page |
31
+ | `parser` | |The Parser used to parse the page's content. Defaults to `BasePageParser`. |
32
+ | `reference` | |The attribute to use as the reference for the page in the site's route list. Defaults to `slug`. |
33
+ | `skip_site_map` | `False` | When set to `True` the `Page` will not be included in the generated `SiteMap` |
33
34
 
34
35
  ### Functions
35
36
 
@@ -72,6 +73,7 @@ When you create a page, you specify variables passed into rendering template.
72
73
  | `template` | `str | None` |The template used to render the page. If not provided, the `Site`'s `content`will be used. |
73
74
  | `Parser` | `type[BasePageParser]` |The parser to generate the page's `raw_content`. Defaults to `BasePageParser`. |
74
75
  | `title` | `str` |The title of the page. Defaults to the class name. |
76
+ | `skip_site_map` | `False` | When set to `True` the `Page` will not be included in the generated `SiteMap` |
75
77
 
76
78
  ## About Page Attributes
77
79
 
@@ -103,3 +105,19 @@ By default Page._content will return the result of `Page.Parser.parse(Page.conte
103
105
  ### Page Templates
104
106
 
105
107
  `Page.template` should always be a `str`. `Page.template` refers to the template name that will be passed to the engine given to `Page.render()`.
108
+
109
+ ### Accessing URLs for other pages in the site from within the page content
110
+
111
+ In order to allow lookup of URLs for other pages within a Site the `content` of a page may be
112
+ a template. If the `content` matches the pattern `{{.*?}}` we will render the `content` as a
113
+ template prior to rendering the page itself.
114
+
115
+ Example:
116
+
117
+ ```html
118
+ {{ site_map.find('my_page').url_for }}
119
+ ```
120
+
121
+ will render to the URL for `my_page` in the `content` and then in the generated page.
122
+
123
+ For more details on using the `SiteMap` please check the [SiteMap documentation](site_map.md).
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "SiteMap Objects"
3
+ description: "Overview of the SiteMap"
4
+ date: September 27, 2025
5
+ tags: ["site-map"]
6
+ ---
7
+ Prior to rendering the `Site` Render Engine will create a `SiteMap` containing searchable information
8
+ about all of the `Collection` and `Page` objects it has.
9
+
10
+ ## Searching the `SiteMap`
11
+
12
+ To search the `SiteMap` use the `find` method.
13
+
14
+ ```python
15
+ def find(
16
+ self,
17
+ value: str,
18
+ attr: str = "slug",
19
+ collection: str = None,
20
+ full_search: bool = False,
21
+ ) -> SiteMapEntry | None:
22
+ ```
23
+
24
+ ### Parameters
25
+
26
+ - `value`: The value to search for
27
+ - `attr`: Optional attribute to search by. Options are `slug`, `title`, `path_name`. Defaults to `slug`.
28
+ - `collection`: Limit the search to a single `Collection`. Defaults to `None`.
29
+ - `full_search`: Search all `Page` and `Collection` objects. Defaults to `False`.
30
+
31
+ Notes:
32
+
33
+ 1. If `collection` is set the search will be limited to that `Collection` object regardless of whether
34
+ `full_search` is set.
35
+ 2. If `full_search` is set it will return the first match found. If you have 3 pages with the same `slug`,
36
+ 1 not in a `Collection` and 2 others in different `Collection` objects, the first one defined will be the
37
+ one found.
38
+
39
+ ## Generating an HTML site map
40
+
41
+ The `SiteMap` object has an `html` property that will return an HTML sitemap with _absolute_ URLs with the
42
+ `Site`'s `SITE_URL`.
43
+
44
+ As a convenience, Render Engine will generate a site map page if the `Site` property of `render_html_site_map`
45
+ is `True` (it defaults to `False`.) Please note that this will not be templated. Should you wish the generated
46
+ site map to be on a template you can add the following to your app:
47
+
48
+ ```python
49
+ @app.page
50
+ class SiteMapPage(Page):
51
+ template = "site_map_template.html"
52
+ content = "{{ site_map.html }}"
53
+ skip_site_map = True
54
+ ```
55
+
56
+ Please note the `skip_site_map = True` to avoid having a self-referential link to the site map.
57
+
58
+ ## Generating an XML site map
59
+
60
+ To have your site generate an XML site map set the `render_xml_site_map` property of your `Site` object
61
+ to `True` (defaults to `False`.) This will create the `site_map.xml` file in the root output directory
62
+ of your site.
63
+
64
+ ## The `SiteMapEntry` object
65
+
66
+ The `SiteMap` is a collection of `SiteMapEntry` objects. Each `SiteMapEntry` has the following attributes
67
+ and properties:
68
+
69
+ ### Attributes and Properties
70
+
71
+ - `slug` - The `slug` for the referenced `Page` or `Collection`.
72
+ - `title` - The `title` for the referenced `Page` or `Collection`.
73
+ - `path_name` - The `path_name` for the referenced `Page` or `Collection`.
74
+ - `entries` - A list of `SiteMapEntry` objects representing the `Page` objects in a given `Collection`.
75
+ for a `Page` this will be an empty `list`.
76
+ - `url_for` - This property will provide the _relative_ URL for the given entry.
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # pip-compile --extra=dev --output-file=requirements.txt pyproject.toml
6
6
  #
7
- anyio==4.9.0
7
+ anyio==4.10.0
8
8
  # via
9
9
  # httpx
10
10
  # watchfiles
@@ -12,11 +12,11 @@ arrow==1.3.0
12
12
  # via cookiecutter
13
13
  babel==2.17.0
14
14
  # via mkdocs-material
15
- backrefs==5.8
15
+ backrefs==6.0.1
16
16
  # via mkdocs-material
17
17
  binaryornot==0.4.4
18
18
  # via cookiecutter
19
- certifi==2025.4.26
19
+ certifi==2025.8.3
20
20
  # via
21
21
  # httpcore
22
22
  # httpx
@@ -25,7 +25,7 @@ cfgv==3.4.0
25
25
  # via pre-commit
26
26
  chardet==5.2.0
27
27
  # via binaryornot
28
- charset-normalizer==3.4.2
28
+ charset-normalizer==3.4.3
29
29
  # via requests
30
30
  click==8.2.1
31
31
  # via
@@ -38,21 +38,21 @@ colorama==0.4.6
38
38
  # mkdocs-material
39
39
  cookiecutter==2.6.0
40
40
  # via render_engine (pyproject.toml)
41
- coverage[toml]==7.8.2
41
+ coverage[toml]==7.10.6
42
42
  # via pytest-cov
43
- distlib==0.3.9
43
+ distlib==0.4.0
44
44
  # via virtualenv
45
45
  ephemeral-port-reserve==1.1.4
46
46
  # via render_engine (pyproject.toml)
47
- filelock==3.18.0
47
+ filelock==3.19.1
48
48
  # via virtualenv
49
49
  ghp-import==2.1.0
50
50
  # via mkdocs
51
51
  gitdb==4.0.12
52
52
  # via gitpython
53
- gitpython==3.1.44
53
+ gitpython==3.1.45
54
54
  # via render_engine (pyproject.toml)
55
- griffe==1.7.3
55
+ griffe==1.13.0
56
56
  # via mkdocstrings-python
57
57
  h11==0.16.0
58
58
  # via httpcore
@@ -60,7 +60,7 @@ httpcore==1.0.9
60
60
  # via httpx
61
61
  httpx==0.28.1
62
62
  # via render_engine (pyproject.toml)
63
- identify==2.6.12
63
+ identify==2.6.13
64
64
  # via pre-commit
65
65
  idna==3.10
66
66
  # via
@@ -76,16 +76,16 @@ jinja2==3.1.6
76
76
  # mkdocs-material
77
77
  # mkdocstrings
78
78
  # render_engine (pyproject.toml)
79
- markdown==3.8
79
+ markdown==3.8.2
80
80
  # via
81
81
  # mkdocs
82
82
  # mkdocs-autorefs
83
83
  # mkdocs-material
84
84
  # mkdocstrings
85
85
  # pymdown-extensions
86
- markdown-it-py==3.0.0
86
+ markdown-it-py==4.0.0
87
87
  # via rich
88
- markdown2==2.5.3
88
+ markdown2==2.5.4
89
89
  # via
90
90
  # render-engine-markdown
91
91
  # render_engine (pyproject.toml)
@@ -107,25 +107,25 @@ mkdocs==1.6.1
107
107
  # mkdocs-material
108
108
  # mkdocstrings
109
109
  # render_engine (pyproject.toml)
110
- mkdocs-autorefs==1.4.2
110
+ mkdocs-autorefs==1.4.3
111
111
  # via
112
112
  # mkdocstrings
113
113
  # mkdocstrings-python
114
114
  mkdocs-get-deps==0.2.0
115
115
  # via mkdocs
116
- mkdocs-material==9.6.14
116
+ mkdocs-material==9.6.18
117
117
  # via render_engine (pyproject.toml)
118
118
  mkdocs-material-extensions==1.3.1
119
119
  # via mkdocs-material
120
- mkdocstrings[python]==0.29.1
120
+ mkdocstrings[python]==0.30.0
121
121
  # via
122
122
  # mkdocstrings-python
123
123
  # render_engine (pyproject.toml)
124
- mkdocstrings-python==1.16.11
124
+ mkdocstrings-python==1.18.2
125
125
  # via mkdocstrings
126
- more-itertools==10.7.0
126
+ more-itertools==10.8.0
127
127
  # via render_engine (pyproject.toml)
128
- mypy==1.16.0
128
+ mypy==1.17.1
129
129
  # via render_engine (pyproject.toml)
130
130
  mypy-extensions==1.1.0
131
131
  # via mypy
@@ -139,7 +139,7 @@ paginate==0.5.7
139
139
  # via mkdocs-material
140
140
  pathspec==0.12.1
141
141
  # via mkdocs
142
- platformdirs==4.3.8
142
+ platformdirs==4.4.0
143
143
  # via
144
144
  # mkdocs-get-deps
145
145
  # virtualenv
@@ -147,23 +147,23 @@ pluggy==1.6.0
147
147
  # via
148
148
  # pytest
149
149
  # render_engine (pyproject.toml)
150
- pre-commit==4.2.0
150
+ pre-commit==4.3.0
151
151
  # via render_engine (pyproject.toml)
152
- pygments==2.19.1
152
+ pygments==2.19.2
153
153
  # via
154
154
  # mkdocs-material
155
155
  # rich
156
- pymdown-extensions==10.15
156
+ pymdown-extensions==10.16.1
157
157
  # via
158
158
  # mkdocs-material
159
159
  # mkdocstrings
160
160
  # render_engine (pyproject.toml)
161
- pytest==8.3.5
161
+ pytest==8.4.2
162
162
  # via
163
163
  # pytest-cov
164
164
  # pytest-mock
165
165
  # render_engine (pyproject.toml)
166
- pytest-cov==6.1.1
166
+ pytest-cov==6.2.1
167
167
  # via render_engine (pyproject.toml)
168
168
  pytest-mock==3.14.1
169
169
  # via render_engine (pyproject.toml)
@@ -197,16 +197,16 @@ render-engine-parser==2024.9.0
197
197
  # via
198
198
  # render-engine-markdown
199
199
  # render_engine (pyproject.toml)
200
- requests==2.32.4
200
+ requests==2.32.5
201
201
  # via
202
202
  # cookiecutter
203
203
  # mkdocs-material
204
- rich==14.0.0
204
+ rich==14.1.0
205
205
  # via
206
206
  # cookiecutter
207
207
  # render_engine (pyproject.toml)
208
208
  # typer
209
- ruff==0.11.12
209
+ ruff==0.12.11
210
210
  # via render_engine (pyproject.toml)
211
211
  shellingham==1.5.4
212
212
  # via typer
@@ -219,11 +219,11 @@ sniffio==1.3.1
219
219
  text-unidecode==1.3
220
220
  # via python-slugify
221
221
  toml==0.10.2
222
- typer==0.16.0
222
+ typer==0.17.3
223
223
  # via render_engine (pyproject.toml)
224
- types-python-dateutil==2.9.0.20250516
224
+ types-python-dateutil==2.9.0.20250822
225
225
  # via arrow
226
- typing-extensions==4.13.2
226
+ typing-extensions==4.15.0
227
227
  # via
228
228
  # anyio
229
229
  # mypy
@@ -232,9 +232,9 @@ tzdata==2025.2
232
232
  # via render_engine (pyproject.toml)
233
233
  urllib3==2.5.0
234
234
  # via requests
235
- virtualenv==20.31.2
235
+ virtualenv==20.34.0
236
236
  # via pre-commit
237
237
  watchdog==6.0.0
238
238
  # via mkdocs
239
- watchfiles==1.0.5
239
+ watchfiles==1.1.0
240
240
  # via render_engine (pyproject.toml)
@@ -26,6 +26,7 @@ class BaseObject:
26
26
  template_vars: dict
27
27
  plugins: list[Callable] | None
28
28
  plugin_settings: dict = {"plugins": defaultdict(dict)}
29
+ skip_site_map: bool = False
29
30
 
30
31
  @property
31
32
  def _title(self) -> str:
@@ -126,3 +127,7 @@ class BaseObject:
126
127
  base_dict[key] = value
127
128
 
128
129
  return base_dict
130
+
131
+ def render(self, *args, **kwargs):
132
+ """Render method. Implemented in child objects"""
133
+ raise NotImplementedError(f'{self.__class__.__name__} does not implement the "render" method.')
@@ -252,6 +252,33 @@ class Collection(BaseObject):
252
252
  return
253
253
  method(collection=self, site=site, settings=self.plugin_manager.plugin_settings)
254
254
 
255
+ def render(self) -> None:
256
+ """Iterate through Pages and Check for Collections and Feeds"""
257
+
258
+ for entry in self:
259
+ entry.plugin_manager = copy.deepcopy(self.plugin_manager)
260
+
261
+ for route in entry.routes:
262
+ entry.site = self.site
263
+ entry.render(route, self.site.theme_manager)
264
+
265
+ if getattr(self, "has_archive", False):
266
+ for archive in self.archives:
267
+ archive.site = self.site
268
+ logging.debug("Adding Archive: %s", archive.__class__.__name__)
269
+
270
+ for _ in self.routes:
271
+ archive.render(self.routes[0], self.site.theme_manager)
272
+
273
+ if archive.is_index:
274
+ archive.slug = "index"
275
+ archive.render(self.routes[0], self.site.theme_manager)
276
+ feed: RSSFeed
277
+ if hasattr(self, "Feed"):
278
+ feed = self.feed
279
+ feed.site = self.site
280
+ feed.render(route="./", theme_manager=self.site.theme_manager)
281
+
255
282
 
256
283
  def render_archives(archive, **kwargs) -> list[Archive]:
257
284
  return [archive.render(pages=archive.pages, **kwargs) for archive in archive]