sigal 2.3__tar.gz → 2.5__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 (278) hide show
  1. sigal-2.5/.github/dependabot.yml +15 -0
  2. {sigal-2.3 → sigal-2.5}/.github/workflows/publish.yml +7 -7
  3. {sigal-2.3 → sigal-2.5}/.github/workflows/python-tests.yml +6 -5
  4. {sigal-2.3 → sigal-2.5}/.gitignore +2 -2
  5. sigal-2.5/.pre-commit-config.yaml +19 -0
  6. sigal-2.5/.readthedocs.yml +20 -0
  7. {sigal-2.3 → sigal-2.5}/AUTHORS +13 -2
  8. {sigal-2.3 → sigal-2.5}/LICENSE +1 -1
  9. {sigal-2.3 → sigal-2.5}/PKG-INFO +28 -18
  10. {sigal-2.3 → sigal-2.5}/README.rst +4 -5
  11. {sigal-2.3 → sigal-2.5}/docs/album_information.rst +2 -2
  12. {sigal-2.3 → sigal-2.5}/docs/changelog.py +13 -13
  13. {sigal-2.3 → sigal-2.5}/docs/changelog.rst +47 -0
  14. sigal-2.5/docs/conf.py +100 -0
  15. {sigal-2.3 → sigal-2.5}/docs/configuration.rst +1 -1
  16. {sigal-2.3 → sigal-2.5}/docs/faq.rst +0 -2
  17. {sigal-2.3 → sigal-2.5}/docs/getting_started.rst +16 -2
  18. {sigal-2.3 → sigal-2.5}/docs/installation.rst +3 -1
  19. {sigal-2.3 → sigal-2.5}/docs/license.rst +5 -2
  20. {sigal-2.3 → sigal-2.5}/docs/plugins.rst +4 -6
  21. {sigal-2.3 → sigal-2.5}/docs/themes.rst +1 -1
  22. sigal-2.5/pyproject.toml +93 -0
  23. sigal-2.5/setup.cfg +4 -0
  24. sigal-2.5/src/sigal/__init__.py +28 -0
  25. sigal-2.3/sigal/__init__.py → sigal-2.5/src/sigal/__main__.py +95 -94
  26. {sigal-2.3 → sigal-2.5/src}/sigal/gallery.py +188 -158
  27. {sigal-2.3 → sigal-2.5/src}/sigal/image.py +113 -115
  28. {sigal-2.3 → sigal-2.5/src}/sigal/log.py +11 -11
  29. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/adjust.py +4 -4
  30. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/compress_assets.py +26 -25
  31. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/copyright.py +8 -8
  32. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/encrypt.py +7 -7
  33. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/endec.py +2 -2
  34. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/extended_caching.py +26 -22
  35. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/feeds.py +19 -21
  36. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/media_page.py +1 -1
  37. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/nomedia.py +1 -1
  38. sigal-2.5/src/sigal/plugins/nonmedia_files.py +160 -0
  39. sigal-2.5/src/sigal/plugins/titleregexp.py +98 -0
  40. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/watermark.py +13 -13
  41. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/zip_gallery.py +17 -8
  42. {sigal-2.3 → sigal-2.5/src}/sigal/settings.py +92 -78
  43. sigal-2.5/src/sigal/signals.py +13 -0
  44. {sigal-2.3 → sigal-2.5/src}/sigal/templates/sigal.conf.py +18 -14
  45. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/decrypt.html +1 -0
  46. sigal-2.5/src/sigal/themes/default/templates/description.html +29 -0
  47. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/footer.html +3 -0
  48. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/templates/album_items.html +4 -23
  49. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-dynamic-caption-plugin.esm.js +414 -0
  50. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-dynamic-caption-plugin.esm.min.js +5 -0
  51. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-fullscreen.esm.js +129 -0
  52. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-fullscreen.esm.min.js +8 -0
  53. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.js +1960 -0
  54. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.js.map +1 -0
  55. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.min.js +5 -0
  56. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-video-plugin.esm.js +257 -0
  57. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-video-plugin.esm.min.js +1 -0
  58. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.css +420 -0
  59. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.js +7081 -0
  60. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.js.map +1 -0
  61. sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.min.js +5 -0
  62. {sigal-2.3 → sigal-2.5/src}/sigal/themes/photoswipe/static/styles.css +53 -0
  63. sigal-2.5/src/sigal/themes/photoswipe/templates/album.html +93 -0
  64. {sigal-2.3 → sigal-2.5/src}/sigal/utils.py +80 -12
  65. sigal-2.5/src/sigal/version.py +21 -0
  66. {sigal-2.3 → sigal-2.5/src}/sigal/video.py +43 -24
  67. {sigal-2.3 → sigal-2.5/src}/sigal/writer.py +26 -8
  68. {sigal-2.3 → sigal-2.5/src}/sigal.egg-info/PKG-INFO +28 -18
  69. sigal-2.5/src/sigal.egg-info/SOURCES.txt +237 -0
  70. sigal-2.5/src/sigal.egg-info/entry_points.txt +2 -0
  71. {sigal-2.3 → sigal-2.5/src}/sigal.egg-info/requires.txt +4 -4
  72. {sigal-2.3 → sigal-2.5}/tests/conftest.py +4 -4
  73. sigal-2.5/tests/sample/pictures/dir1/test1/11.md +10 -0
  74. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/index.md +2 -0
  75. sigal-2.5/tests/sample/pictures/dir1/test1/outdoor.heic +0 -0
  76. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/21.md +1 -1
  77. sigal-2.5/tests/sample/pictures/dir1/test2/index.md +2 -0
  78. sigal-2.5/tests/sample/pictures/video/example video.ogv +0 -0
  79. {sigal-2.3 → sigal-2.5}/tests/sample/sigal.conf.py +5 -3
  80. {sigal-2.3 → sigal-2.5}/tests/test_cli.py +38 -23
  81. {sigal-2.3 → sigal-2.5}/tests/test_compress_assets_plugin.py +16 -16
  82. {sigal-2.3 → sigal-2.5}/tests/test_encrypt.py +36 -17
  83. {sigal-2.3 → sigal-2.5}/tests/test_extended_caching.py +12 -12
  84. sigal-2.5/tests/test_gallery.py +432 -0
  85. {sigal-2.3 → sigal-2.5}/tests/test_image.py +108 -107
  86. sigal-2.5/tests/test_plugins.py +65 -0
  87. sigal-2.5/tests/test_settings.py +54 -0
  88. sigal-2.5/tests/test_utils.py +131 -0
  89. {sigal-2.3 → sigal-2.5}/tests/test_video.py +30 -47
  90. sigal-2.5/tests/test_zip.py +69 -0
  91. sigal-2.5/tox.ini +43 -0
  92. sigal-2.3/.pre-commit-config.yaml +0 -23
  93. sigal-2.3/.readthedocs.yml +0 -12
  94. sigal-2.3/MANIFEST.in +0 -15
  95. sigal-2.3/docs/conf.py +0 -168
  96. sigal-2.3/pyproject.toml +0 -12
  97. sigal-2.3/setup.cfg +0 -79
  98. sigal-2.3/setup.py +0 -3
  99. sigal-2.3/sigal/plugins/nonmedia_files.py +0 -194
  100. sigal-2.3/sigal/plugins/upload_s3.py +0 -106
  101. sigal-2.3/sigal/signals.py +0 -13
  102. sigal-2.3/sigal/themes/photoswipe/static/app.js +0 -214
  103. sigal-2.3/sigal/themes/photoswipe/static/default-skin/default-skin.css +0 -485
  104. sigal-2.3/sigal/themes/photoswipe/static/default-skin/default-skin.css.map +0 -10
  105. sigal-2.3/sigal/themes/photoswipe/static/default-skin/default-skin.png +0 -0
  106. sigal-2.3/sigal/themes/photoswipe/static/default-skin/default-skin.svg +0 -36
  107. sigal-2.3/sigal/themes/photoswipe/static/default-skin/preloader.gif +0 -0
  108. sigal-2.3/sigal/themes/photoswipe/static/echo/blank.gif +0 -0
  109. sigal-2.3/sigal/themes/photoswipe/static/echo/echo.js +0 -135
  110. sigal-2.3/sigal/themes/photoswipe/static/echo/echo.min.js +0 -2
  111. sigal-2.3/sigal/themes/photoswipe/static/photoswipe-ui-default.js +0 -871
  112. sigal-2.3/sigal/themes/photoswipe/static/photoswipe-ui-default.min.js +0 -1
  113. sigal-2.3/sigal/themes/photoswipe/static/photoswipe.css +0 -175
  114. sigal-2.3/sigal/themes/photoswipe/static/photoswipe.css.map +0 -10
  115. sigal-2.3/sigal/themes/photoswipe/static/photoswipe.js +0 -3592
  116. sigal-2.3/sigal/themes/photoswipe/static/photoswipe.min.js +0 -1
  117. sigal-2.3/sigal/themes/photoswipe/templates/album.html +0 -98
  118. sigal-2.3/sigal/version.py +0 -5
  119. sigal-2.3/sigal.egg-info/SOURCES.txt +0 -239
  120. sigal-2.3/sigal.egg-info/entry_points.txt +0 -2
  121. sigal-2.3/sigal.egg-info/not-zip-safe +0 -1
  122. sigal-2.3/tests/sample/pictures/dir1/test1/11.md +0 -4
  123. sigal-2.3/tests/sample/pictures/dir1/test2/index.md +0 -1
  124. sigal-2.3/tests/sample/pictures/video/example video.ogv +0 -0
  125. sigal-2.3/tests/test_gallery.py +0 -409
  126. sigal-2.3/tests/test_plugins.py +0 -49
  127. sigal-2.3/tests/test_settings.py +0 -54
  128. sigal-2.3/tests/test_utils.py +0 -92
  129. sigal-2.3/tests/test_zip.py +0 -63
  130. sigal-2.3/tox.ini +0 -45
  131. {sigal-2.3 → sigal-2.5}/.git-blame-ignore-revs +0 -0
  132. {sigal-2.3 → sigal-2.5}/CONTRIBUTING.rst +0 -0
  133. {sigal-2.3 → sigal-2.5}/docs/Makefile +0 -0
  134. {sigal-2.3 → sigal-2.5}/docs/contribute.rst +0 -0
  135. {sigal-2.3 → sigal-2.5}/docs/image_information.rst +0 -0
  136. {sigal-2.3 → sigal-2.5}/docs/index.rst +0 -0
  137. {sigal-2.3 → sigal-2.5}/docs/make.bat +0 -0
  138. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/__init__.py +0 -0
  139. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/__init__.py +0 -0
  140. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/static/decrypt.js +0 -0
  141. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/static/keycheck.txt +0 -0
  142. {sigal-2.3 → sigal-2.5/src}/sigal/plugins/encrypt/static/sw.js +0 -0
  143. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/css/colorbox.css +0 -0
  144. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/css/skeleton.css +0 -0
  145. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/css/style.css +0 -0
  146. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/images/controls.png +0 -0
  147. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/images/loading.gif +0 -0
  148. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/app-with-media-page.js +0 -0
  149. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/app.js +0 -0
  150. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery-2.2.1.js +0 -0
  151. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery-2.2.1.min.js +0 -0
  152. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery.colorbox-min.js +0 -0
  153. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery.colorbox.js +0 -0
  154. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery.touchSwipe.js +0 -0
  155. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/static/js/jquery.touchSwipe.min.js +0 -0
  156. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/templates/album.html +0 -0
  157. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/templates/album_list.html +0 -0
  158. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/templates/base.html +0 -0
  159. {sigal-2.3 → sigal-2.5/src}/sigal/themes/colorbox/templates/media.html +0 -0
  160. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/Control.FullScreen.css +0 -0
  161. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/Control.FullScreen.js +0 -0
  162. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/Leaflet.Photo.css +0 -0
  163. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/Leaflet.Photo.js +0 -0
  164. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/MarkerCluster.Default.css +0 -0
  165. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/MarkerCluster.css +0 -0
  166. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/README +0 -0
  167. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/icon-fullscreen-2x.png +0 -0
  168. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/icon-fullscreen.png +0 -0
  169. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/images/layers-2x.png +0 -0
  170. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/images/layers.png +0 -0
  171. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/images/marker-icon-2x.png +0 -0
  172. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/images/marker-icon.png +0 -0
  173. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/images/marker-shadow.png +0 -0
  174. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet-providers.js +0 -0
  175. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet-src.js +0 -0
  176. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet.css +0 -0
  177. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet.js +0 -0
  178. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet.markercluster-src.js +0 -0
  179. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/static/leaflet/leaflet.markercluster.js +0 -0
  180. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/analytics.html +0 -0
  181. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/breadcrumb.html +0 -0
  182. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/default_head.html +0 -0
  183. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/download_zip.html +0 -0
  184. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/gtm.html +0 -0
  185. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/links.html +0 -0
  186. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/map.html +0 -0
  187. {sigal-2.3 → sigal-2.5/src}/sigal/themes/default/templates/piwik.html +0 -0
  188. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/README +0 -0
  189. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/css/normalize.css +0 -0
  190. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/css/style.css +0 -0
  191. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/galleria.js +0 -0
  192. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/galleria.min.js +0 -0
  193. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/img/empty.png +0 -0
  194. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/img/fullscreen.png +0 -0
  195. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/jquery-3.3.1.js +0 -0
  196. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/jquery-3.3.1.min.js +0 -0
  197. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/plugins/history/galleria.history.js +0 -0
  198. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/plugins/history/galleria.history.min.js +0 -0
  199. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/azur/galleria.azur.css +0 -0
  200. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/azur/galleria.azur.js +0 -0
  201. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/azur/galleria.azur.min.css +0 -0
  202. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/azur/galleria.azur.min.js +0 -0
  203. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/classic/galleria.classic.css +0 -0
  204. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/classic/galleria.classic.js +0 -0
  205. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/classic/galleria.classic.min.css +0 -0
  206. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/classic/galleria.classic.min.js +0 -0
  207. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/folio/galleria.folio.css +0 -0
  208. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/folio/galleria.folio.js +0 -0
  209. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/folio/galleria.folio.min.css +0 -0
  210. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/folio/galleria.folio.min.js +0 -0
  211. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.css +0 -0
  212. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.js +0 -0
  213. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.min.css +0 -0
  214. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.min.js +0 -0
  215. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/fullscreen/index.html +0 -0
  216. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/miniml/galleria.miniml.css +0 -0
  217. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/miniml/galleria.miniml.js +0 -0
  218. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/miniml/galleria.miniml.min.css +0 -0
  219. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/miniml/galleria.miniml.min.js +0 -0
  220. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/twelve/galleria.twelve.css +0 -0
  221. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/twelve/galleria.twelve.js +0 -0
  222. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/twelve/galleria.twelve.min.css +0 -0
  223. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/static/themes/twelve/galleria.twelve.min.js +0 -0
  224. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/templates/album.html +0 -0
  225. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/templates/album_list.html +0 -0
  226. {sigal-2.3 → sigal-2.5/src}/sigal/themes/galleria/templates/base.html +0 -0
  227. {sigal-2.3 → sigal-2.5/src}/sigal/themes/photoswipe/templates/album_list.html +0 -0
  228. {sigal-2.3 → sigal-2.5/src}/sigal/themes/photoswipe/templates/base.html +0 -0
  229. {sigal-2.3 → sigal-2.5/src}/sigal.egg-info/dependency_links.txt +0 -0
  230. {sigal-2.3 → sigal-2.5/src}/sigal.egg-info/top_level.txt +0 -0
  231. /sigal-2.3/tests/__init__.py → /sigal-2.5/tests/sample/pictures/.venv/lib64/fake.png +0 -0
  232. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/accentu/303/251/11.jpg" +0 -0
  233. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/accentu/303/251/h/303/251lico/303/257de.jpg" +0 -0
  234. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/accentu/303/251/test?<special> chars#.jpg" +0 -0
  235. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/empty/fake.txt +0 -0
  236. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/index.md +0 -0
  237. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/11.jpg +0 -0
  238. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/CMB_Timeline300_no_WMAP.jpg +0 -0
  239. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/example.gif +0 -0
  240. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/flickr_jerquiaga_2394751088_cc-by-nc.jpg +0 -0
  241. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test1/flickr_jerquiaga_2394751088_cc-by-nc.md +0 -0
  242. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/21.tiff +0 -0
  243. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/22.jpg +0 -0
  244. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/22.md +0 -0
  245. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/CMB_Timeline300_no_WMAP.jpg +0 -0
  246. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test2/CMB_Timeline300_no_WMAP.md +0 -0
  247. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test3/3.jpg +0 -0
  248. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir1/test3/index.md +0 -0
  249. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/.nozip_gallery +0 -0
  250. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/Hubble Interacting Galaxy NGC 5257.jpg +0 -0
  251. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/Hubble ultra deep field.jpg +0 -0
  252. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/KeckObservatory20071020.jpg +0 -0
  253. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/index.md +0 -0
  254. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/dir2/m57_the_ring_nebula-587px.jpg +0 -0
  255. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/empty/fake.txt +0 -0
  256. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/encryptTest/21.jpg +0 -0
  257. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/encryptTest/22.jpg +0 -0
  258. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/exifTest/21.jpg +0 -0
  259. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/exifTest/22.jpg +0 -0
  260. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/exifTest/noexif.png +0 -0
  261. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/index.md +0 -0
  262. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/iptcTest/1.jpg +0 -0
  263. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/iptcTest/2.jpg +0 -0
  264. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/iptcTest/2.md +0 -0
  265. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/iptcTest/3.jpg +0 -0
  266. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/iptcTest/index.md +0 -0
  267. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/created/.nomedia +0 -0
  268. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/created/ignored/should_be_ignored2.jpg +0 -0
  269. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/created/should_be_created.jpg +0 -0
  270. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/created/should_be_ignored3.jpg +0 -0
  271. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/ignored/.nomedia +0 -0
  272. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/ignored/recursively_ignored/should_be_ignored.jpg +0 -0
  273. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nomedia/ignored/should_be_ignored_1.jpg +0 -0
  274. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/nonmedia_files/dummy.pdf +0 -0
  275. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/video/example video.md +0 -0
  276. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/webp/_MG_7805_lossy80.webp +0 -0
  277. {sigal-2.3 → sigal-2.5}/tests/sample/pictures/webp/_MG_7808_lossy80.webp +0 -0
  278. {sigal-2.3 → sigal-2.5}/tests/sample/watermark.png +0 -0
@@ -0,0 +1,15 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "github-actions" # See documentation for possible values
9
+ directory: ".github/workflows" # Location of package manifests
10
+ schedule:
11
+ interval: "monthly"
12
+ groups:
13
+ actions:
14
+ patterns:
15
+ - "*"
@@ -10,15 +10,18 @@ jobs:
10
10
  build-n-publish:
11
11
  name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
12
12
  runs-on: ubuntu-latest
13
+ environment: pypi
14
+ permissions:
15
+ id-token: write
13
16
  if: ((github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) || contains(github.event.pull_request.labels.*.name, 'Build wheels'))
14
17
 
15
18
  steps:
16
- - uses: actions/checkout@master
19
+ - uses: actions/checkout@v4
17
20
  with:
18
21
  fetch-depth: 0
19
- - uses: actions/setup-python@v2
22
+ - uses: actions/setup-python@v5
20
23
  with:
21
- python-version: 3.8
24
+ python-version: "3.13"
22
25
 
23
26
  - name: Install python-build and twine
24
27
  run: python -m pip install build twine
@@ -34,7 +37,4 @@ jobs:
34
37
 
35
38
  - name: Publish distribution 📦 to PyPI
36
39
  if: startsWith(github.ref, 'refs/tags')
37
- uses: pypa/gh-action-pypi-publish@master
38
- with:
39
- user: __token__
40
- password: ${{ secrets.pypi_password }}
40
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -16,14 +16,14 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  strategy:
18
18
  matrix:
19
- python-version: [3.8, 3.9, "3.10"]
19
+ python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
20
20
 
21
21
  steps:
22
- - uses: actions/checkout@v2
22
+ - uses: actions/checkout@v4
23
23
  with:
24
24
  fetch-depth: 0
25
25
  - name: Set up Python ${{ matrix.python-version }}
26
- uses: actions/setup-python@v2
26
+ uses: actions/setup-python@v5
27
27
  with:
28
28
  python-version: ${{ matrix.python-version }}
29
29
  - name: Install FFmpeg
@@ -34,10 +34,11 @@ jobs:
34
34
  - name: Install Tox
35
35
  run: python -m pip install tox tox-gh-actions coverage
36
36
  - name: Run Tox
37
- run: tox
37
+ run: tox run
38
38
  - name: Convert coverage
39
39
  run: python -m coverage xml
40
40
  - name: Upload coverage to Codecov
41
- uses: codecov/codecov-action@v2
41
+ uses: codecov/codecov-action@v5
42
42
  with:
43
43
  fail_ci_if_error: true
44
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -1,7 +1,7 @@
1
1
  *.egg-info
2
2
  *~
3
3
  *.pyc
4
- *_flymake
4
+ __pycache__/
5
5
  .coverage
6
6
  .DS_Store
7
7
  .eggs/
@@ -15,7 +15,7 @@ dist/
15
15
  docs/_build
16
16
  htmlcov/
17
17
  output/
18
- sigal/version.py
18
+ src/sigal/version.py
19
19
  tags
20
20
  venv
21
21
  ffmpeg2pass-0.log
@@ -0,0 +1,19 @@
1
+ repos:
2
+
3
+ - repo: https://github.com/pre-commit/pre-commit-hooks
4
+ rev: v5.0.0
5
+ hooks:
6
+ - id: check-added-large-files
7
+ - id: check-merge-conflict
8
+ - id: check-yaml
9
+ - id: end-of-file-fixer
10
+ exclude: ".*(galleria|photoswipe|jquery|leaflet).*$"
11
+ - id: trailing-whitespace
12
+ exclude: ".*(galleria|photoswipe|jquery|leaflet).*$"
13
+
14
+ - repo: https://github.com/astral-sh/ruff-pre-commit
15
+ rev: v0.9.7
16
+ hooks:
17
+ - id: ruff
18
+ args: [ --fix, --show-fixes, --exit-non-zero-on-fix ]
19
+ - id: ruff-format
@@ -0,0 +1,20 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.12"
7
+
8
+ sphinx:
9
+ configuration: docs/conf.py
10
+ fail_on_warning: true
11
+
12
+ python:
13
+ install:
14
+ - method: pip
15
+ path: .
16
+ extra_requirements:
17
+ - docs
18
+
19
+ # Don't build any extra formats
20
+ formats: []
@@ -5,16 +5,19 @@ alphabetical order):
5
5
  - Abdul Qabiz
6
6
  - Alexandre Chataignon (@xouillet)
7
7
  - Alexey Bazhin
8
+ - amesgen
8
9
  - Andreas Sieferlinger
9
10
  - Andriy Dzedolik (@IrvinDitz)
10
11
  - Antoine Beaupré
11
12
  - Antoine Pitrou
13
+ - @amesgen
12
14
  - Bowen Ding (@dbw9580)
13
15
  - Brent Bandelgar (@brentbb)
14
16
  - Cédric Bosdonnat
15
17
  - Christophe-Marie Duquesne
16
18
  - Craig Gallek
17
- - @datro
19
+ - datro
20
+ - David Runge
18
21
  - David Schultz
19
22
  - David Siroky
20
23
  - Edward Betts
@@ -25,6 +28,7 @@ alphabetical order):
25
28
  - @Glandos
26
29
  - Jamie Starke
27
30
  - @jdn06
31
+ - Jean Raby
28
32
  - Jeff Dairiki
29
33
  - Jonas Kaufmann
30
34
  - Jorge Gallegos
@@ -34,12 +38,16 @@ alphabetical order):
34
38
  - Keith Feldman
35
39
  - Keith Johnson
36
40
  - Kevin Murray
41
+ - ksfeldman
42
+ - Lixeiden
37
43
  - Lucas Cimon
38
44
  - Lukas Vacek
39
- - Luke Cyca (@lukecyca)
45
+ - Luke Cyca
46
+ - Markus Blöchl
40
47
  - Mate Lakat
41
48
  - Mathieu Leplatre (@leplatrem)
42
49
  - Matthias Vogelgesang
50
+ - max (maauer)
43
51
  - Miroslav Pavleski
44
52
  - Nicolas Arnaud-Cormos
45
53
  - Nikolai Prokoschenko
@@ -49,14 +57,17 @@ alphabetical order):
49
57
  - Renan Guilherme
50
58
  - Robert Schütz
51
59
  - Sébastien Maccagnoni-Munch
60
+ - Sean Grider (@kaibutsux)
52
61
  - Simon Conseil
53
62
  - Stefano Zacchiroli
54
63
  - @subwarpspeed
55
64
  - @t-animal
56
65
  - @thomasdn
57
66
  - Thomas Misilo
67
+ - Tilman Adler
58
68
  - Tim AtLee
59
69
  - Tim Davies
70
+ - @tired-engineer
60
71
  - Tobias Preuss
61
72
  - Toke Høiland-Jørgensen (@tohojo)
62
73
  - @trapperhoney
@@ -1,5 +1,5 @@
1
1
  The MIT License (MIT)
2
- Copyright (c) 2009-2022 - Simon Conseil
2
+ Copyright (c) 2009-2023 - Simon Conseil
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to
@@ -1,30 +1,43 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: sigal
3
- Version: 2.3
3
+ Version: 2.5
4
4
  Summary: Simple static gallery generator
5
- Home-page: https://github.com/saimn/sigal
6
- Author: Simon Conseil
7
- Author-email: contact@saimon.org
5
+ Author-email: Simon Conseil <contact@saimon.org>
8
6
  License: MIT License
7
+ Project-URL: repository, https://github.com/saimn/sigal
8
+ Project-URL: documentation, http://sigal.saimon.org/en/latest/
9
9
  Keywords: gallery,static,generator,image,video,galleria
10
- Platform: UNKNOWN
11
10
  Classifier: Development Status :: 5 - Production/Stable
12
11
  Classifier: Environment :: Console
13
12
  Classifier: License :: OSI Approved :: MIT License
14
13
  Classifier: Operating System :: OS Independent
15
14
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
- Classifier: Programming Language :: Python :: 3.9
18
- Classifier: Programming Language :: Python :: 3.10
19
15
  Classifier: Topic :: Internet :: WWW/HTTP
20
16
  Classifier: Topic :: Multimedia :: Graphics :: Viewers
21
17
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.8
18
+ Requires-Python: >=3.9
23
19
  Description-Content-Type: text/x-rst
20
+ License-File: LICENSE
21
+ Requires-Dist: blinker
22
+ Requires-Dist: click
23
+ Requires-Dist: Jinja2>=2.7
24
+ Requires-Dist: Markdown
25
+ Requires-Dist: Pillow>=8.0.0
26
+ Requires-Dist: pilkit
27
+ Requires-Dist: natsort
24
28
  Provides-Extra: all
29
+ Requires-Dist: brotli; extra == "all"
30
+ Requires-Dist: feedgenerator; extra == "all"
31
+ Requires-Dist: zopfli; extra == "all"
32
+ Requires-Dist: cryptography; extra == "all"
33
+ Requires-Dist: pillow-heif; extra == "all"
25
34
  Provides-Extra: tests
35
+ Requires-Dist: pytest; extra == "tests"
36
+ Requires-Dist: pytest-cov; extra == "tests"
26
37
  Provides-Extra: docs
27
- License-File: LICENSE
38
+ Requires-Dist: Sphinx>=4.1.0; extra == "docs"
39
+ Requires-Dist: furo; extra == "docs"
40
+ Requires-Dist: cryptography; extra == "docs"
28
41
 
29
42
  Sigal - Simple Static Gallery Generator
30
43
  =======================================
@@ -51,14 +64,14 @@ The idea behind Sigal is to ease the use of the javascript libraries like
51
64
  galleria_. These libraries do a great job to display the images, Sigal does
52
65
  what is missing: resize images, create thumbnails, generate HTML pages.
53
66
 
54
- Sigal is compatible with Python 3.5+.
67
+ Sigal requires Python 3.9+.
55
68
 
56
- Links :
69
+ Links
70
+ -----
57
71
 
58
72
  * Latest documentation on the website_
59
73
  * Source, issues and pull requests on GitHub_
60
74
  * Releases on PyPI_
61
- * ``#sigal`` on Freenode, or with the webchat_ interface.
62
75
 
63
76
  Themes & Demo
64
77
  -------------
@@ -73,13 +86,10 @@ Javascript libraries:
73
86
  .. _website: http://sigal.saimon.org/
74
87
  .. _GitHub: https://github.com/saimn/sigal/
75
88
  .. _PyPI: https://pypi.org/project/sigal/
76
- .. _galleria: http://galleria.io/
89
+ .. _galleria: https://github.com/GalleriaJS/galleria
77
90
  .. _colorbox: http://www.jacklmoore.com/colorbox
78
91
  .. _photoswipe: http://photoswipe.com
79
92
  .. _galleria demo: http://saimon.org/sigal-demo/galleria/
80
93
  .. _colorbox demo: http://saimon.org/sigal-demo/colorbox/
81
94
  .. _photoswipe demo: http://saimon.org/sigal-demo/photoswipe/
82
- .. _webchat: http://webchat.freenode.net/?channels=sigal
83
95
  .. _Jinja2: https://palletsprojects.com/p/jinja/
84
-
85
-
@@ -23,14 +23,14 @@ The idea behind Sigal is to ease the use of the javascript libraries like
23
23
  galleria_. These libraries do a great job to display the images, Sigal does
24
24
  what is missing: resize images, create thumbnails, generate HTML pages.
25
25
 
26
- Sigal is compatible with Python 3.5+.
26
+ Sigal requires Python 3.9+.
27
27
 
28
- Links :
28
+ Links
29
+ -----
29
30
 
30
31
  * Latest documentation on the website_
31
32
  * Source, issues and pull requests on GitHub_
32
33
  * Releases on PyPI_
33
- * ``#sigal`` on Freenode, or with the webchat_ interface.
34
34
 
35
35
  Themes & Demo
36
36
  -------------
@@ -45,11 +45,10 @@ Javascript libraries:
45
45
  .. _website: http://sigal.saimon.org/
46
46
  .. _GitHub: https://github.com/saimn/sigal/
47
47
  .. _PyPI: https://pypi.org/project/sigal/
48
- .. _galleria: http://galleria.io/
48
+ .. _galleria: https://github.com/GalleriaJS/galleria
49
49
  .. _colorbox: http://www.jacklmoore.com/colorbox
50
50
  .. _photoswipe: http://photoswipe.com
51
51
  .. _galleria demo: http://saimon.org/sigal-demo/galleria/
52
52
  .. _colorbox demo: http://saimon.org/sigal-demo/colorbox/
53
53
  .. _photoswipe demo: http://saimon.org/sigal-demo/photoswipe/
54
- .. _webchat: http://webchat.freenode.net/?channels=sigal
55
54
  .. _Jinja2: https://palletsprojects.com/p/jinja/
@@ -22,8 +22,8 @@ gallery:
22
22
  represent the gallery.
23
23
  - *Author*: the author of the gallery, if present it is used instead of the
24
24
  author setting.
25
- - *Sort*: the sort order for this album. If prefixed with a '-' it will be in
26
- reversed order.
25
+ - *Sort*: the sort order for the sub-albums of this album. If prefixed with
26
+ a '-' it will be in reversed order. Not supported to sort medias.
27
27
 
28
28
  Any additional meta-data is available in the templates. For instance::
29
29
 
@@ -52,15 +52,15 @@ A total of %d pull requests were merged for this release.
52
52
 
53
53
 
54
54
  def get_authors(revision_range):
55
- pat = '^.*\\t(.*)$'
56
- lst_release, cur_release = (r.strip() for r in revision_range.split('..'))
55
+ pat = "^.*\\t(.*)$"
56
+ lst_release, cur_release = (r.strip() for r in revision_range.split(".."))
57
57
 
58
58
  # authors, in current release and previous to current release.
59
- cur = set(re.findall(pat, this_repo.git.shortlog('-s', revision_range), re.M))
60
- pre = set(re.findall(pat, this_repo.git.shortlog('-s', lst_release), re.M))
59
+ cur = set(re.findall(pat, this_repo.git.shortlog("-s", revision_range), re.M))
60
+ pre = set(re.findall(pat, this_repo.git.shortlog("-s", lst_release), re.M))
61
61
 
62
62
  # Append '+' to new authors.
63
- authors = [s + ' +' for s in cur - pre] + [s for s in cur & pre]
63
+ authors = [s + " +" for s in cur - pre] + [s for s in cur & pre]
64
64
  authors.sort()
65
65
  return authors
66
66
 
@@ -69,7 +69,7 @@ def get_pull_requests(repo, revision_range):
69
69
  prnums = []
70
70
 
71
71
  # From regular merges
72
- merges = this_repo.git.log('--oneline', '--merges', revision_range)
72
+ merges = this_repo.git.log("--oneline", "--merges", revision_range)
73
73
  issues = re.findall("Merge pull request \\#(\\d*)", merges)
74
74
  prnums.extend(int(s) for s in issues)
75
75
 
@@ -79,9 +79,9 @@ def get_pull_requests(repo, revision_range):
79
79
 
80
80
  # From fast forward squash-merges
81
81
  commits = this_repo.git.log(
82
- '--oneline', '--no-merges', '--first-parent', revision_range
82
+ "--oneline", "--no-merges", "--first-parent", revision_range
83
83
  )
84
- issues = re.findall('^.*\\(\\#(\\d+)\\)$', commits, re.M)
84
+ issues = re.findall("^.*\\(\\#(\\d+)\\)$", commits, re.M)
85
85
  prnums.extend(int(s) for s in issues)
86
86
 
87
87
  # get PR data from github repo
@@ -91,10 +91,10 @@ def get_pull_requests(repo, revision_range):
91
91
 
92
92
 
93
93
  def main(token, revision_range):
94
- lst_release, cur_release = (r.strip() for r in revision_range.split('..'))
94
+ lst_release, cur_release = (r.strip() for r in revision_range.split(".."))
95
95
 
96
96
  github = Github(token)
97
- github_repo = github.get_repo('saimn/sigal')
97
+ github_repo = github.get_repo("saimn/sigal")
98
98
 
99
99
  # document authors
100
100
  authors = get_authors(revision_range)
@@ -105,7 +105,7 @@ def main(token, revision_range):
105
105
  print(author_msg % len(authors))
106
106
 
107
107
  for s in authors:
108
- print('* ' + s)
108
+ print("* " + s)
109
109
 
110
110
  # document pull requests
111
111
  pull_requests = get_pull_requests(github_repo, revision_range)
@@ -132,7 +132,7 @@ if __name__ == "__main__":
132
132
  from argparse import ArgumentParser
133
133
 
134
134
  parser = ArgumentParser(description="Generate author/pr lists for release")
135
- parser.add_argument('token', help='github access token')
136
- parser.add_argument('revision_range', help='<revision>..<revision>')
135
+ parser.add_argument("token", help="github access token")
136
+ parser.add_argument("revision_range", help="<revision>..<revision>")
137
137
  args = parser.parse_args()
138
138
  main(args.token, args.revision_range)
@@ -2,6 +2,53 @@
2
2
  Changelog
3
3
  ===========
4
4
 
5
+ Version 2.5
6
+ ~~~~~~~~~~~
7
+
8
+ Released on 2025-02-25.
9
+
10
+ Sigal now requires Python 3.9+.
11
+
12
+ - Remove s3 plugin since it relied on boto which is no longer maintained. Help
13
+ is welcome to update the plugin with the new boto3 library. [:issue:`513`]
14
+ - Cache input size to make updating faster [:issue:`506`].
15
+ - Allow sorting albums with negative numbers [:issue:`507`].
16
+ - Write the static files only once [:issue:`510`].
17
+ - Remove subdirectories for the ones skipped with ``ignore_dirs``
18
+ [:issue:`515`].
19
+ - New cli flag ``sigal serve --browser`` to open in default browser
20
+ [:issue:`516`].
21
+ - Add support for ``.heic`` files (requires the optional pillow-heif package)
22
+ [:issue:`519`].
23
+ - Add autoplay setting for galleria [:issue:`520`].
24
+ - Show HTML in media description (with galleria) [:issue:`521`].
25
+ - New ``display_timestamp`` setting to show the generation timestamp
26
+ [:issue:`524`].
27
+ - Update photoswipe to v5.4.4 [:issue:`528`].
28
+
29
+ Version 2.4
30
+ ~~~~~~~~~~~
31
+
32
+ Released on 2023-09-29.
33
+
34
+ Sigal now requires Pillow>=8.0.0
35
+
36
+ - Avoid IndexError with empty source dir [:issue:`498`].
37
+ - New cli option ``--force-album`` to reprocess only specific albums
38
+ [:issue:`491`].
39
+ - Added support for black detection in video thumbnail generation
40
+ [:issue:`485`].
41
+ - Don't show the galleria container if there are no medias [:issue:`484`].
42
+ - Force encrypt's password form to be on top [:issue:`483`].
43
+ - Add mkv to ``video_extensions`` [:issue:`481`].
44
+ - Make sure ``zip_gallery`` is set correctly [:issue:`477`].
45
+ - Updates for recent Pillow changes, requires Pillow>=8.0.0 [:issue:`479`].
46
+ - Make theme dir writable after copying to it [:issue:`471`].
47
+ - New plugin: Titleregexp - modify titles of albums with regular expressions
48
+ [:issue:`469`].
49
+ - List of sort-properties as fallback instead of zero-length string
50
+ [:issue:`468`].
51
+
5
52
  Version 2.3
6
53
  ~~~~~~~~~~~
7
54
 
sigal-2.5/docs/conf.py ADDED
@@ -0,0 +1,100 @@
1
+ import os
2
+
3
+ from sigal import __version__
4
+
5
+ # -- General configuration ----------------------------------------------------
6
+
7
+ # If your documentation needs a minimal Sphinx version, state it here.
8
+ # needs_sphinx = '1.0'
9
+
10
+ # Add any Sphinx extension module names here, as strings. They can be
11
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
12
+ extensions = ["sphinx.ext.autodoc", "sphinx.ext.extlinks"]
13
+
14
+ extlinks = {"issue": ("https://github.com/saimn/sigal/issues/%s", "#%s")}
15
+
16
+ # Add any paths that contain templates here, relative to this directory.
17
+ templates_path = ["_templates"]
18
+
19
+ # The suffix of source filenames.
20
+ source_suffix = ".rst"
21
+
22
+ # The encoding of source files.
23
+ # source_encoding = 'utf-8-sig'
24
+
25
+ # The master toctree document.
26
+ master_doc = "index"
27
+
28
+ # General information about the project.
29
+ project = "Sigal"
30
+ copyright = "2012-2023, Simon Conseil"
31
+
32
+ # The version info for the project you're documenting, acts as replacement for
33
+ # |version| and |release|, also used in various other places throughout the
34
+ # built documents.
35
+ release = __version__
36
+ version = __version__
37
+
38
+ # The language for content autogenerated by Sphinx. Refer to documentation
39
+ # for a list of supported languages.
40
+ # language = None
41
+
42
+ # There are two options for replacing |today|: either, you set today to some
43
+ # non-false value, then it is used:
44
+ # today = ''
45
+ # Else, today_fmt is used as the format for a strftime call.
46
+ # today_fmt = '%B %d, %Y'
47
+
48
+ # List of patterns, relative to source directory, that match files and
49
+ # directories to ignore when looking for source files.
50
+ exclude_patterns = ["_build"]
51
+
52
+ # If true, '()' will be appended to :func: etc. cross-reference text.
53
+ # add_function_parentheses = True
54
+
55
+ # If true, the current module name will be prepended to all description
56
+ # unit titles (such as .. function::).
57
+ # add_module_names = True
58
+
59
+ # If true, sectionauthor and moduleauthor directives will be shown in the
60
+ # output. They are ignored by default.
61
+ # show_authors = False
62
+
63
+ # The name of the Pygments (syntax highlighting) style to use.
64
+ pygments_style = "sphinx"
65
+ pygments_dark_style = "monokai"
66
+
67
+ # A list of ignored prefixes for module index sorting.
68
+ # modindex_common_prefix = []
69
+
70
+
71
+ # -- Options for HTML output --------------------------------------------------
72
+
73
+ # Define the canonical URL if you are using a custom domain on Read the Docs
74
+ html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "")
75
+
76
+ # Tell Jinja2 templates the build is running on Read the Docs
77
+ html_context = {"READTHEDOCS": os.environ.get("READTHEDOCS", "") == "True"}
78
+
79
+ html_theme = "furo"
80
+
81
+ html_theme_options = {
82
+ "source_repository": "https://github.com/saimn/sigal/",
83
+ "source_branch": "main",
84
+ "source_directory": "docs/",
85
+ "footer_icons": [
86
+ {
87
+ "name": "GitHub",
88
+ "url": "https://github.com/saimn/sigal",
89
+ "html": """
90
+ <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16">
91
+ <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path>
92
+ </svg>
93
+ """, # noqa: E501
94
+ "class": "",
95
+ },
96
+ ],
97
+ }
98
+
99
+ # Output file base name for HTML help builder.
100
+ htmlhelp_basename = "Sigaldoc"
@@ -8,5 +8,5 @@ explanations on the settings is available in ``sigal/templates/sigal.conf.py``
8
8
  and is shown below. This file is copied to the current directory with the
9
9
  ``sigal init`` commmand.
10
10
 
11
- .. literalinclude:: ../sigal/templates/sigal.conf.py
11
+ .. literalinclude:: ../src/sigal/templates/sigal.conf.py
12
12
  :language: python
@@ -2,8 +2,6 @@
2
2
  Frequently Asked Questions (FAQ)
3
3
  ==================================
4
4
 
5
- .. contents::
6
-
7
5
  How do I protect the gallery with a password?
8
6
  ---------------------------------------------
9
7
 
@@ -18,7 +18,7 @@ Build
18
18
  a sub-directory and run ``sigal build <your images directory>``.
19
19
 
20
20
  The next time you run ``sigal build``, only the new images will be processed.
21
- You can use the ``-f`` flag to force the reprocessing of all the images.
21
+ You can use the ``-f`` flag to force the reprocessing of all the images or the ``-a`` flag to force only the specified matching albums.
22
22
  Images (resp. videos) that are smaller than the size specified by the
23
23
  ``img_size`` (resp. ``video_size``) setting will not be resized.
24
24
 
@@ -39,7 +39,7 @@ Help on the ``sigal build`` command
39
39
 
40
40
  ::
41
41
 
42
- $ sigal build [-h] [-d] [-v] [-f] [-c CONFIG] [-t THEME] [-n NCPU]
42
+ $ sigal build [-h] [-d] [-v] [-f] [-a PATTERN] [-c CONFIG] [-t THEME] [-n NCPU]
43
43
  [source] [destination]
44
44
 
45
45
  Required arguments:
@@ -58,6 +58,20 @@ Optional arguments:
58
58
  ``-f, --force``
59
59
  Force the reprocessing of existing images and thumbnails
60
60
 
61
+ ``-a --force-album``
62
+ Force the reprocessing of existing images matching the given album wildcard pattern.
63
+ Patterns containing wildcards will be matched against the full album path, while patterns without wildcards will be match against the album name only:
64
+
65
+ ::
66
+
67
+ -a 'My Pictures/*Pics'
68
+ My Pictures/Old Pics => Force
69
+ My Pictures/New Pics => Force
70
+ My Pictures/Pictures => No Force
71
+ -a 'Landscapes'
72
+ My Pictures/Landscapes => Force
73
+ My Other Pictures/Landscapes => Force
74
+
61
75
  ``-v, --verbose``
62
76
  Show all messages
63
77
 
@@ -25,6 +25,7 @@ The mandatory dependencies are:
25
25
  - Blinker
26
26
  - Click
27
27
  - Jinja2
28
+ - natsort
28
29
  - Pilkit
29
30
  - Pillow
30
31
  - Python Markdown
@@ -33,8 +34,9 @@ There are also a number of optional dependencies for the :doc:`plugins`,
33
34
  installable with the ``[all]`` marker:
34
35
 
35
36
  - Brotli, zopfli (compress assets plugin)
36
- - Boto (upload to S3 plugin)
37
37
  - feedgenerator (feeds plugin)
38
+ - cryptography (encrypt plugin)
39
+ - pillow-heif (HEIF/HEIC support)
38
40
 
39
41
  Packages
40
42
  ~~~~~~~~
@@ -50,5 +50,8 @@ tests:
50
50
  ``should_be_ignored.jpg`` : from the apollo 7 mission, public domain:
51
51
  https://www.flickr.com/photos/projectapolloarchive/21756099278/in/album-72157657129869694/
52
52
  (https://github.com/saimn/sigal/pull/233#issuecomment-275430083)
53
- - ``example video.ogv`` : https://commons.wikimedia.org/wiki/File:I-15bis.ogv
54
- (GFDL)
53
+ - ``example video.ogv`` : https://commons.wikimedia.org/wiki/File:Examplevideo.ogv
54
+ (Public domain)
55
+ - ``outdoor.heic``: From @ususdei,
56
+ https://github.com/saimn/sigal/pull/519#issuecomment-2543310727
57
+ (Public domain)